Сокеты

Discussion in 'PHP' started by IamAdmin, 6 Nov 2011.

  1. IamAdmin

    IamAdmin New Member

    Joined:
    6 Aug 2009
    Messages:
    0
    Likes Received:
    2
    Reputations:
    0
    Существует сайт site.ru
    В нем есть переход на форму регистрации:
    site.ru/cgi/registration.php

    В регистрации есть имя формы <FORM name=nameform action=registration.php> и другие параметры, допустим такие как имя и пароль. Предположим что капчи нет. Как должна выглядеть строка пост запроса?

    Если б action формы ссылался на другое название, а не на registration.php, то пост запрос в сокетах был бы прмиерно такой:

    http://site.ru/cgi/registration123.php?name=qwerty&pass=123

    А как быть тут?
     
  2. Zedi

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

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    это ты написал не пост запрос а get, а пост запрос на php сокетах будет примерно такой (не проверял)
    PHP:
    $socket fsockopen("site.ru"80$errno$errstr30);
    $data "name=".urlencode("qwerty")."&pass=".urlencode("123");
    fwrite($socket"POST /registration.php HTTP/1.1\r\n");
    fwrite($socket"Host: site.ru\r\n");
    fwrite($socket,"Content-type: application/x-www-form-urlencoded\r\n");
    fwrite($socket,"Content-length:".strlen($data)."\r\n");
    fwrite($socket,"Accept:*/*\r\n");
    fwrite($socket,"User-agent:Opera 10.00\r\n");
    fwrite($socket,"Connection:Close\r\n");
    fwrite($socket,"\r\n");
    fwrite($socket,"$data\r\n");
    fwrite($socket,"\r\n");
    //ответ
    $answer '';
    while(!
    feof($socket)){
        
    $answer.= fgets($socket4096);
    }
    echo 
    $answer;
    fclose($socket);
     
    1 person likes this.
  3. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Небольшая поправка по поводу кода, который написали выше. После окончания самого тела POST запроса не нужно добавлять \r\n. То есть вместо
    PHP:
    fwrite($socket,"$data\r\n");
    fwrite($socket,"\r\n");
    достаточно только:
    PHP:
    fwrite($socket$data);
     
    1 person likes this.
  4. IamAdmin

    IamAdmin New Member

    Joined:
    6 Aug 2009
    Messages:
    0
    Likes Received:
    2
    Reputations:
    0
    Zedi, помог в аське. от души.

    Chrome~, тоже спс
     
  5. Flisk

    Flisk Member

    Joined:
    4 Aug 2010
    Messages:
    147
    Likes Received:
    8
    Reputations:
    -2
    Подскажите, обязательно ли делать урленкоде, если введенные символы - латинские буквы или цифры? Я думал, это только для кириллицы..или нет?
     
  6. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Для латинских букв и цифр делать urlencode не нужно.