Autor Zpráva
BuGeR
Profil
Zdravím.
Potřebuju aspoň naťuknout, a poptat se, jestli lze přes CURL vytvořit toto:
Lze nějak udělat to, že udělam dvojitý post požadavek? Potřebuju se přes CURL přihlásit POSTem na požadovanou URL, a po přihlášení potřebuju na stejné URL odeslat přes přihlášeného uživatele formulář.
Díky.
Davex
Profil
Dáš dva požadavky po sobě. Po přihlášení si zapamatuješ všechny cookies a pošleš je při druhém. Pokud je tedy přihlášení řešené přes session, což je skoro vždy.
BuGeR
Profil
Davex:
Díky. Zkusil jsem toto:
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/test.txt"); // Tady nastavím, kde se bude cookies ukládat
curl_setopt($ch, CURLOPT_URL,"http://localhost/test/login.php"); // adresa formuláře
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "user=Test&pw=123456789&login=1"); // Přihlásím se přes post

echo curl_exec ($ch); // Tohle funguje. Zobrazí se mi stránka, která by se zobrazila pro přihlášeného uživatele

curl_close ($ch);
unset($ch);

// Nový CURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/test.txt"); // Použiju cookie s předešlého požadavku
curl_setopt($ch, CURLOPT_URL,"http://localhost/test/login.php"); // Opět stejná adresa

echo curl_exec ($ch); // Tady tohle už ale vypíše jen opět zase přihlašovací formulář (takže se vlastně cookies nepoužije)
curl_close ($ch);

Mám asi zmatek s tím, jak funguje ukládaní COOKIES do souborů. Mám to dobře řešené nebo ne? Nikde totíž nemůžu najít ten soubor test.txt s daty cookies.
Díky.

EDIT: Problém vyřešen :-) Vytvořil jsem si soubor cookie.txt, do nastavil aby se to ukládalo do něj, a funguje to. Ale vždy je prázdny - to znamená, že jakmile CURL přestane pracovat s COOKIE tak ho automaticky vyprázdní?
Davex
Profil
BuGeR:
Ale vždy je prázdny - to znamená, že jakmile CURL přestane pracovat s COOKIE tak ho automaticky vyprázdní?
Já v něm uložené cokkies vidím. Nevytváří se datový soubor někde jinde?

Jelikož se volá externí knihovna, tak by se měla zadávat celá cesta k datovému souboru. Vyzkoušej to takhle:

curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . "/test.txt");
BuGeR
Profil
Davex:
Zkouším to i s funkci dirname(), ale ten textový soubor je pořád prázdný. Skript ale normalně funguje.
Neříkám, že je to nějaká chyba, spíš mě jen zajímá, proč tam ty data nezůstanou

EDIT: Problém opět vyřešen :-) zkusil jsem tam vložit absolutní adresu toho cookie souboru, a jede to. Děkuji moc za snahu :-)

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: