Insert résultat Programmatically formulaire en ligne
Question
J'utilise 6 avec le drupal module installé formulaire en ligne.
Je dois être en mesure de distance POST, des résultats PHP à un formulaire en ligne. Pseudocode:
<?php
//File: remote_script_not_hosted_on_the_same_server_as_drupal.php
$results = array(
'name' => 'testname',
'age' => '6',
);
$node = 5;
$url_to_drupal = 'http://remote_server.com/drupal-6.2';
insert_into_webform($results, $node, $url_to_drupal);
Bien sûr, cet exemple est pas parfait, mais vous (je l'espère) voyez l'idée.
Comment feriez-vous faire?
J'ai ouvert une question sur la file d'attente drupal: http://drupal.org/node/1082016
Je suis préoccupé par ces deux champs invalidantes ma soumission à distance:
------WebKitFormBoundaryKIiNRZCPZIFlYWKc
Content-Disposition: form-data; name="form_build_id"
form-58f36748bfffd6752f204eadf1ba87c9
------WebKitFormBoundaryKIiNRZCPZIFlYWKc
Content-Disposition: form-data; name="form_token"
e4becb726ea858b6914980b9142b7f30
La solution
Je n'ai pas essayé, mais le chapitre 19 de Pro Drupal Développement (je la 2ème édition) fait référence à l'utilisation xml-rpc pour le faire. Il utilise la xmlrpc.php page qui fait partie de la norme d'installation pour faire son travail.
Autres conseils
Avez-vous essayé d'utiliser PHP pour envoyer manuellement les données POST? Voici un extrait de http://www.webmasterworld.com/php/3164561.htm
$server= 'www.someserver.com';
$url = '/path/to/webform/posturl';
$content = 'name1=value1&name2=value2';
$content_length = strlen($content);
$headers= "POST $url HTTP/1.0\r\nContent-type: text/html\r\nHost: $server\r\nContent-length: $content_length\r\n\r\n";
$fp = fsockopen($server, $port, $errno, $errstr);
if (!$fp) {
return false;
}
fputs($fp, $headers);
fputs($fp, $content);
$ret = "";
while (!feof($fp)) {
$ret .= fgets($fp, 1024);
}
fclose($fp);
print $ret;
Bien sûr, cela échouerait si vous utilisez une forme quelconque de captcha sur la forme, et aussi ne pas actuellement si vous devez être authentifié pour poster un Reponse