Black Friday Black Friday
Black Friday výprodej! Až 80 % extra bodů zdarma! Více informací zde
Avatar
katrincsak
Člen
Avatar
katrincsak:26. ledna 12:26

Zdravím,

potřebuji poradit a nedaří se mi nikde najít odpověď :( .

Mám 2 php scripty a každý leží na jiné doméně.

Script A posílá požadavek za pomocí cURL metodou POST a potřebuji předat informace do Scriptu B. Netuším ale , jak ve scriptu B odchytím/zpracuji zaslané informace, které potřebuji dále zpracovat a následně informaci poslat zpět, což se mi již pak vrátí v curl_exec.

Potřebuji tedy poradit jak přečtu zaslaný POST ve scriptu B.

$ch = curl_init("http://cesta/example_usage.php");
                $data = array("jmeno" => "Katr", "age" => "27");
                $data_string = json_encode($data);

                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
                curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($ch, CURLOPT_HEADER, TRUE);
                curl_setopt($ch, CURLOPT_NOBODY, TRUE);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
                $head = curl_exec($ch);
                $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
                curl_close($ch);

Děkuji moc za poskytnuté rady.

 
Odpovědět 26. ledna 12:26
Avatar
Odpovídá na katrincsak
Uživatel sítě :26. ledna 14:21

Pokud komunikuješ se scriptem B metodou POST, tak v poli $_POST.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 26. ledna 14:21
Chybami se člověk učí, běžte se učit jinam!
Avatar
katrincsak
Člen
Avatar
Odpovídá na Uživatel sítě
katrincsak:26. ledna 16:30

To jsem očekával také, ale z nějakého důvodu se mi POST vracel prázdný. Vytvořil jsem si primitivní 2 scripty a již mi to šlo, zřejmě jedno z nastavení "setopt" má negativní vliv na výsledek, nebo problémem byly i jiné faktory, které jsem na konec vyřešil. (IPN a PayPal).

Tohle mi již fungovalo v pořádku a $_POST ve scriptu B se podařilo vypsat, standardním způsobem.

$_POST['jmeno'] = "Mirek";
$_POST['prijmeni'] = "Kat....";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://URL/curl.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$head = curl_exec($ch);
curl_close($ch);

var_dump($head);

Vzhledem k tomu, že tvé tvrzení je určitě správné, tak pro ostatní ho potvrdím "Akceptováním".

Děkuji.

Editováno 26. ledna 16:31
 
Nahoru Odpovědět 26. ledna 16:30
Avatar
Odpovídá na katrincsak
Uživatel sítě :26. ledna 16:40

Nejsem si na 100% jistý, ale nemůže to souviset s tím, že máš hodnoty v json?

Zkus pouze to pole odeslat:

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
Nahoru Odpovědět 26. ledna 16:40
Chybami se člověk učí, běžte se učit jinam!
Avatar
katrincsak
Člen
Avatar
Odpovídá na Uživatel sítě
katrincsak:26. ledna 17:15

Je to dost možné, problém také vznikal na skryté chybě u volaného scriptu, který se choval jinak při volání cURL. Zároveň i když IPN od PayPal je instantní, tak ne vždy to chodí hned, ale i s hodinovým zpožděním. Je tedy možné, že když jsem zrovna vkládal čistě POST a na druhé straně vypisoval POST, tak chyba byla na konec úplně jinde, následně jsem zkoušel předávání v json, nebo jiném řetězci/formátu a tak jsem se dostal do slepé uličky. Již mi 50% komunikace funguje, ale teď už aspoň vím, co je z toho správně a jak dosáhnout správného výsledku.

Takže dneska fakt zábava, ale aspoň se šťastným koncem :D

 
Nahoru Odpovědět  +1 26. ledna 17:15
Avatar
Šimon Rataj
Člen
Avatar
Šimon Rataj:2. března 15:55

Místo json_encode zkus použít http_build_query.

 
Nahoru Odpovědět 2. března 15:55
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.