Доброго времени суток!!!
Требуется авторизоваться на сайте с помощью cURL .
Форма запроса:
[html]<form id="index" action="https://www.needlive.com/studiologin/index.php" method="post" enctype="multipart/form-data">
<input type="hidden" id="client_datetime" name="client_datetime" value="" />
<input type="text" name="PerformerID" id="PerformerID" maxlength="50" value="" />
<input type="password" name="PPassword" id="PPassword" maxlength="50" value="" />
<input type="submit" id="mlogin" name="mlogin" value="Login" />
<input type="text" name="StudioID" id="StudioID" maxlength="50" value="" />
<input type="password" name="SPassword" id="SPassword" maxlength="50" value="" />
<input type="submit" id="slogin" name="slogin" value="Login" />
</form>[/html]
Содержание запроса:
Content-Type=multipart/form-data; boundary=---------------------------41184676334
POSTDATA =-----------------------------114782935826962
Content-Disposition: form-data; name="client_datetime"
Wed Jan 13 2010 04:49:35 GMT+0000
-----------------------------114782935826962
Content-Disposition: form-data; name="PerformerID"
login
-----------------------------114782935826962
Content-Disposition: form-data; name="PPassword"
password
-----------------------------114782935826962
Content-Disposition: form-data; name="mlogin"
Login
-----------------------------114782935826962
Content-Disposition: form-data; name="StudioID"
-----------------------------114782935826962
Content-Disposition: form-data; name="SPassword"
-----------------------------114782935826962--
Пишу такой код:
[php]<?php
$date=date("D M d Y H:i:s \G\M\TO");
$postdata=array(
'client_datetime'=>'.$date.',
'PerformerID'=>'login',
'PPassword'=>'password',
'mlogin'=>'Login',
'StudioID'=>'',
'SPassword'=>''
);
// вход в систему
// имя хоста, куда будем заходить
$hostname = 'www.mysite.com';
// инициализация cURL
$ch = curl_init('https://'.$hostname.'/studiologin/index.php');
// получать заголовки
curl_setopt ($ch, CURLOPT_HEADER, 1);
// если ведется проверка HTTP User-agent, то передаем один из возможных
допустимых вариантов:
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT
5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3');
// елси проверятся откуда пришел пользователь, то указываем допустимый
заголовок HTTP Referer:
curl_setopt ($ch, CURLOPT_REFERER,
'https://'.$hostname.'/studiologin/index.php');
// использовать метод POST
curl_setopt ($ch, CURLOPT_POST, 1);
// сохранять информацию Cookie в файл, чтобы потом можно было ее использовать
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'C:\AppServ\www\cookie.txt');
curl_setopt($ch,CURLOPT_COOKIEFILE,'C:\AppServ\www\cookie.txt');
// передаем поля формы
curl_setopt ($ch, CURLOPT_POSTFIELDS,$postdata);
// возвращать результат работы
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
// не проверять SSL сертификат
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
// не проверять Host SSL сертификата
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
// это необходимо, чтобы cURL не высылал заголовок на ожидание
curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Expect:'));
// выполнить запрос
curl_exec ($ch);
// получить результат работы
$result = curl_multi_getcontent ($ch);
// вывести результат
echo $result;
// закрыть сессию работы с cURL
curl_close ($ch);
?>[/php]
Выдает это:
HTTP/1.1 302 Found Server: nginx/0.7.64 Date: Wed, 13 Jan 2010 05:15:25 GMT Content-Type: text/html Connection: keep-alive X-Powered-By: PHP/5.1.6 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: member_skin=skin2; expires=Fri, 12-Feb-2010 05:15:25 GMT; path=/; domain=.needlive.com location: /performerarea/ Content-Length: 0
Что я делаю неправильно? Подскажите пожалуйста!
cURL+https+multipart/form-data
Вопрос закрыт!
Решается добавлением строки:
curl_setopt ($ch, CURLOPT_HEADER, 1);
Всем спасибо!
Решается добавлением строки:
curl_setopt ($ch, CURLOPT_HEADER, 1);
Всем спасибо!