Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как послать php запросы ? [D7, WinXP]


Фёдор Мегатронов ©   (2004-07-14 22:12:00) 

Есть форум .. допустим на php ... мне нужно чтобы нажатием одной кнопки я логинился на него, или вписав в окно в своей проге текст - мог запостить его в форуме .

для этого нужны какие-то спецефические компоненты ?

как это проще сделать ?


Фёдор Мегатронов   (2004-07-18 22:38:00) [1]

к спасибо буду разбераться


mrGrey   (2004-07-18 21:59:00) [2]

Смотри сюда внимательно!!!!
Сам только что разобрался, а потому объяснять буду подробно :)
1. Открываешь свой PHP в ViewSource и ищешь
<form method=post ><input type="hidden" name="PHPSESSID" value="4d38d88a0733c9058bbe94c13e29a25fayojelivobkyhhhfeeegcfanni165810" />// невидимое поле
<table border=0>
<tr>
<td> User name:</td>
<td> <input type=text name=username></td></tr> //видимое поле а-ля TEdit
<tr>
<td> Password:</td>
<td> <input type=password name=password></td>
</tr>
<tr>
<td colspan=2 nowrap>
Use Auto-login <input type=checkbox checked name=autologin value=1><br>                      //CheckBox
Secure your PHPSESSIONs? < input type=checkbox checked name=ipsec value=1><br>           //CheckBox
<font size="1">(not compatible with some Internet providers)</font>
<br><br>
<input type=submit value="Login" name="submit">
</td>

2. Ложишь на форму IdHTTP (у меня - HTTP)
3. Первая процедура - получение страницы (из-за секретного поля PHPSESSID):
procedure TMainForm.BtnSourceClick(Sender: TObject);
var
 s:string;
begin
     Try S:=HTTP.Get(URLEdit.Text);
     Except ShowMessage('Damned!');End;
     Memo.Lines.Text:=S;
end;


4.Вторая процедура - отсылка POST-пакета:
procedure TMainForm.POSTClick(Sender: TObject);
var s:TStrings;
   str:string;
begin
     S:=TStringlist.Create;
     s.Add('PHPSESSID=4d38d88a0733c9058bbe94c13e29a25fh...');
     s.Add('username=VANYA');
     s.Add('password=TRAKTOR');
     s.Add('autologin=0');
     s.Add('ipsec=1');
     try str:=HTTP.Post(URLEdit.Text,s);
     except s.Free;
     end;
     MSource.Lines.Text:=str;
end;


Попробуй.
Удачи.
И спасибо что создал тему - я из нее много почерпнул. Напишешь вышло, не вышло - ладушки???


Фёдор Мегатронов   (2004-07-18 21:32:00) [3]

вот обычно я в строке состояния внизу замечаю надпись
http://site.com/index.php?login=Фёдор&password=123...

а на нашем форуме я вижу только
http://site.com/index.php?auth

я ещё поговорю с другом который нам форум писал... но ведь этот запрос можно поидее только в исходниках посмотреть ..

у меня есть они от почти всех движков, но это как-то неудобно


KN771   (2004-07-18 20:48:00) [4]

Фёдор Мегатронов
Я так понел тебе надо послать логин и пароль
назовём их так login=Фёдор password=123

procedure TForm1.ButtonClick(Sender: TObject); //кнопка
var
S : TStringList;
begin
S := TStringList.create;
try
S.Add('login=Фёдор');
S.Add('password=123');
idhttp1.Post(' http://site.com/index.php',S);
except
S.free;
end;
end;end.

//Таким способом мы залогинимся на сайте под логином Фёдор и паролем 123
весь запрос будет такого вида
http://site.com/index.php?login=Фёдор&password=123
Тут всё просто ,ты просто внимательно посмотри на сайте всё что находится после


Фёдор Мегатронов   (2004-07-18 15:40:00) [5]

тоесть если на пример у меня есть форма и два поля: логин и пароль.

вместо строки http://site.com/index.php' я подставил точный адрес до формы логина ...

но ничего не происходит ...


KN771   (2004-07-18 00:36:00) [6]

Фёдор мегатронов - вот
Пример отправки Post запроса

var
S : TStringList;
begin
S := TStringList.create;
try
S.Add('login=qwerty');
S.Add('text=vvvvvvv');
idhttp1.Post(' http://site.com/index.php',S);
except
S.free;
end;
end;end.


Фёдор Мегатронов   (2004-07-17 16:00:00) [7]

короче ктонибудь может привести код отправки ПХП запроса ? и как пиконнектиться к серверу


Фёдор Мегатронов   (2004-07-17 16:00:00) [8]

точнее POST запрос


SergP   (2004-07-16 21:19:00) [9]


> задача усложняется тем, что я плохо знаю ПХП ... конечно
> мне поможет друг 8) .. который знает ПХП .. но не знает
> делфи ..


А какое отношение имеет PHP к Delphi, вернее к твоей задаче?
PHP для такой задачи знать вовсе не обязательно. Кроме того можно даже и не подозревать что есть такая штука как PHP.


Фёдор Мегатронов   (2004-07-16 21:00:00) [10]

тут такая штука получаеться .. что мне просто нужно послать запрос .. потому что вся информация (на пример текст топика) передаёться в нём ...

неужели нельзя как-то просто с этим работать ? хе ... система такая что я могу прсото сэмитировать посылание запроса в строке адреса интернет иксплорера 8) .. перехватив его идентификатор, присвоить строке запрос, и сэмулировать нажатие кнопки ..

но это слишком "через-жопу" ...


Фёдор Мегатронов   (2004-07-16 20:30:00) [11]

задача усложняется тем, что я плохо знаю ПХП ... конечно мне поможет друг 8) .. который знает ПХП .. но не знает делфи ..

спасибо вобщем .. попробую это использовать


VictorT   (2004-07-16 18:17:00) [12]

Alexander1966   (15.07.04 11:35) [1]
Я так думаю надо какой либо программой перехватить обращение к серверу (что бы знать что туда посылается), а дальше посылать это самому.

Имхо, можно ничего и не перехватывать, а просто посмотреть в html-коде, как отправляется форма.


VictorT   (2004-07-16 18:16:00) [13]

Вот кусок кода из моего бота для форума, правда на Си.

void PostToForum(CString post, CFile *log1)
{
   DWORD status = 0;
   while (status != 200) {
       Write(log1, "Посылаем ответ\r\n");
       cout SendRequest(strHeaders, (LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());
       pFile->QueryInfoStatusCode(status);
       if (status != 200) {
           Write(log1, "Ошибка соединения\r\n");
           cout


SergP   (2004-07-16 11:12:00) [14]

А компонент TWebBrowser тебя не устраивает?


Alexander1966   (2004-07-15 11:35:00) [15]

Наверно idTelnet

Коннектимся:
 telnet www.rambler.ru 80 <Enter>

Получаем страничку на консоль, ввиде потоков символов
(Броузер просто этот поток обрабатывает и выводит красиво):
 GET /INDEX.HTML  HTTP/1.0 <Enter><Enter>

А теперь заставим выполнить скрипт:
 POST сценарий?параметры HTTP/1.0   общий вид команды
Пример:
 POST /script.cgi HTTP/1.0\n
 Content-length: 5\n                5 символов длина заголовка
 \n
 Test!                              заголовок 5 символов

Я так думаю надо какой либо программой перехватить обращение к серверу (что бы знать что туда посылается), а дальше посылать это самому.


Наверх

Титульная страница Поиск, карта сайта Написать письмо