не может использовать куки в cURL PHP - PullRequest
3 голосов
/ 04 октября 2010

Я использую cURL для разбора сайта.

http://www.hcmiu.edu.vn/bookforsale/showbooks.php

Для просмотра требуется сеанс. Если сеанса нет, то страница перенаправляется на:

http://www.hcmiu.edu.vn/bookforsale/perInfo.php

Я использую этот код для получения файлов cookie сеанса, но не знаю, почему не вижу изменений в файле cookies.txt

$urltopost = "http://www.hcmiu.edu.vn/bookforsale/perInfo.php";
$datatopost = array (
"name" => "abc",
"tel" => "99999999",
"email" => "abc@gmail.com",
"profession" => "abc",
"employer" => "abc",
"tel_work" => "99999999",
); 
$ch = curl_init($urltopost);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $datatopost);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookies.txt"); 

$returnData = curl_exec($ch);
$file = fopen("example.txt", "w");
fwrite($file, $returnData);
fclose($file);
curl_close($ch);

Однако я вижу:

Set-Cookie: PHPSESSID=1egb993objkrdp3gi5mpvs02g0; path=/ 

в шапке. Спасибо за любую помощь

-Edit: Я использую хитрый способ: я использую средство просмотра http для просмотра PHPSESSID в файлах cookie браузера. А затем я использую его для создания файла cookie для чтения cURL. Затем я мог пройти проверку сеанса веб-сервера для просмотра файла showbooks.php.

Ответы [ 3 ]

3 голосов
/ 05 октября 2010

Я использовал этот фрагмент кода, чтобы извлечь cookie из ответа сервера:

$returnData = curl_exec($ch);
$cookie = '';
$pattern = '/Set-Cookie:(.*?)\n/';
if (preg_match($pattern, $returnData, $result))
$cookie = $result[1];

Я описал свой опыт в в этом посте .Этот подход не использует файл cookie.


Что касается файл cookie , рассмотрите следующий совет из http://php.net/manual/en/book.curl.php:

Использовать абсолютный путь дляустановка переменных CURLOPT_COOKIEFILE & CURLOPT_COOKIEJAR.Чтобы упростить жизнь, используйте функцию realpath ("file.txt"), чтобы получить абсолютный путь.

2 голосов
/ 04 октября 2010

Попробуйте создать файл и предоставить ему глобальную привилегию чтения и записи.

Также попробуйте указать относительный путь (скажем, ./cookies.txt) вместо абсолютного пути к файлу cookie.

2 голосов
/ 04 октября 2010

это файл для записи? оно вообще существует?

...