Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: cURL взять\отдать куки
 
 автор: BMW   (21.05.2009 в 13:03)   письмо автору
 
 

Здравствуйте, подскажите как через cURL записать куки, которые дает ресурс при авторизации login и pass, а при редиректе этого ресурса отдавать давшие мне куки

  Ответить  
 
 автор: VITtek   (21.05.2009 в 21:33)   письмо автору
 
   для: BMW   (21.05.2009 в 13:03)
 

<?php 
// Соединение - 1 
$ch curl_init("https://site.ru/");
//получаем заголовки CURLOPT_HEADER, 1
curl_setopt ($chCURLOPT_HEADER1);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
//httpS
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
curl_setopt($chCURLOPT_SSL_VERIFYHOSTfalse);
// отправляем методом post - login и pass
curl_setopt($chCURLOPT_POSTFIELDS"login=admin&pass=12345");
$output curl_exec ($ch);
curl_close($ch);
// конец Соединение - 1

// парсим из заголовков Set-Cookie(куки две штуки: wss=345 и nos=tr667) и Location (редирект=https://site1.ru/)
preg_match_all ('|Set-Cookie: wss=(.*);|isU',$output,$content_com_today_4);
preg_match_all ('|Set-Cookie: nos=(.*);|isU',$output,$content_com_today_5);
preg_match_all ('|Location: (.*)Connection|isU',$output,$content_com_today_6);

// Соединение - 2 (редирект и куки)
$ch2 curl_init($content_com_today_6[1][0]);
curl_setopt ($ch2CURLOPT_HEADER1);
curl_setopt($ch2CURLOPT_RETURNTRANSFER1);
curl_setopt($ch2CURLOPT_SSL_VERIFYPEERfalse);
curl_setopt($ch2CURLOPT_SSL_VERIFYHOSTfalse);
//Отправляем куки
curl_setopt ($ch2CURLOPT_COOKIE"wss=".$content_com_today_4[1][0]);
curl_setopt ($ch2CURLOPT_COOKIE"nos=".$content_com_today_5[1][0]);
$output2 curl_exec ($ch2);
curl_close($ch2);

print_r ($output2);

?>

  Ответить  
 
 автор: Андрюха.   (31.05.2009 в 23:57)   письмо автору
 
   для: VITtek   (21.05.2009 в 21:33)
 

Я по тому же вопросу - у меня wss и nos меняются на key, sid и uid. При передаче только этих чисел - выбрасывает ошибку - bad request
как поступить...

  Ответить  
 
 автор: Волки   (01.06.2009 в 00:02)   письмо автору
 
   для: Андрюха.   (31.05.2009 в 23:57)
 

есть замечательная опция: CURLOPT_COOKIEJAR
от этого имени и ищите, не спрашивайте готовых решений

  Ответить  
 
 автор: Андрюха.   (01.06.2009 в 10:32)   письмо автору
 
   для: Волки   (01.06.2009 в 00:02)
 

и CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR использую - с яндексом катит и файл куков создается, а с другими - не хочет, даже файла нет с непройденной авторизацией, в чем может анекдот быть.....

  Ответить  
 
 автор: VITtek   (01.06.2009 в 17:11)   письмо автору
 
   для: Андрюха.   (01.06.2009 в 10:32)
 

что угодно может быть .... сайт напиши

  Ответить  
 
 автор: Андрюха.   (01.06.2009 в 19:58)   письмо автору
 
   для: VITtek   (01.06.2009 в 17:11)
 

http://vshtate.ru/ пробую пройти

  Ответить  
 
 автор: Андрюха.   (03.06.2009 в 08:07)   письмо автору
 
   для: VITtek   (01.06.2009 в 17:11)
 

через такую форму проходит, если руцями
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html id="vshtate" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en"><head>


    <title>В Штате | Добро пожаловать</title>
  </head><body>
        <form action="http://vshtate.ru/login" method="post">
        <input name="tp" value="comp" type="hidden">
            <input name="email" type="text"><br>
            <input name="pass[comp]" type="password"><br>
            <input name="loginComp" type="submit" value="Вход">
        </form>
</body></html>

  Ответить  
 
 автор: VITtek   (03.06.2009 в 13:38)   письмо автору
 
   для: Андрюха.   (03.06.2009 в 08:07)
 


<?php 
$email
='xxxxx@yandex.ru';
$pass='*******';

$ch curl_init("http://vshtate.ru/login");
curl_setopt ($chCURLOPT_USERAGENT"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10");
curl_setopt ($chCURLOPT_TIMEOUT30);
curl_setopt ($chCURLOPT_RETURNTRANSFER1); 
curl_setopt ($chCURLOPT_HEADER1);
curl_setopt ($chCURLINFO_HEADER_OUT1);
curl_setopt ($chCURLOPT_SSL_VERIFYPEER0);
curl_setopt ($chCURLOPT_SSL_VERIFYHOST0);
curl_setopt ($chCURLOPT_HTTPHEADER, array('Expect:'));
curl_setopt ($chCURLOPT_REFERER'http://vshtate.ru/');
curl_setopt($chCURLOPT_POSTFIELDS"tp=comp&email=".$email."&pass%5Bcomp%5D=".$pass);
$result curl_exec ($ch);
curl_close($ch);

preg_match_all ('|Set-Cookie: (.*);|isU',$result,$set);
preg_match_all ('|Location: /id(\d+)|is',$result,$location);

$ch curl_init("http://vshtate.ru/id".$location[1][0]);
curl_setopt ($chCURLOPT_USERAGENT"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10");
curl_setopt ($chCURLOPT_TIMEOUT30);
curl_setopt ($chCURLOPT_RETURNTRANSFER1); 
curl_setopt ($chCURLOPT_HEADER1);
curl_setopt ($chCURLINFO_HEADER_OUT1);
curl_setopt ($chCURLOPT_SSL_VERIFYPEER0);
curl_setopt ($chCURLOPT_SSL_VERIFYHOST0);
curl_setopt ($chCURLOPT_HTTPHEADER, array('Expect:'));
curl_setopt ($chCURLOPT_REFERER'http://vshtate.ru/login');
curl_setopt ($chCURLOPT_COOKIE$set[0][0]);
curl_setopt ($chCURLOPT_COOKIE$set[0][1]);
curl_setopt ($chCURLOPT_COOKIE$set[0][2]);
$result curl_exec ($ch);
curl_close($ch);
print_r ($result);
?>


P.S. В денвере работать не будет, т.к. там палиться localhost … заливай на хостинг )))

  Ответить  
 
 автор: Андрюха.   (05.06.2009 в 03:00)   письмо автору
 
   для: VITtek   (03.06.2009 в 13:38)
 

даа, на локали не хочет. Попробую, может как зеркалом пойдет - mysite.com типа

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования