|
|
|
|
|
для: Patriot22
(22.11.2009 в 22:14)
| | Во-первых,
<?php
$data = 'login=' . urlencode($login) . '&pass=' . urlencode($password);
?>
|
Во-вторых, достань все cookie
<?php
if( preg_match_all('#^Set-Cookie:\\s*([^=]+)=([^;\\s]+)#m', $headers, $matches) )
{
$cookie_header = 'Cookie: ';
for($i = 0; $i < count($matches[0]); $i++)
$cookie_header .= ($i ? '; ' : '') . $matches[1][$i] . '=' . $matches[2][$i];
$out .= $cookie_header . "\r\n";
}
|
[поправлено модератором]
[затем подправлено Fractured#] | |
|
|
|
|
|
|
| я передаю серверу логин и пароль, пишет что авторизован, всё норм. получаю куки, которые он устанавливаю. и потом хочу открыть страницу которая доступна только для авторизованных, но меня выбрасывает на авторизацию. ща покажу код, всё поймёте
<?php
// разные кон данные
$host = 'anyhost.ru';
$path = '/auth.php';
$login = 'login';
$password = 'pass';
$data = '&login=' . $login . '&pass=' . $password;
$useragent = 'Nokia';
// авторизация
$fp = fsockopen($host, 80, $errno, $errstr, 10);
$error = 0;
if(!$fp) die('error');
$out = "POST " . $path . " HTTP/1.1\r\n";
$out .= "Host: " . $host . "\r\n";
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$out .= "Content-Length: " . strlen($data) . "\r\n";
$out .= "User-agent: " . $useragent . "\r\n";
$out .= "Accept: */*\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite ( $fp, $out . $data );
$headers='';
while ( $str = trim ( fgets ( $fp, 4096 ) ) )
$headers .= $str . "\n";
$body = '';
while ( !feof ( $fp ) )
$body .= fgets ( $fp, 4096 );
print $body; // выводит что авторизация успешна
// получаем куки
preg_match ( "|session=([0-9A-z]+)|", $headers, $out );
$session = $out[1];
// пробуем открыть страницу только для авторизованных
$fp = fsockopen($host, 80, $errno, $errstr, 10);
$path = '/page.php';
$out = "GET " . $path . " HTTP/1.1\r\n";
$out .= "Host: " . $host . "\r\n";
$out.= "Cookie: session=" . $session . "\r\n";
$out .= "User-agent: " . $useragent . "\r\n";
$out .= "Accept: */*\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite ( $fp, $out );
$headers='';
while ( $str = trim ( fgets ( $fp, 4096 ) ) )
$headers .= $str . "\n";
$body = '';
while ( !feof ( $fp ) )
$body .= fgets ( $fp, 4096 );
print $body; // пишет не авторизованы
?>
|
| |
|
|
|
|