Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

POST HTTP запрос на PHP

74K
15 декабря 2011 года
wolfThGun
7 / / 29.11.2011
Нужно чтобы после выполнения скрипта происходила авторизация на сайте. Вот код скрипта:
Код:
<?php
$fp=fsockopen("www.ukr.net", 80, $errno, $errstr, 30);
if(!$fp){
echo "$errstr ($errno)<br>\n";

}
else {
 $data="Login=login&Password=pass";
      $query = "POST /index.php HTTP/1.1\r\n";
      $query .= "Host: www.ukr.net\r\n";
      $query .= "Content-Type: application/x-www-form-urlencoded\r\n";
   
      $query .= $data;
      $query .= "Connection: Close\r\n\r\n";
     
      fwrite($fp, $query);
 
      while (!feof($fp)) {
         $page = fgets($fp, 128);
      echo $page;
      }
   fclose($fp);
   
}


?>

После его выполнения получаю страницу сайта, но авторизация на сайте не происходит, никакого сообщения о не правильности введенных мною данных нету. Может я составил не правильно http запрос? Или в чем дело? Заранее спасибо :)
278
15 декабря 2011 года
Alexander92
1.1K / / 04.08.2008
При POST-запросе обязательным является заголовок Content-Length.
74K
17 декабря 2011 года
wolfThGun
7 / / 29.11.2011
Ну добавил я $query .= "Content-Length: 25\r\n"; При запуске скрипта идет долгое подключение к серверу, а потом выдает ошибку "Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\localhost\www\req\q.php on line 19" Может после POST нужно писать не "/index.php", а какой-то другой путь. Сама форма авторизации находится на главной странице сайта.
278
17 декабря 2011 года
Alexander92
1.1K / / 04.08.2008
Куда добавили, не в конец ли случайно? :)

 
Код:
$data = "Login=login&Password=pass";
$query = "POST /index.php HTTP/1.1\r\n";
$query .= "Host: www.ukr.net\r\n";
$query .= "Content-Type: application/x-www-form-urlencoded\r\n";
$query .= "Content-Length: ".strlen($data);
$query .= "Connection: Close\r\n\r\n";
$query .= $data;
fwrite($fp, $query);


[QUOTE=wolfThGun]
Может после POST нужно писать не "/index.php", а какой-то другой путь. Сама форма авторизации находится на главной странице сайта.
[/QUOTE]
Посмотрите в исходном коде главной страницы, какой путь прописан в атрибуте action этой формы, туда и обращайтесь.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог