Autor | Zpráva | ||
---|---|---|---|
ybznek Profil |
#1 · Zasláno: 27. 4. 2008, 19:05:34
Ahoj. Chtěl bych udělat v PHP jednu věc. Chtěl bych se přihlásit ke svému účtu na "nějakém" webu a poté si stahovat data z přihlášeného účtu.
Mělo by to vypadat asi takhle: mám fci: function httpSocketConnection($host, $method, $path, $data) { $method = strtoupper($method); if ($method == "GET") { $path.= '?'.$data; } $filePointer = fsockopen($host, 80, $errorNumber, $errorString); if (!$filePointer) { logEvent('debug', 'Failed opening http socket connection: '.$errorString.' ('.$errorNumber.')<br/>\n'); return false; } $requestHeader = $method." ".$path." HTTP/1.1\r\n"; $requestHeader.= "Host: ".$host."\r\n"; $requestHeader.= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n"; $requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n"; if ($method == "POST") { $requestHeader.= "Content-Length: ".strlen($data)."\r\n"; } $requestHeader.= "Connection: close\r\n\r\n"; if ($method == "POST") { $requestHeader.= $data; } fwrite($filePointer, $requestHeader); $responseHeader = ''; $responseContent = ''; do { $responseHeader.= fread($filePointer, 1); } while (!preg_match('/\\r\\n\\r\\n$/', $responseHeader)); if (!strstr($responseHeader, "Transfer-Encoding: chunked")) { while (!feof($filePointer)) { $responseContent.= fgets($filePointer, 128); } } else { while ($chunk_length = hexdec(fgets($filePointer))) { $responseContentChunk = ''; logEventToTextFile('debug', $chunk_length); $read_length = 0; while ($read_length < $chunk_length) { $responseContentChunk .= fread($filePointer, $chunk_length - $read_length); $read_length = strlen($responseContentChunk); } $responseContent.= $responseContentChunk; fgets($filePointer); } } logEventToTextFile('debug', $responseContent); return chop($responseContent); } pomocí této funkce odešlu přihlašovací údaje na stránku (třeba) login.php poté si stáhnu data ze stránky stats.php Problém je v tom, že předchozí přihlášení nezůstalo. Jak mám tedy se k účtu dostat? Prostě se chci přihlásit a poté stáhnout data. |
||
srigi Profil |
#2 · Zasláno: 27. 4. 2008, 21:12:50 · Upravil/a: srigi
Pravedpodobne nehandlujes COOKIEs, cez ktore sa prevaze transportuje PHPSESSID konstanta. Pozri si pomocou webdevelopera vo FF, ze kazdy portal s prihlasovanim, ti takuto cookie posiela. Riesenie je, ze PHPSESSID budes transportovat v URL.
|
||
nightfish Profil |
#3 · Zasláno: 27. 4. 2008, 21:16:30
a pokud to bude zakázané, tak doporučuji použít curl
v tom se dá stejná věc napsat omnoho kratší a cookies to umí ukládat a posílat také |
||
ybznek Profil |
#4 · Zasláno: 27. 4. 2008, 21:21:08
a kdybych ty cookies chtěl poslat přes hlavičku, tak v jakém "formátu"?
|
||
Časová prodleva: 16 let
|
0