Wie kann ich einen Antrag stellen, sowohl mit GET und POST-Parameter in PHP mit cURL?
Andere Leute haben schon gefragt, wie dies aus perl, java, bash, etc. aber ich muss es in PHP, und ich sehe nicht, jede Frage schon gefragt, in Bezug auf (oder mit den Antworten) PHP.
Mein code:
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
Funktioniert das nicht. Die Ziel-Website hat print_r($_GET); print_r($_POST);
, wenn ich also untersuchen Sie die $result
ich sollte in der Lage sein zu sehen, die Felder, die gesendet werden. Doch die $_POST-array ist leer - ich sehe nur die get-Variablen. Wenn ich entfernen Sie die ?...
query-string aus der $url, dann das POST-array ist ordnungsgemäß gefüllt. Aber jetzt habe ich nicht die GET-params. Wie mache ich das?
Meinem konkreten Fall ist, muss ich senden zu viele Daten, um es zu passen in den query-string, aber ich kann nicht senden Sie es als BEITRAG, weil die Seite, die ich senden möchten, wählen Sie einen handler für die eingestellten Daten basieren auf einer Variablen in der GET-string. Ich kann es versuchen und haben sich geändert, aber im Idealfall würde ich mag in der Lage sein, zu senden der get-und post-Daten in der gleichen Abfrage.
Sie können nicht führen Sie eine POST und GET gleichzeitig, Sie können hinzufügen, einige querystring-Parameter zu Ihrer url, aber hinzufügen POST-vars, die Sie zu tun haben einen BEITRAG.
Ja, das ist ein sehr schönes basic-tutorial, aber es geht nicht auf meine Frage - wie kann ich senden Sie GET-und POST - gleichzeitig?
Sie kann es nicht, aber lassen Sie sich nicht von PHP ' s
$_GET
und $_POST
superglobals verwirren, Sie zu denken, dass ein query-string eine Besondere GET-Anforderung Ding.Sie sollten Lesen, auf, wie HTTP funktioniert, um wirklich verstehen zu können. Es gibt nur ein verb pro Anfrage. Als Quentin und Dan sagte, Sie kann Variablen in den query-string und verwenden immer noch das POST-verb.
InformationsquelleAutor Benubird | 2014-09-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
PHP selbst würde nicht entscheiden, zu ignorieren, die GET-Parameter, wenn ein POST erfolgt. Es werde Auffüllen, $_GET, unabhängig davon, welche Art von http-verb verwendet wurde, die Seite zu laden - wenn es-query-Parameter in der URL, werden Sie in $_GET.
Wenn Sie nicht immer $_POST und $_GET, dann etwas verursacht Umleitung oder sonst töten etwas. z.B. haben Sie überprüfen Sie
$_SERVER['REQUEST_METHOD']
zu sehen, wenn der code tatsächlich ausgeführt wird als POST? PHP wird nicht Auffüllen, $_POST, wenn ein Beitrag tatsächlich gar nicht durchgeführt. Möglicherweise haben Sie geschickt eine post auf dem server, aber das bedeutet nicht, dass Ihr code auch tatsächlich ausgeführt werden, unter einer POST-regime - z.B. mod_rewrite umleiten.Da haben Sie FOLLOW_REDIRECT eingeschaltet, du bist einfach DAVON ausgegangen, dass Sie eigentlich immer einen post, wenn der code ausgeführt wird.
Nein, es ist keine Besondere Einstellung. Dies ist, wie es funktioniert, und wenn es nicht für Sie arbeiten sollte, poste deinen aktuellen code. Nirgends in deinem code zeigst du deine URL. Es funktioniert definitiv, so muss Ihre URL falsch sein.
Dies ist meine url:
https://ec2-54-225-37-120.compute-1.amazonaws.com/wordpress/?wc-api=paddle_wc_payment_gateway
Versuchen Sie, die URL von der Kommandozeile aus mit
curl -I
oder ähnlich zu sehen-response-Header. Sie sind fast sicher immer umgeleitet.Nein. ein 30x redirect bitte auch die neue url als get. Es gibt 307, SOLLTE eine Weiterleitung als ein POSt, aber es ist nicht allgemein bekannt/unterstützt.
InformationsquelleAutor Marc B
ich weiß nicht, vielleicht haben Sie ja aber Ihre $url die gewünschte get-Parameter? Wie:
Dies beantwortet nicht die Frage.
Wie funktioniert es nicht?
da Benubird ist die übergabe von get-Variablen wie diese, aber sieht nur GET oder POST mit seiner aktuellen Skript. Lesen Sie die Frage.. Er stats, nimmt er die ? querystring, so dass ich davon ausgehen, dass er bereits get-Parameter übergibt, wie diese Antwort.
Ich habe gelesen, seine Frage, und nirgendwo scheint er anzuzeigen, dass er tatsächlich ist, dies zu tun. Wenn er es täte, würde es auch funktionieren. Es ist sehr einfach.
InformationsquelleAutor Santa's helper