Помогите разобраться с curl

Статус
В этой теме нельзя размещать новые ответы.

muzshura

Постоялец
Регистрация
27 Фев 2008
Сообщения
74
Реакции
3
Задача - войти на форум.

Реализация в 2х файлах

php.php
PHP:
<?php
// получаю страничку авторизации
$ch = curl_init(); 
$url = "http://altforum.bks-tv.ru/login.php"; 
curl_setopt($ch, CURLOPT_URL, $url); // set url to post to 
curl_setopt($ch, CURLOPT_USERAGENT, 'Opera/9.26 (Windows NT 5.1; U; ru)');
curl_setopt($ch, CURLOPT_REFERER, 'http://metabot.ru');
curl_setopt($ch, CURLOPT_FAILONERROR, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable 
// сохраняю кукисы по инструкции с нулледа
$path_ = pathinfo($_SERVER[SCRIPT_FILENAME]);
$ScriptDir=$path_['dirname'];
$CookieFile=$ScriptDir."/tmp/cookie.txt";
curl_setopt($ch, CURLOPT_COOKIEFILE, $CookieFile);
curl_setopt($ch, CURLOPT_COOKIEJAR, $CookieFile);
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // times out after 4s 
$result = curl_exec($ch); // run the whole process 
// сохраняю идентификатор сессии
$filename = "zzz.txt";
$fh = fopen($filename, "w");
$pattern = '/phpbb2mysql_data=(.*?);/is';
preg_match($pattern, $subject, $matches);
fwrite($fh, $matches[1]);
fclose($fh);
curl_close($ch); 
print $result;
?>
// запускаю следующий запрос
<script>window.location='php1.php';</script>


php1.php
PHP:
<?php
$ch = curl_init(); 
// читаю сохраненный идентификатор сессии
$filename = "zzz.txt";
$fh = fopen($filename, "r");
$url = "http://altforum.bks-tv.ru/login.php?sid=".fread($fh, filesize($filename)); 
fclose($fh);
curl_setopt($ch, CURLOPT_URL, $url); // set url to post to 
curl_setopt($ch, CURLOPT_USERAGENT, 'Opera/9.26 (Windows NT 5.1; U; ru)');
// делаю реферер с предыдующей страницы
curl_setopt($ch, CURLOPT_REFERER, "http://altforum.bks-tv.ru/login.php");
curl_setopt($ch, CURLOPT_FAILONERROR, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable 
// отсылаю кукисы 
$path_ = pathinfo($_SERVER[SCRIPT_FILENAME]);
$ScriptDir=$path_['dirname'];
$CookieFile=$ScriptDir."/tmp/cookie.txt";
curl_setopt($ch, CURLOPT_COOKIEFILE, $CookieFile);
curl_setopt($ch, CURLOPT_COOKIEJAR, $CookieFile);
curl_setopt($ch, CURLOPT_TIMEOUT, 15); // times out after 4s 
curl_setopt($ch, CURLOPT_POST, 1); // set POST method 
// отсылаю логин, пароль, имя кнопки "Войти" 
curl_setopt($ch, CURLOPT_POSTFIELDS, "nusername=***&password=***&redirect=&login=%C2%F5%EE%E4"); // add POST fields 
$result = curl_exec($ch); // run the whole process 
curl_close($ch); 
print $result;
?>

В итоге получаю сообщение "Вы неверно ввели логин/пароль". Где я туплю?
 
Во-первых, убедись, что файл с cookies создается (есть ли каталог tmp и что там с правами на запись). Посмотри содержимое файла после запуска.

Во-вторых, проверь, правильно ли вырезается sid (добавь echo во втором скрипте, чтобы увидеть url).

В-третьих, посмотри сниффером, что отсылается броузером при сабмите формы логина. Возможно ты упустил какой-то параметр.
 
1) зачем 2 файла ?
2) дай логин и пароль, а то регится не охота что бы посмотреть скрипт
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху