В этой статье я немного коснусь вопроса использования сURL в php и напишу подключение на сURL к sape.ru.
Как Вы знаете,
сURL - это специальная библиотека в виде php_curl.dll файла. Она может поддерживает такие протоколы, как HTTPS (SSL), FTP, FTPS, GOPHER, LDAP, DICT, TELNET и FILE. С помощью сURL можно выполнить практически любой удаленный запрос, а веб сервер может выступать полноценным клиентом использующим любой сервис основаный на HTTP протоколе.
Библиотека сURL - open source продукт с оригинальной MIT/X лицензией, позволяющей использовать этот пакет в любых: как коммерческих, так и некоммерческих целях, включать ее в свой дистрибутив (даже если он распространяется без открытого исходного кода).
Чтобы узнать, включена ли поддержка cURL в php, выполните "phpinfo()" и посмотрите в разделе cURL строку "cURL support". Если поддержка cURL в php "disabled", то Вы можете активировать библиотеку розкомментировав строку эту строку в php.ini (убрать впереди точку с запятой)
;extension=php_curl.dll
Поскольку cURL использует библиотеку openssl для SSL (HTTPS) соединений, Вам необходимо установить сервер с поддержкой SSL. В случае, если при инсталляции cURL библиотека openssl найдена не будет, произойдет установка cURL без поддержки SSL соединений. Для использования cURL при авторизации на различных сайтах (в том числе и на sape.ru), Вам придется передавать данные по протоколу HTTPS. Так что, проверьте (опять же с помощью функции "phpinfo()") включена ли на Вашем сервере поддержка "OpenSSL support". Если нет, значит переустанавливайте веб сервер. Apache c поддержкой ssl протокола Вы можете скачать здесь
Теперь рассмотрим небольшой пример использование cURL на php и авторизируемся на сайте sape.ru. Для этого посетим сайт sape.ru и одолжим у них кусочек кода, связанный с авторизацией на сайте.
<form
accept-charset="UTF-8" action="https://auth.sape.ru/login/" method="post" onsubmit="return correct_inputs();">
<input
type="hidden" name="act" value="login" />
<input
type="hidden" name="r" value="http://www.sape.ru/" />
<a
class="reg-link" href="http://passport.sape.ru/account/signup/" title="Зарегистрироваться" >Зарегистрироваться<br /><br />
<label
>Логин <input
type="text" name="username" value="" tabindex="1" /></label><br />
<label
>Пароль <input
type="password" name="password" value="" tabindex="2" /></label
>
<input
type="submit" tabindex="3" class="enter" value="Войти" /><
br />
<div
class="remember-pass">
<a
href="http://passport.sape.ru/account/password/recover/">Напомнить<br
/>пароль<
/a>
<
/div>
<
/form>
Код мы получили. Давайте его детально разберем и посмотрим что у нас есть в наличие:
1. адрес (хост), которому отсылается запрос https://auth.sape.ru/login/
2. метод передачи Post
3. передаются такие переменные act=login, r=http://www.sape.ru/, username = имя пользователя (присваивается, когда пользователь вводит его в форму), password = пароль пользователя (присваивается, когда пользователь вводит его в форму).
Вот и все, довольно немного информации. попробуем на ее основе составить правильный запрос к сайту sape.ru.
<?php
$curl = curl_init(); // инициализируем cURL
/*Дальше устанавливаем опции запроса в любом порядке*/
//Здесь устанавливаем URL к которому нужно обращаться
curl_setopt($curl, CURLOPT_URL, 'https://auth.sape.ru/login/');
//Настойка опций cookie
curl_setopt($curl, CURLOPT_COOKIEJAR, 'cook.txt');//сохранить куки в файл
curl_setopt($curl, CURLOPT_COOKIEFILE, 'cook.txt');//считать куки из файла
//устанавливаем наш вариат клиента (браузера) и вид ОС
curl_setopt($curl, CURLOPT_USERAGENT, "Opera/10.00 (Windows NT 5.1; U; ru) Presto/2.2.0");
//Установите эту опцию в ненулевое значение, если вы хотите, чтобы PHP завершал работу скрыто, если возвращаемый HTTP-код имеет значение выше 300. По умолчанию страница возвращается нормально с игнорированием кода.
curl_setopt($curl, CURLOPT_FAILONERROR, 1);
//Устанавливаем значение referer - адрес последней активной страницы
curl_setopt($curl, CURLOPT_REFERER, 'http://www.sape.ru/');
//Максимальное время в секундах, которое вы отводите для работы CURL-функций.
curl_setopt($curl, CURLOPT_TIMEOUT, 3);
curl_setopt($curl, CURLOPT_POST, 1); // устанавливаем метод POST
//ответственный момент здесь мы передаем наши переменные
//замените значения your_name и your_pass на соответственные значения Вашей учетной записи
curl_setopt($curl, CURLOPT_POSTFIELDS, 'r=http://www.sape.ru/&act=login&username=your_name&password=your_pass');
//Установите эту опцию в ненулевое значение, если вы хотите, чтобы шапка/header ответа включалась в вывод.
curl_setopt($curl, CURLOPT_HEADER, 1);
//Внимание, важный момент, сертификатов, естественно, у нас нет, так что все отключаем
curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);// не проверять SSL сертификат
curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 0);// не проверять Host SSL сертификата
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);// разрешаем редиректы
$result = curl_exec($curl); // выполняем запрос и записываем в переменную
curl_close($curl); // заканчиваем работу curl
echo $result; // собственно печатаем результат
?>
Вставьте этот код, в Ваш скрипт, предварительно поменяв значение переменных username и password, и вуаля, перед Вами должна открыться главная страница sape.ru, авторизированного пользователя.
Еще раз напомню, Ваш веб сервер должен быть собран с поддержкой ssl (он же https) протокола.
Более детальную информацию по опциям cURL Вы можете найти здесь
Творческих Вам успехов.