Ali mi lahko kdo pokaže, kako narediti php curl s HTTP POST?
Želim poslati naslednje podatke:
username=user1, password=passuser1, gender=1
Na www.domain.com
Pričakujem, da bo curl vrnil odgovor, kot je result=OK
. Ali obstajajo kakšni primeri?
<?php
//
// A very simple PHP example that sends a HTTP POST to a remote site
//
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.example.com/tester.phtml");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"postvar1=value1&postvar2=value2&postvar3=value3");
// In real life you should use something like:
// curl_setopt($ch, CURLOPT_POSTFIELDS,
// http_build_query(array('postvar1' => 'value1')));
// Receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close ($ch);
// Further processing ...
if ($server_output == "OK") { ... } else { ... }
?>
Če obrazec uporablja preusmeritve, preverjanje pristnosti, piškotke, protokol SSL (https) ali kar koli drugega kot popolnoma odprto skripto, ki pričakuje spremenljivke POST, boste zelo hitro začeli škripati z zobmi. Oglejte si program Snoopy, ki počne točno to, kar ste si zamislili, hkrati pa odpravlja potrebo po vzpostavitvi številnih režijskih elementov.
Preprostejši odgovor, če posredujete informacije lastnemu spletnemu mestu, je uporaba spremenljivke SESSION. Stran php začnite z:
session_start();
Če na neki točki obstajajo informacije, ki jih želite ustvariti v PHP in posredovati naslednji strani v seji, jih namesto spremenljivke POST pripišite spremenljivki SESSION. Primer:
$_SESSION['message']='www.'.$_GET['school'].'.edu was not found. Please try again.'
Nato se na naslednji strani preprosto sklicujete na to spremenljivko SESSION. OPOMBA: po uporabi jo obvezno uničite, da se po uporabi ne ohrani:
if (isset($_SESSION['message'])) {echo $_SESSION['message']; unset($_SESSION['message']);}