Autor | Zpráva | ||
---|---|---|---|
artie Profil * |
#1 · Zasláno: 3. 12. 2012, 23:34:03
Ahoj,
už se několik dní snažím naprogramovat přihlášení na jeden web. $postdata = http_build_query( array( 'login' => 'LOGIN', 'password' => 'HESLO', ) ); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded', 'content' => $postdata ) ); $context = stream_context_create($opts); $fp = fopen("http://xxxxxx.cz/login.php", "r", false, $context); $meta = stream_get_meta_data($fp); fclose($fp); To mi funguje, k přihlášení dojde. Nyní bych ale potřeboval přenášet informaci o přihlášení do dalších stránek, které chci načítat a kde je nutné být přihlášen. Umím získat PHPSESSID z příchozích hlaviček: $PHPSESSID = substr(trim(str_replace('Set-Cookie: PHPSESSID=','',$meta['wrapper_data'][16])),0,26); ale když jej předám jako Cookie v novém požadavku (contextu), tak přihlášený nejsem. Ví někdo, jak by se to mělo nejlépe provést? Děkuji moc za jakoukoli radu |
||
juriad Profil |
#2 · Zasláno: 4. 12. 2012, 00:10:07
Z jakého důvodu používáš právě fopen, když existuje spolehlivé a jednoduché řešení v podobě knihovny cURL?
cURL už s cookies pracovat umí, viz například Dvojitý CURL Je zajímavé, že tu nejdůležitější část kódu sem nedáš: jak vytváříš druhý request, který obsahuje cookie... tam bude chyba |
||
artie Profil * |
#3 · Zasláno: 4. 12. 2012, 00:27:19
Druhá část kódu je zde:
Chybu nevylučuji. $opts = array('http' => array( 'header' => 'Cookie: PHPSESSID='.$PHPSESSID.';', ) ); $context = stream_context_create($opts); $result = file_get_contents('http://xxxxxx.cz/stanka.php, false, $context); Mělo by být jedno, jak volání stránky provedu curl, fopen, file_get_contents. Práce s stream_context_create mi přijde nejpohodlnější. |
||
Alphard Profil |
#4 · Zasláno: 4. 12. 2012, 00:51:00
|
||
artie Profil * |
#5 · Zasláno: 4. 12. 2012, 00:56:51
ano, i bez středníku v kombinaci s různým odřádkováním, nic bohužel nezabralo.
Ještě koukám, že tam mám překlep (chyběla uvozovka, ale to jen zde): file_get_contents('http://xxxxxx.cz/stanka.php', false, $context); Zkusím to přes curl. |
||
Tori Profil |
K tomuto:
$PHPSESSID = substr(trim(str_replace('Set-Cookie: PHPSESSID=','',$meta['wrapper_data'][16])),0,26); 2) dá se spoléhat na to, že v rámci jedné (sub)domény bude hlavička Set-Cookie vždy pod stejným klíčem? (to není rada, spíš mě to samotnou zajímá)
|
||
Časová prodleva: 13 let
|
0