|
|
|
| Здравствуйте. Моей задачей является реализация граббера. Сделал как советовали на форуме http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1879, но загружается вместостраницы новостей страница авторизаци. Вот код:
<?php
$login = "логин";
$password = "пароль";
$hostname = "www.rosan.su"; //хост
$path = "/dealers/index.php"; //путь
$line = "";
// Устанавливаем соединение, имя которого
// передано в параметре $hostname
$fp = fsockopen($hostname, 80, $errno, $errstr, 30);
// Проверяем успешность установки соединения
if (!$fp) echo "$errstr ($errno)<br />\n";
else
{
echo "Соеденение прошло успешно...";
// Данные HTTP-запроса
$data =
"login=".urlencode($login)."&password=".urlencode($password)."\r\n\r\n";
// Заголовок HTTP-запроса
$headers = "POST $path HTTP/1.1\r\n";
$headers .= "Host: $hostname\r\n";
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";
$headers .= "Content-Length: ".strlen($data)."\r\n\r\n";
// Отправляем HTTP-запрос серверу
fwrite($fp, $headers.$data);
// Получаем ответ
while (!feof($fp))
{
$line .= fgets($fp, 1024);
}
fclose($fp);
echo $line;
}
?>
|
| |
|
|
|
|
|
|
|
для: Icen
(24.06.2008 в 06:56)
| | Форма выглядит приблизительно вот так:
<form name='login' action='auth.php' method="POST">
Логин:<input type="text" name="login" value=''>
Пароль:<input type="password" name="password">
</form>
|
Авторизация производится на странице http://www.rosan.su/dealers/
После прохождения авторизации (в браузере), происходит загрузка по этому же самому адресу. но уже с новостями.
При использовании вышепредставленного скрипта, копируется именно страница для прохождения авторизации, а не новостей. Как это избежать. За любую помощь буду благодарен. | |
|
|
|
|
|
|
|
для: Icen
(24.06.2008 в 13:28)
| | Так авторизация у вас где посмотрите
action='auth.php'
А вы коннектитесь с index.php. | |
|
|
|
|
|
|
|
для: AcidTrash
(24.06.2008 в 14:18)
| | Дело в том, что форма находится именно на http://www.rosan.su/dealers/index.php
Если набрать в браузере http://www.rosan.su/dealers/auth.php то в ответ получаю Неправильная пара логин-пароль. В скрипте менял, тоже ошибку выдаёт (Maximum execution time of 30 seconds exceeded ).
Самое интересное, то что при удачной авторизации загружается таже самая страница http://www.rosan.su/dealers/index.php, но уже с новостями... | |
|
|
|
|
|
|
|
для: Icen
(25.06.2008 в 05:29)
| |
<?
$url = "http://www.rosan.su/dealers/auth.php";
$post = "login=mihdan&password=mihdan";
$cookie = str_replace('\\', '/', dirname(__FILE__)) . 'cookie.txt';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_NOBODY, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>
|
| |
|
|
|
|
|
|
|
для: mihdan
(25.06.2008 в 17:08)
| | Спасибо большое, всё заработало. | |
|
|
|