411 length required. Помогите!

Тема в разделе "PHP", создана пользователем argh, 24 янв 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. argh

    argh Создатель

    Регистр.:
    18 мар 2008
    Сообщения:
    46
    Симпатии:
    0
    Пишу постер. Выдает ошибку 411 length required. Либо непрально формирую заголовок, либо непрально сессии курла одну за другой открываю. Помогите, а то башка едет уже.

    Сначала логинюсь.

    PHP:

    $url
    ="http://example11111.ru/post_entry.html"
    $ua 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Widows NT)';

    $ch=curl_init(); 



     
    curl_setopt($chCURLOPT_URL$url);    
     
    curl_setopt($chCURLOPT_HEADER1);  
     
    curl_setopt($chCURLOPT_USERAGENT$ua);
     
    curl_setopt($chCURLOPT_TIMEOUT10); 
     
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue); 

    $answer=curl_exec($ch); 
        echo 
    $answer;

    //Далее выводим ответ в браузер чтобы глянуть что там у нас пришло в заголовках. Там видим что в заголовке нам выдают кукисы PHPSESSID. Выдираем их и //сохраняем себе на память  :
    echo "<br>";
    echo 
    substr($answerstrpos($answer"tsid=")+532);

    $sess_cookie=substr($answerstrpos($answer"tsid=")+532);

    Потом формирую запрос на логин. В хедерах указываю только контент-ленгф, хотя пробовал указывать все, но от ошибки не избавился.

    PHP:
       $post "user=".$login."&passw=".$password."";

              
              
    curl_setopt($chCURLOPT_URL$url);
              
    curl_setopt($chCURLOPT_POSTtrue);
              
    curl_setopt$chCURLOPT_HTTPHEADER$headers );
              
    curl_setopt($chCURLOPT_COOKIE$sess_cookie); 
              
    curl_setopt ($chCURLOPT_USERAGENT$ua);
              
    curl_setopt($chCURLOPT_POSTFIELDS$post);
              
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
              
    curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
    Может надо закрывать и открывать curl или разные имена должны быть?
    Приведите плз пример правильной передачи хттп-хедера, если не можете сказать по этому примеру. Заранее спасибо!
     
  2. LinuxFan

    LinuxFan Создатель

    Регистр.:
    13 янв 2009
    Сообщения:
    11
    Симпатии:
    2
    >> В хедерах указываю только контент-ленгф
    А зачем вообще что-то указывать в хедерах? (в твоём случае).
    Если без указания хедера попробовать..?
     
  3. argh

    argh Создатель

    Регистр.:
    18 мар 2008
    Сообщения:
    46
    Симпатии:
    0
    Без указания хедера как раз и пишет 411 ошибку.
     
  4. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    Подожди, так у тебя и с указанием Content-Lenght и без него вылетает эта ошибка?
     
  5. argh

    argh Создатель

    Регистр.:
    18 мар 2008
    Сообщения:
    46
    Симпатии:
    0
    Да именно так. Странно конечно, но это наталкивает на мысль, что я неправильно передаю контент ленгф.
     
  6. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    Я с курлом не дружу... =/
    Попробуй второй запрос сокетами сделать:
    PHP:
    $host="example11111.ru";
    $refer="http://example11111.ru/post_entry.html";
    $zap="/post_entry.html";

    $query="user=".$login."&passw=".$password."";
    $post="POST $zap HTTP/1.1\r\n".
    "Host: $host\r\n".
    "Referer: $refer\r\n".
    "Cookie: $sess_cookie\r\n".
    "Accept-language: en\r\n".
    "Content-type: application/x-www-form-urlencoded\r\n".
    "User-Agent: Mozilla 4.0\r\n".
    "Content-length: ".strlen($query)."\r\n".
    "Connection: close\r\n\r\n$query";
    $fp=fsockopen($host,80);
    fwrite($fp,$post);
    while(
    $get=fread($fp,4096))
      echo 
    $get;
     
    argh нравится это.
  7. wal

    wal Постоялец

    Регистр.:
    24 мар 2008
    Сообщения:
    89
    Симпатии:
    30
    вот эта строка лишняя,

    ее нужно использовать в том случае, если вы самостоятельно генерите полностью весь HTTP заголовок для запроса...
     
    argh нравится это.
  8. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    350
    Ну незнаю каму как ват к примеру скриптец вернее клас для курлов.
    ИМХО лень учить используй класы ! :D

    http://www.rapidshare.ru/906126

    Вот качнеш там все и так понятно там и get и post описан.

    Если чего не понятно могу прям тут расписать че и как на примере авторизации к примеру на mail.ru

    Да к стати он автоматом узерагента отправляет + автоматом куки сохраняет и шлет + по локатионам ползает.

    Спасибо тыкать не забываем )) если помог конечно !? Ну это я так к слову.
     
    argh нравится это.
  9. argh

    argh Создатель

    Регистр.:
    18 мар 2008
    Сообщения:
    46
    Симпатии:
    0
    Убрал строку, все равно та же ошибка. Заголовки эти УГ :(

    Добавлено через 30 минут
    Сделал как ты. Опять та же ошибка.

    У меня возникает сомнение может логин проходит гладко а ошибка просто есть? Проверить я это не могу.

    Результат выполнения такой:


    Found
    The document has moved here.

    Additionally, a 302 Found error was encountered while trying to use an ErrorDocument to handle the request.

    411 Length Required
    nginx/0.7.19
     
  10. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    Это значит, что документ "переехал". В заголовках или данных на этой же странице должен выводиться адрес, куда переехала страница.

    возможно это ссылка под словом "here"
     
Статус темы:
Закрыта.