Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с авторизацией через curl

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Wayruha
Отправлено: 16 Апреля, 2012 - 21:03:43
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Итак. Задумал я авторизоватья в контакте с помощю cur. Вот скрипт:
function vk_autoriz($login,$password){

$user_agent = "Opera/10.00 (Windows NT 5.1; U; ru) Presto/2.2.0";

$login=$login;
$password=$password;
$cookie = '';

$ch = curl_init();

// true т.к. мы будем отправлять post запрос:
curl_setopt($ch, CURLOPT_POST, true);

// чтобы сайт думал, что мы - браузер:
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

// ответ сервера будем записывать в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 10);

// по редиректам будем переходить автоматически.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

curl_setopt($ch, CURLOPT_URL, 'http://login.vk.com/?act=login');

//Формирование запроса таким образом, я счел более наглядным
$post = array(
'act' => 'login',
'q' => '',
'al_frame' => '1',
'expire' => '',
'captcha_sid' => '',
'captcha_key' => '',
'from_host' => 'vkontakte.ru',
'email' => $login,
'pass' => $password
);

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));

$answer = curl_exec($ch);

/* В $answer нам приходит javascript, который и устанавливает куки
с названием: remixsid Нам нужно cпарсить эти 60 символов,
идентификатора сессии. с помощью них vkontakte поймет,
что мы авторизировались.*/

$sid = substr($answer, strpos($answer, "setCookieEx('sid', '") + 20, 60);
$cookie = 'remixsid=' . $sid;

curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);

// укажем страницу, с которой мы получим данные для проверки
curl_setopt($ch, CURLOPT_URL, 'http://vk.com/mail.php');

$answer = curl_exec($ch);
echo $answer;
// echo $cookie;
curl_close($ch);

}
vk_autoriz($login,$password);
В итоге страницу mail своего акк я вижу, но перейти на другую страницу сайта не могу. ПОЧЕМУ? Денвер выдает, типа на компе такого файла нет (например /friends). Как зделать, что б я смог свободно лазить вконтакте?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB