Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Сеть > Как имитировать POST запрос


Автор: Doggy123 18.11.2005, 15:04
Помогите кто знает. Нужно заити на сайт и пропарсить инфу. Логин и пароль известны. Пробовал использовать fsockopen но возможно что-то делал не так. Если можно не отсылая к мануалам обьясните на конкретном примере как можно залогинится.



Кроме того при обращении на страницу с логин-формой возникала ошибка вида:

Warning: Cannot modify header information - headers already sent by (output started
at /usr/home ... ... /lang_english.php:1)

in /usr/home ... ... /header.php on line 48





на всякий случай посылаю свой код:
Код

<?
set_time_limit(0);
ignore_user_abort(true);


$post_query= 'username=admin&user_password=ffdbdfbdfb&random_num=841308&gfx_check=&op=login';  //эти переменные были в форме на страничке с логином

$post_query = urlencode($post_query);

$host = www.blabla.com;
$path = 'http://www.blabla.com/modules.php?name=Your_Account&op=userinfo&bypass=1&username=admin';  
     $query =  "POST ".$path." HTTP/1.0\r\n";
     $query .= "Host: ".$host." \r\n";
     $query .= "Content-Type: application/x-www-form-urlencoded\r\n";
     $query .= "Content-Length: " .strlen($post_query)."\r\n";
     $query .= "\r\n".$post_query;
                          
$fp = fsockopen($host, '80');
if ($fp) 
{
  fputs($fp, $query);

else 
{
  die ('error');
}


while (!feof ($fp)) 
{

 echo $data = fgets ($fp, 10240);

}

?>

Автор: -=Ustas=- 18.11.2005, 15:43
Лучше поюзай библиотеку cUrl.

Автор: Doggy123 18.11.2005, 15:51
Re: Ustas

А без curl-а ни-как?

И ее ведь кажется надо подключать отдельно

Автор: MuToGeN 18.11.2005, 16:42
Цитата(Doggy123 @ 18.11.2005, 15:51)
И ее ведь кажется надо подключать отдельно

Раскомментировать одну строку в php.ini не такая уж и большая проблема...

Автор: -=Ustas=- 18.11.2005, 17:39
Цитата(Doggy123 @ 18.11.2005, 15:04)
Warning: Cannot modify header information - headers already sent by (output started
at /usr/home ... ... /lang_english.php:1)

in /usr/home ... ... /header.php on line 48

Это говорит о том, что у тебя где то был вывод в поток. Возможно и из за этого вся трабла.

Автор: Doggy123 18.11.2005, 18:07
Цитата
Это говорит о том, что у тебя где то был вывод в поток. Возможно и из за этого вся трабла


То есть? ... Можно пожайлуста по-подробнее !

Автор: -=Ustas=- 19.11.2005, 08:23
У тебя наверное инклюдится этот файл первым lang_english.php, и где то уже есть вывод в браузер.

Автор: Doggy123 19.11.2005, 11:25
А! нет! lang_english.php не мой файл эта ошибка вылезает на сайте на который я логинюсь! Все-таки помогите с сокетами если что-нибудь можно сделать!

Автор: Doggy123 22.11.2005, 12:26
Всем спасибо проблема решена! В ходе изысканий обнаружил некоторые мелочи, о которых можно сказать:
  • Первое необходимо всегда использовать функции работы с потоком с собачкой иначе есть шанс что в поток попадет что-нибудь не то
    (@ - отлючает уведомление об ошибках) Пример: @fsockopen, @fputs. И нельзя ничего принтовать до того как в поток не послан запрос (покрайней мере так было у меня и возникала ошибка на удаленном сайте "headers already sent" ).
  • И второе: оказывается можно открыть один поток и не закрывая его открыть еще несколько. Это мне помогло при посылке последующих запросов к сайту после авторизации (2 запроса в один поток записывать видимо нельзя!)

Возможно все, что я пишу кому-то очевидно но может кому-нибудь пригодится. Если что-либо вышепреведенное не верно напишите об этом!

Автор: vpokorp 12.1.2008, 15:19
Вопрос автору:

А можно было бы привести пример готового и работающего кода? 

А то неработающий есть, а ...

Автор: maykoff 12.1.2008, 16:49
http://forum.vingrad.ru/forum/topic-99610/anchor-entry1377515/0.html

Автор: Logree 25.1.2008, 21:36
Возможно я не прав но скорее всего ошибка вот где... попробyй так...
Код

$host = 'www.blabla.com';
$path = '/modules.php?name=Your_Account&op=userinfo&bypass=1&username=admin';  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)