PDA

Просмотр полной версии : [PHP]301 redirect


Chaak
08.07.2008, 22:42
Задаю вопрос еще раз, так как на него не дождался ответа в вопросах, и врятли дождусь.
Столкнулся с проблемой:
Отправляю сокетом на скачку главной страницы яндекса, и мне выдает ответ что там стоит 301 редирект.

Вообщем как по нему перейти или избежать его вообще?

P.S заметил, если не отправлять Host:, то все работает(НО имхо это не выход).

Заранее спасибо

-=Static=-
08.07.2008, 23:14
кинь исходник того что и как ты туда отправляешь.

Chaak
08.07.2008, 23:27
$site = "http://yandex.ru/";

preg_match("/[.]{1}[a-zA-Z]{2,5}(\/[a-zA-Z0-9\-\_\.\,\:]+)/",$site,$path);
preg_match("/[:]{1}\/\/([a-zA-Z0-9\-\.]+)\//",$site,$host);
define("PATH",$path[1]);
define("HOST",$host[1]);


$fp = @fsockopen(HOST,80,$errno,$errstr,10) or exit();

$out = "GET /".PATH." HTTP/1.0\r\n";
$out .= "Host: ".HOST."\r\n";
$out .= "Referer: ".$site."\r\n";
$out .= "User-Agent: Opera/9.50 (Windows NT 6.0; U; ru)\r\n";
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
$out .= "Connection: close\r\n\r\n";

fwrite($fp,$out);
while(!feof($fp)){
$page .= fread($fp,512);
}
fclose($fp);

Вот кусочик^

-=Static=-
08.07.2008, 23:33
Вот все ОК:


<?
$site = "www.yandex.ru";

preg_match("/[.]{1}[a-zA-Z]{2,5}(\/[a-zA-Z0-9\-\_\.\,\:]+)/",$site,$path);
preg_match("/[:]{1}\/\/([a-zA-Z0-9\-\.]+)\//",$site,$host);
define("PATH","");
define("HOST",$site);


$fp = @fsockopen(HOST,80,$errno,$errstr,10) or exit();

$out = "GET /".PATH." HTTP/1.0\r\n";
$out .= "Host: ".HOST."\r\n";
$out .= "Referer: ".$site."\r\n";
$out .= "User-Agent: Opera/9.50 (Windows NT 6.0; U; ru)\r\n";
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
$out .= "Connection: close\r\n\r\n";

fwrite($fp,$out);
while(!feof($fp)){
$page .= fread($fp,512);
}

echo $page;
fclose($fp);
?>


Там редирект 500% стоит просто с yandex.ru на www.yandex.ru
чтоб все происходило на www.yandex.ru этож типа разные домены))