Autor Zpráva
ybznek
Profil
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
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
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
a kdybych ty cookies chtěl poslat přes hlavičku, tak v jakém "formátu"?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0