PHP - 400 Bad Request

Discussion in 'PHP' started by Kreoda, 27 Dec 2009.

  1. Kreoda

    Kreoda New Member

    Joined:
    9 Sep 2009
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    PHP:

    <?php 

    function goto($url=''$post=''$ref='')  
        {  
            
    $ch curl_init();    
            
    curl_setopt($chCURLOPT_URL$url);  
            
    curl_setopt($chCURLOPT_HEADER1);  
            
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);  
            
    curl_setopt($ch,CURLOPT_FOLLOWLOCATION,0); 
            
    curl_setopt($chCURLOPT_USERAGENT'Opera/9.25 (Windows NT 5.1; U; ru)');   
            
    curl_setopt($chCURLOPT_COOKIEJAR,"./cook.txt"); 
            
    curl_setopt($chCURLOPT_COOKIEFILE,"./cook.txt"); 

            if (!empty(
    $post)) { 

    curl_setopt($chCURLOPT_POST1); 
    curl_setopt($chCURLOPT_POSTFIELDS$post); 

    }  

    else { 

    curl_setopt($chCURLOPT_POST0); 

    }  
             
    if (!empty(
    $ref)) { 

    curl_setopt($chCURLOPT_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,а ссылку-то ведь правильно сформировал.Следовательно,и запрос должен быть верный(запрос гет).В чём проблема ?
     
  2. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    Все велосипеды уже изобретены http://mrthe.name/2009/08/curl-i-php/

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

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

    Kreoda New Member

    Joined:
    9 Sep 2009
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    С юрленкодом у меня вообще не работает - только без него...ппц.page можно вообще не пересылать.Попробуй перейти по получившейся ссылке из браузера - попадёшь в папку Входящие).Значит,всё работает.

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