PDA

Просмотр полной версии : PHP - 400 Bad Request


Kreoda
27.12.2009, 02:05
<?php

function goto($url='', $post='', $ref='')
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,0);
curl_setopt($ch, CURLOPT_USERAGENT, 'Opera/9.25 (Windows NT 5.1; U; ru)');
curl_setopt($ch, CURLOPT_COOKIEJAR,"./cook.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE,"./cook.txt");

if (!empty($post)) {

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

}

else {

curl_setopt($ch, CURLOPT_POST, 0);

}

if (!empty($ref)) {

curl_setopt($ch, CURLOPT_REFERER, $ref);

}

$res = curl_exec($ch);
curl_close($ch);
return $res;

}

function get($url) {

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_COOKIEFILE,"./cook.txt");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_COOKIEJAR,"./cook.txt");
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,0);

$res = curl_exec($ch);

echo $res;

curl_close($ch);

}

// Авторизуемся

$res = goto("http://xhtml.wap.mail.ru/cgi-bin/auth","Login=Ваш_Логин&Domain=mail.ru&Password=Ваш_пароль&page=","http://xhtml.wap.mail.ru/cgi-bin/splash_mail");
preg_match("#Location: (.*)#",$res,$m);
$str = explode("://",$m[0]);

// Формируем ссылку на папку Входящие

$link_1 = "http://".$str[1];
$link_1 = str_replace("start?back=1","msglist?folder=0",$link_1);
get($link_1);



?>



Почему-то браузер 400 Bad Request,а ссылку-то ведь правильно сформировал.Следовательно, и запрос должен быть верный(запрос гет).В чём проблема ?

mr.The
27.12.2009, 03:03
Все велосипеды уже изобретены http://mrthe.name/2009/08/curl-i-php/

Попробуй без поста послать запрос, если идёт, то нужно "Login=Ваш_Логин&Domain=mail.ru&Password=Ваш_пароль&page=" обернуть в urlecode, ибо бывает такая трабла..

Это, если у тебя 400 на авторизации. Если посте, то у тебя что-то не то с парсингом ссылки(ну кроме того, что он у тебя криво реализован..)

Kreoda
27.12.2009, 03:56
С юрленкодом у меня вообще не работает - только без него...ппц.page можно вообще не пересылать.Попробуй перейти по получившейся ссылке из браузера - попадёшь в папку Входящие).Значит,всё работает.

P.S: я не постом отправляю запрос ,а гетом(там же гет используется).Ссылка-то рабочая так почему криво реализовано ?