Benjamin
Guest
fsockopen() + cookie
Вот переделал функцию для запрашивания документов:
А вот функция для выдирания куки:
Но когда запрашиваю документ учитывая полученные куки, то в результате мне приходит ответ: HTTP/1.1 302 Moved Temporarily. И в заголовке приходит Location: .... пересылка на стрницу авторизации. Которую я прошел ранее передав параметры и получил взамен куки.
В чем проблема?
Вот переделал функцию для запрашивания документов:
PHP:
function fsock( $url, $data = "", $method = "get", $cookies = "") {
$arr = parse_url($url);
$nn = "\r\n";
$host = $arr["host"];
$ref = $arr["scheme"]."//$host";
$path = $arr["path"];
$request = strtoupper($method)." $path HTTP/1.0".$nn.
"Referer: $ref".$nn.
( $cookies ? "Cookie: ".$cookies.$nn : "").
#"Connection: Keep-Alive".$nn.
"Content-Type: application/x-www-form-urlencoded".$nn.
"Content-Length: ".strlen($data).$nn.
"Host: $host".$nn.
"Accept: */*".$nn.
"Accept-Encoding: gzip, deflate".$nn.
"User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)".$nn."".$nn.
$data;
//echo nl2br($request);
$fp = fsockopen( $host, 80, &$errno, &$errstr, 30);
if(!$fp) { print "$errstr ($errno)<br>\n"; exit; }
fputs( $fp, $request);
while( !feof($fp) ){
@$reply .= fgets( $fp );
}
fclose($fp);
return $reply;
}
PHP:
function get_cookie( $header ) {
$cookie = "";
$arr = split( "\r\n", $header);
$j = count($arr);
for( $i=0; $i < ($j-1); $i++) {
if( ereg("^Set-Cookie:",$arr[$i]) ) {
list($cv) = split( ";", $arr[$i]);
list($trash, $cv) = split( ":", $cv);
list($cname, $cv) = split( "=", $cv, 2);
$cookie .= "$cname=".urlencode($cv)."; ";
}
}
return $cookie;
}
В чем проблема?