Как создать POST зарос на PHP ?

Discussion in 'PHP' started by Aligator, 25 Aug 2010.

  1. Aligator

    Aligator Elder - Старейшина

    Joined:
    24 Nov 2006
    Messages:
    138
    Likes Received:
    15
    Reputations:
    0
    Доброго времени суток уважаемые форумчани!
    Как мне отправить пост запрос типа:

    Code:
    POST /xx/www/into HTTP/1.1
    Host: xxx.ru
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5
    Referer: http://xxx.ru/pet/xx/?fdas=1
    Content-Length: 46
    Origin: http://xxx.ru
    X-Requested-With: XMLHttpRequest
    Content-Type: application/x-www-form-urlencoded
    Accept: application/json, text/javascript, */*
    Accept-Encoding: gzip,deflate,sdch
    Cookie: source=234; __utmz=21.22.3.4.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); uid=143123; hw=ksdfsdf@masas; uea=5; __utma=1234.45656.34535.1745.128745.1; __utmc=1155; __utmb=1125.2.1.145
    Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
    Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3
    
    ajax=true&piz=123123&json=true
    через php или html ?

    т.е. как отправлять этот запрос каждый раз после обновления страницы ?
    Спасибо!
     
  2. llirikov

    llirikov New Member

    Joined:
    18 Aug 2010
    Messages:
    14
    Likes Received:
    3
    Reputations:
    0
    если запрос постоянно один и тот же, то

    PHP:
    <?php

    $fp 
    fsockopen("xxx.ru"80);
    fputs($fp"POST /xx/www/into HTTP/1.1\r\n
    Host: xxx.ru\r\n
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5\r\n
    Referer: http://xxx.ru/pet/xx/?fdas=1\r\n
    Content-Length: 46\r\n
    Origin: http://xxx.ru\r\n
    X-Requested-With: XMLHttpRequest\r\n
    Content-Type: application/x-www-form-urlencoded\r\n
    Accept: application/json, text/javascript, */*\r\n
    Accept-Encoding: gzip,deflate,sdch\r\n
    Cookie: source=234; __utmz=21.22.3.4.utmcsr=(direct)|utmccn=(direct)|u  tmcmd=(none); uid=143123; hw=ksdfsdf@masas; uea=5; __utma=1234.45656.34535.1745.128745.1; __utmc=1155; __utmb=1125.2.1.145\r\n
    Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4\r\n
    Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3\r\n\r\n

    ajax=true&piz=123123&json=true"
    );

    fclose($fp);

    ?>
    если нет, и передаваемые параметры изменяются - то нужно правильно формировать последнюю строку и менять content-length
     
    1 person likes this.
  3. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    llirikov а слабо без сокетов и курла? :D
     
  4. llirikov

    llirikov New Member

    Joined:
    18 Aug 2010
    Messages:
    14
    Likes Received:
    3
    Reputations:
    0
    нет, не слабо :) на вскидку, можно создать форму c hidden-параметрами и method=POST и по onLoad сабмитить её, чтобы отправлялось по загрузке страницы и без кнопки
     
  5. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    только на пхп, без всяких там хтмл и яваскриптов
     
  6. llirikov

    llirikov New Member

    Joined:
    18 Aug 2010
    Messages:
    14
    Likes Received:
    3
    Reputations:
    0
    для >= 5 fopen + stream_context?

    или это тоже не устраивает? :)
     
    1 person likes this.
  7. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    ога, правильно ;) можно не только фопен, но и другие ридеры, поддерживающие хттп
     
  8. llirikov

    llirikov New Member

    Joined:
    18 Aug 2010
    Messages:
    14
    Likes Received:
    3
    Reputations:
    0
    |qbz|
    да, этот способ наиболее удобный, нет проблем с формированием заголовка, и в тоже время без подключения левых либ, как в случае с курлом
     
  9. Aligator

    Aligator Elder - Старейшина

    Joined:
    24 Nov 2006
    Messages:
    138
    Likes Received:
    15
    Reputations:
    0
    а можно еще method=POST и curl ?
     
  10. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    а header();?
     
  11. llirikov

    llirikov New Member

    Joined:
    18 Aug 2010
    Messages:
    14
    Likes Received:
    3
    Reputations:
    0
    Aligator
    можно, но зачем? если запрос всегда один и тот же, не нужно авторизоваться, собирать куки итд, то лучше воспользоваться каким-то другим методом

    SHiNiGaMi
    по-моему, header() отправляет запрос пользователю, т.е. отправить POST запрос нельзя
    GET - можно через header("Location: http://site.ru?ab=cd")
     
  12. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    точнее браузеру, т.е.
    Code:
    header("POST /xx/www/into HTTP/1.1\r\n
                Host: xxx.ru\r\n
                User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5\r\n
                Referer: http://xxx.ru/pet/xx/?fdas=1\r\n
                Content-Length: 46\r\n
                Origin: http://xxx.ru\r\n
                X-Requested-With: XMLHttpRequest\r\n
                Content-Type: application/x-www-form-urlencoded\r\n
                Accept: application/json, text/javascript, */*\r\n
                Accept-Encoding: gzip,deflate,sdch\r\n
                Cookie: source=234; __utmz=21.22.3.4.utmcsr=(direct)|utmccn=(direct)|u  tmcmd=(none); uid=143123; hw=ksdfsdf@masas; uea=5; __utma=1234.45656.34535.1745.128745.1; __utmc=1155; __utmb=1125.2.1.145\r\n
                Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4\r\n
                Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3");\r\n\r\n");
    
     
  13. llirikov

    llirikov New Member

    Joined:
    18 Aug 2010
    Messages:
    14
    Likes Received:
    3
    Reputations:
    0
    так точно работать не будет, там одной строкой должно быть, т.е.
    header("POST /xx/www/into HTTP/1.1");
    header("Host: xxx.ru");
    ....

    но думаю что и так работать не будет, но проверять лень )
     
  14. Aligator

    Aligator Elder - Старейшина

    Joined:
    24 Nov 2006
    Messages:
    138
    Likes Received:
    15
    Reputations:
    0
    <?php

    $fp = fsockopen("xxx.ru", 80);
    fputs($fp, "POST /xx/www/into HTTP/1.1\r\n
    Host: xxx.ru\r\n
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5\r\n
    Referer: http://xxx.ru/pet/xx/?fdas=1\r\n
    Content-Length: 46\r\n
    Origin: http://xxx.ru\r\n
    X-Requested-With: XMLHttpRequest\r\n
    Content-Type: application/x-www-form-urlencoded\r\n
    Accept: application/json, text/javascript, */*\r\n
    Accept-Encoding: gzip,deflate,sdch\r\n
    Cookie: source=234; __utmz=21.22.3.4.utmcsr=(direct)|utmccn=(direct)|u tmcmd=(none); uid=143123; hw=ksdfsdf@masas; uea=5; __utma=1234.45656.34535.1745.128745.1; __utmc=1155; __utmb=1125.2.1.145\r\n
    Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4\r\n
    Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3\r\n\r\n

    ajax=true&piz=123123&json=true");

    fclose($fp);

    ?>

    Чета не работает.... :(

    Можно поподробней "можно создать форму c hidden-параметрами и method=POST и по onLoad сабмитить её"
     
  15. roxblnfk

    roxblnfk Elder - Старейшина

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    конечно не работает, убери все \r\n
    а то их в 2 раза больше получется, чем надо :)
     
    1 person likes this.
  16. llirikov

    llirikov New Member

    Joined:
    18 Aug 2010
    Messages:
    14
    Likes Received:
    3
    Reputations:
    0
    да, действительно, ошибся )
    \r\n нужно писать, если писать fputs() для каждой строки отдельно
     
  17. Aligator

    Aligator Elder - Старейшина

    Joined:
    24 Nov 2006
    Messages:
    138
    Likes Received:
    15
    Reputations:
    0
    Все ОК!

    Еще один вопрос:
    Если надо отправить две строки вместо одной.
    т.е. если надо отправить:
    Надо переписать для каждой строки fputs, или можно обойтись ?
     
  18. llirikov

    llirikov New Member

    Joined:
    18 Aug 2010
    Messages:
    14
    Likes Received:
    3
    Reputations:
    0
    сразу две строки одним запросом? так нельзя :)

    если двумя запросами, то проще будет написать функцию отправки, в которую передавать изменяющийся параметр piz. если его длина может быть больше (или меньше) 6 символов, нужно будет пересчитать content-length
     
  19. Aligator

    Aligator Elder - Старейшина

    Joined:
    24 Nov 2006
    Messages:
    138
    Likes Received:
    15
    Reputations:
    0
    А как поставить между запросами интервал, ну например 3 секунды ?
     
  20. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    post($postdata);
    sleep(3); // ожидание 3 секунды.
    post($postdata2);
     
    1 person likes this.
Loading...
Similar Threads - создать POST зарос
  1. newsql
    Replies:
    6
    Views:
    3,572