Проходим авторизацию в вконтакте
Вот и пришло время, когда мне понадобилось авторизоваться в этой социальной сети. На мое удивление, статей в Интернете было не мало. Даже множество из них были на PHP. Отлично! как раз то, что мне нужно. Но внимательно их прочитав, я понял, что те методы авторизации, которые там описывались либо устарели или не работают совсем правильно. Правда попадались и рабочие примеры (если судить по отзывам). Но все таки захотелось мне написать все с чистого листа, да и к тому же я в свое время написал класс, в который объединил самые часто используемые функции, наверное, самой лучшей библиотеки что я встречал для работы с различными сетевыми протоколами – cURL. На вооружение был принят firebug. Как же без него в таких ситуациях.Ну что понеслась! Вот собственно код с подробными комментариями.
// Подключаем класс curl
require_once ('curl.class.php');
// Данные для входа
$email = "ваш емейл";
$password = "ваш пароль";
// Создаем объект curl
$curl = new curl;
// Инициализируем curl
$curl->init();
// Устанавливаем USER_AGENT
$curl->set_useragent("Mozilla/5.0 Gecko/20101203 Firefox/3.6.1");
// Обрабатываем заголовок Location
$curl->set_followlocation(1);
// Запрещаем вывод данных в браузер
$curl->set_returntransfer(1);
// Устанавливаем ссылку для первого захода
$curl->set_url('http://vk.com/');
// Нам необходимо вывести заголовки,
// поэтому устанавливаем единицу для вывода головы документа
$curl->set_header(1);
// Получаем тело документа и одновременно устанавливаем cookies
$curl->set_cookie($curl->exec());
// POST запрос будем передавать по этой ссылке
$curl->set_url('http://login.vk.com/?act=login');
// Собственно сам POST запрос
$curl->set_post("act=login&act=login&al_frame=1&captcha_key=&captcha_sid=&
email=$email&expire=&from_host=vkontakte.ru&pass=$password&q=1");
// Получаем тело документа и одновременно устанавливаем cookies
$curl->set_cookie($curl->exec());
// Указываем реферера
$curl->set_referer('http://login.vk.com/?act=login');
// Устанавливаем конечную ссылку
$curl->set_url('http://vk.com/login.php?');
// Отключаем вывод головы документа
$curl->set_header(0);
// Вополняем
echo $curl->exec();
$curl->close();
Вы можете скачать полный исходник. Класс cURL прилагается.

07.10.2013 @ 10:11 пп
Здравствуйте. Спасибо за статью. Но у меня такая проблема когда я запускаю скрипт я получаю страничку где я авторизован но я остаюсь на localhoste поэтому я не могу идти дальше по ссылка как мне сделать чтобы я при активации скрипта был авторизован непосредственно на вконтакте.
08.10.2013 @ 12:07 дп
Добрый вечер!
Какая-то странная у вас ситуация. Как вы можете получиться страницу, оставаясь на localhost?