PHP. Authorization with curl

Задача: авторизоваться на сайте и получить информацию.

function get_info($email,$pass)
{
$ch = curl_init();
$url = ‘https://www.somesite.com/login’;
curl_setopt($ch, CURLOPT_URL, $url ); // отправляем на
curl_setopt($ch, CURLOPT_HEADER, 0); // пустые заголовки
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // возвратить то что вернул сервер
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // следовать за редиректами
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);// таймаут
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);// просто отключаем проверку сертификата
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).’/cookies.txt’); // сохранять куки в файл
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).’/cookies.txt’);
curl_setopt($ch, CURLOPT_POST, 1); // использовать данные в post
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
’email’=>$email,
‘password’=>$pass,
));
$data1 = curl_exec($ch);

# curl_setopt($ch, CURLOPT_URL, ‘http://www.somesite.com/info/index.php?ID=12345’ );
# curl_setopt($ch, CURLOPT_POST, 0);
# $data2 = curl_exec($ch);

}

get_info(‘mail@mail.com’,’password’);

Здесь все просто, но есть несколько моментов заслуживающих упоминания:
CURLOPT_FOLLOWLOCATION, 1 – работает если PHP в незащищенном режиме и не установлена директива open_basedir. Тоже самое касается директорий для печенек!
Комменты, которые я оставил в тексте показывают как можно дальше работать, уже после авторизации и записи печенек.
Функция тупая, можно добавить проверку на авторизацию поиском на странице logout и т.д.

Ссылки:
http://xdan.ru/avtorizacija-na-sajte-pri-pomoshhi-curl-php.html
http://www.php.net/manual/ru/book.curl.php
http://www.php.net/manual/ru/function.curl-setopt.php

Leave a comment

You must be logged in to post a comment.