Programmatisch ein Webform -Ergebnis einfügen
Frage
Ich verwende Drupal 6 mit dem Webform -Modul installiert.
Ich muss in der Lage sein, von PHP -Ergebnissen bis hin zu einer Webform aus der Ferne zu veröffentlichen. 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);
Natürlich ist dieses Beispiel nicht perfekt, aber Sie (hoffentlich) haben die Idee.
Wie würdest du das machen?
Ich habe ein Problem in der Drupal -Warteschlange eröffnet: http://drupal.org/node/1082016
Ich bin besorgt über diese beiden Felder, die meine Fernbedienung ungültig machen:
------WebKitFormBoundaryKIiNRZCPZIFlYWKc
Content-Disposition: form-data; name="form_build_id"
form-58f36748bfffd6752f204eadf1ba87c9
------WebKitFormBoundaryKIiNRZCPZIFlYWKc
Content-Disposition: form-data; name="form_token"
e4becb726ea858b6914980b9142b7f30
Lösung
Ich habe es nicht versucht, aber Kapitel 19 von Pro Drupal -Entwicklung (Ich habe die 2. Ausgabe) bezieht sich auf die Verwendung XML-RPC um dies zu tun. Es verwendet die Seite xmlrpc.php, die Teil der Standardinstallation ist, um seine Arbeit zu erledigen.
Andere Tipps
Haben Sie versucht, PHP zu verwenden, um die Postdaten manuell zu senden? Hier ist ein Ausschnitt von 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;
Natürlich würde dies fehlschlagen, wenn Sie eine Form von Captcha im Formular verwenden, und wird derzeit auch fehlschlagen, wenn Sie authentifiziert werden müssen, um eine Antwort zu veröffentlichen