PHP curl Post und Daten senden

lordfritte

Lieutenant
Registriert
Juli 2006
Beiträge
965
Hallo, ich habe ein kleines Problem mit php + curl. Ich möchte mit curl Daten per POST senden.

Ich habe 2. Scripts: dump.php
PHP:
<?php
echo "_GET: ";
var_dump($_GET);
echo "_POST: ";
var_dump($_POST);

send.php
PHP:
$data = array("name" => "Hagrid", "age" => "36");
$data_string = json_encode($data);

$ch = curl_init("http://192.168.178.6/dump.php?t=1");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data_string))
    );

$result = curl_exec($ch);
echo $result;

Die Ausgabe:
Code:
_GET: array(1) {
  ["t"]=>
  string(1) "1"
}
_POST: array(0) {
}

Wie sie sehen, sehen sie nix... Ich schaffen es nicht Daten per POST zu verschicken....
 
Ich mache das per CURLOPT_POST => 1 statt CURLOPT_CUSTOMREQUEST.

Wie sich das mit dem JSON ausgeht, kann ich nicht sagen, aber für gewöhnlich jage ich die CURLOPT_POSTFIELDS Arrays durch http_build_query().
 
Hallo,

die Daten werden mit deinem cURL-Script korrekt mit einem POST-Request gesendet.
Du kannst jedoch einen JSON-String, der via POST gesendet wird im empfangenden Script nicht mittelt var_dump($_POST); auslesen, da json-Daten nicht in das superglobale Array $_POST geschrieben werden. Du musst dafür den Input manuell parsen:

PHP:
echo print_r(json_decode(file_get_contents("php://input")), true);
 
Zurück
Oben