![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как послать 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 символов
Я так думаю надо какой либо программой перехватить обращение к серверу (что бы знать что туда посылается), а дальше посылать это самому.