Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Вниз

Как послать php запросы ?   Найти похожие ветки 

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

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

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

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


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

Наверно 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 символов

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


 
SergP ©   (2004-07-16 11:12) [2]

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


 
VictorT ©   (2004-07-16 18:16) [3]

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

void PostToForum(CString post, CFile *log1)
{
   DWORD status = 0;
   while (status != 200) {
       Write(log1, "Посылаем ответ\r\n");
       cout << "_Rбл< _¬ Rві_в" << endl;
       CString strHeaders = _T("Content-Type: application/x-www-form-urlencoded");
       CString strFormData = _T("id=92675&num=3.4&action=reply&client=1&psw=betaalfa&name=");
       strFormData += UrlEncode("VictorT");
       strFormData += _T("&email=&msg=");
       strFormData += UrlEncode(post);
   //    strFormData += post;
       CInternetSession session(NULL, 1, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, INTERNET_FLAG_DONT_CACHE);
       CHttpConnection* pConnection = session.GetHttpConnection(_T("deep.webm.ru"));
       CHttpFile* pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, _T("forum/post.php"));
       BOOL result = pFile->SendRequest(strHeaders, (LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());
       pFile->QueryInfoStatusCode(status);
       if (status != 200) {
           Write(log1, "Ошибка соединения\r\n");
           cout << "_иЁІЄ  бR_¤Ё-_-Ёп" << endl;
       }
   }
}


 
VictorT ©   (2004-07-16 18:17) [4]

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

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


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

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

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


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

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

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

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


 
SergP ©   (2004-07-16 21:19) [7]


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


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


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

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


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

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


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

Фёдор мегатронов - вот
Пример отправки 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-18 15:40) [11]

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

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

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


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

Фёдор Мегатронов
Я так понел тебе надо послать логин и пароль
назовём их так 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
Тут всё просто ,ты просто внимательно посмотри на сайте всё что находится после <form
//Может тебе надо в настройках компонента idhttp заполнить слудущее
Host: site.com
Referer: http://site.com/index.php
User Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)
Content Length: 200
Connection: Keep-Alive
Accept Language: ru
Accept Encoding: gzip


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

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

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

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

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


 
mrGrey ©   (2004-07-18 21:59) [14]

Смотри сюда внимательно!!!!
Сам только что разобрался, а потому объяснять буду подробно :)
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 22:38) [15]

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



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.034 c
3-1093500641
Zhekson
2004-08-26 10:10
2004.09.26
Корректный выход из программы


8-1088668316
Snip
2004-07-01 11:51
2004.09.26
TPicture и глубина цвета


3-1093954769
Stupid
2004-08-31 16:19
2004.09.26
Помогите составить SQL


1-1094732269
dima_shapkin
2004-09-09 16:17
2004.09.26
Design Time


1-1094873567
AZ
2004-09-11 07:32
2004.09.26
IDE – навигация по коду





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский