Конференция "Сети" » Как преобразовать POST запрос в GET [D7, WinXP]
 
  • q1Onik (02.03.08 11:39) [0]
    Здравствуйте.
    Столкнулся со следующей проблемой: необходимо сформировать и преобразовать POST запрос в GET и отправить его на сервер. Слышал что php4 и более поздние версии поддерживают возможность обработки POST запросов, отправленных GET-ом.

    Get запросы посылаю след. образом:

    var Http:TIdHttp;
       s:string;
    ..........................................
    Plink:=send.php?sid=29130f66d777f182c3daf4b26ee96238;
    ..........................................
    Http:=TIdHTTP.Create(IDHttp1);
       Http.Host:=PAddr;
       Http.Port:=80;
       Http.Connect();
       s:=Http.Get('/'+Plink);
       Http.Disconnect;
    .........................................



    Скрипт и передаваемые ему переменные берутся из составленной предварительно карты сайта. Т.е. просто из тела html странички я выдирал все скрипты, ссылки на них брал из тегов <a href="скрипт и передаваемые в него переменные"></a>

    Теперь же потребовалось еще взять и проверить все скрипты из тегов <form></form>
    Вот пример:

    <form method="post" action="login.php?sid=81f0ea24f354fa6372158507b9ced3f6">

    <input class="post" type="text" name="username" size="10" />
    <input class="post" type="password" name="password" size="10" maxlength="32" />
    <input class="text" type="checkbox" name="autologin" />
    <input type="submit" class="mainoption" name="login" value="Вход" />

    </form>



    Пропарсив все между тегами <form></form> я узнал о таком скрипте как login.php.

    Вот суть моей проблемы:
    1. Как выглядит POST запрос, отправляемый скрипту в данном примере.
    2. Как мне отправить этот запрос к скрипту методам GET
  • Reindeer Moss Eater © (02.03.08 16:50) [1]
    в ГЕТэто не влезет.
  • q1Onik (04.03.08 10:23) [2]
    Хотя бы как в таком случае будет выглядеть посылаемая на сервер строка POST запроса?
  • Reindeer Moss Eater © (04.03.08 10:54) [3]
    http заголовок c url и полем content-length. За заголовком тело документа и имена полей.
    примерно так.
  • q1Onik (04.03.08 11:06) [4]
    procedure TForm1.Button1Click(Sender: TObject);
    var
    S: TStringList;
    begin
    memo1.Text:= IdHTTP1.Get('/login.php');
    S:= TStringList.Create;
    S.Add('name=admin');
    S.Add('password=qazwsx');
    memo1.Text:=IdHTTP1.Post('/login.php', S);
    end;

    Вот как я пытаюсь отправить пост запрос.

    Но зайти с таким запросом не получается.

    И в чем здесь ошибка, я толком понять не могу.

    Подозреваю, что просто неправильно запрос составил.
  • Reindeer Moss Eater © (04.03.08 11:38) [5]
    Помнится там была ошибка, связанная с разделителями полей при использовании TStrings.
  • q1Onik (04.03.08 12:21) [6]
    Я не мастер сетевого программирования, поэтому на лету мне тяжело понять, что это меняет =(((
    Если не трудно помогите куском кода, как запрос будет выглядеть в этом конкретном примере хДД
  • Reindeer Moss Eater © (04.03.08 12:57) [7]
    поиграйся с ограничителями строк при вставке в лист. (CRLF и т.д.)
    или попробуй грузить пост параметры из файла используя стрим в качестве второго параметра post
  • SpellCaster (12.03.08 12:44) [8]
    Отправь ПОСТ из браузера и поснифай SmSniffer-ом.

    > Слышал что php4 и более поздние версии поддерживают возможность
    > обработки POST запросов, отправленных GET-ом

    Бред сивой кобылы. Имеется в виду, отправить переменные ПОСТ-запроса через ГЕТ? Так бессмысленно, если скрипт обрабатывает $_POST, там ничего не будет. Возможно, только если скрипт юзает $_REQUEST.
 
Конференция "Сети" » Как преобразовать POST запрос в GET [D7, WinXP]
Есть новые Нет новых   [134431   +14][b:0][p:0.001]