Frage

Wie kann ich eine Post-Anforderung zu einer anderen PHP-Seite in einem PHP-Skript? Ich habe einen Front-End-Computer als HTML-Seite Server, aber wenn der Benutzer auf eine Schaltfläche klickt, mag ich einen Back-End-Server die Verarbeitung zu tun und dann die Informationen zurück an den Front-End-Server den Benutzer zeigen schicken. Ich sagte, dass ich eine PHP-Seite auf dem Back-End-Computer haben kann, und es wird die Informationen zurück an das vordere Ende senden. Also noch einmal, wie kann ich tun, um eine POST-Anfrage an einem anderen PHP-Seite, von einer PHP-Seite?

War es hilfreich?

Lösung

Möglicherweise ist der einfachste Weg, um PHP führt eine POST-Anforderung zu machen, ist cURL , entweder als Erweiterung oder Beschuss einfach an einem anderen Prozess aus. Hier ist ein Beitrag Beispiel:

// where are we posting to?
$url = 'http://foo.com/script.php';

// what post fields?
$fields = array(
   'field1' => $field1,
   'field2' => $field2,
);

// build the urlencoded data
$postvars = http_build_query($fields);

// open connection
$ch = curl_init();

// set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars);

// execute post
$result = curl_exec($ch);

// close connection
curl_close($ch);

Überprüfen Sie auch Zend_Http Satz von Klassen im Zend Framework, die ein ziemlich fähig HTTP-Client direkt in PHP geschrieben (keine Erweiterungen erforderlich).

2014 EDIT - na ja, es ist schon eine Weile her, seit ich das geschrieben hätte. Heutzutage ist es lohnt Guzzle was wiederum kann mit oder ohne curl Erweiterung arbeiten.

Andere Tipps

Angenommen, Ihre PHP installieren Sie die CURL-Erweiterung hat, ist es wahrscheinlich der einfachste Weg (und vollständigste, wenn Sie möchten).

Beispiel Snippet:

//set POST variables
$url = 'http://domain.com/get-post.php';
$fields = array(
                      'lname'=>urlencode($last_name),
                      'fname'=>urlencode($first_name),
                      'email'=>urlencode($email)
               );

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

Credits gehen an http://php.dzone.com . Vergessen Sie auch nicht die entsprechende Seite (n) besuchen das PHP Manual

Für PHP-Verarbeitung, schauen Sie in cURL . Es ermöglicht Ihnen, Seiten auf dem Rücken Ende aufrufen und Abrufen von Daten von ihm. Grundsätzlich würden Sie so etwas tun:

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_URL,$fetch_url);
curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt ($ch,CURLOPT_USERAGENT, $user_agent;
curl_setopt ($ch,CURLOPT_CONNECTTIMEOUT,60);
$response = curl_exec ( $ch );
curl_close($ch);

Sie können auch schauen in die PHP HTTP Erweiterung .

  1. Wie der Rest der Nutzer sagt, dass es am einfachsten ist, dies zu tun mit kräuseln.

  2. Wenn curl nicht verfügbar ist für Sie dann vielleicht http://netevil.org/blog/2006/ November / http-post-from-php-ohne-curl

  3. Wenn das nicht möglich ist, dass Sie Steckdosen schreiben könnte sich http://petewarden.typepad.com/searchbrowser/ 2008/06 / how-to-post-an.html

Für die cURL verwenden, beachten Sie, dass CURLOPT_POST Option als Booleschen Wert genommen wird, so gibt es eigentlich keine Notwendigkeit, es auf die Anzahl der Felder setzen Sie eine Mitteilung verfassen.
Einstellen CURLOPT_POST auf TRUE (dh eine ganze Zahl außer Null) wird nur cURL sagt die Daten als application / x-www-form-urlencoded zu codieren, obwohl ich diese Wette nicht unbedingt erforderlich ist, wenn Sie eine urlencoded Zeichenfolge als CURLOPT_POSTFIELDS vorbei, da cURL sollte durch die Art des Wertes (string vs Array) der Codierung bereits sagen, welche diese letztere Option auf.

Beachten Sie auch, dass, seit PHP 5, können Sie die http_build_query Funktion verwenden können, um PHP urlencode die Felder Array für Sie, wie folgt aus:

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));

Die Lösung ist in target = "_ blank" wie folgt aus:

http: zu. com / Website-Design-Forum / multiple-form-submit-Aktionen-t25024.html

bearbeiten Form wie folgt aus:

<form method="post" action="../booking/step1.php" onsubmit="doubleSubmit(this)">

Und dieses Skript verwenden:

    <script type="text/javascript">
<!--
function doubleSubmit(f)
{
  // submit to action in form
  f.submit();
  // set second action and submit
  f.target="_blank";
  f.action="../booking/vytvor.php";
  f.submit();
  return false;
}
//-->
</script>

Obwohl es nicht ideal, wenn die cURL-Option es nicht tun, für Sie, wird versuchen, mit shell_exec ();

ROTATION Methode ist sehr beliebt, so ja, es ist gut, es zu benutzen. Sie könnten auch diese Codes mit einigen zusätzlichen Kommentaren erklären, weil sie den Anfang verstehen konnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top