PHP Curl, ошибка: браузер должен поддерживать сессионные куки? - PullRequest
1 голос
/ 07 мая 2011

В браузере появляется сообщение об ошибке:

HTTP / 1.1 500 Внутренняя ошибка сервера Дата: пт, 6 мая 2011 г. 20:25:28 GMT Сервер: IBM_HTTP_Server / 6.0.2.43 Apache / 2.0.47 (Unix) $ WSEP: Set-Cookie: JSESSIONID = 0000HpGRXpuwrdY_u0k-ecHKAFK: 14ekdcv70; Путь = / Соединение: закрыть Transfer-Encoding: chunked Content-Type: text / html; charset = ISO-8859-1 Content-Language: en Ошибка 500: Браузер должен поддерживать файлы cookie сеанса.

Как решить эту проблему?

вот что я сделал:

session_start();

$postData = http_build_query($_GET);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "\BuiltinObjectToken-VerisignClass3PublicPrimaryCertificationAuthority.crt");
    curl_setopt($ch, CURLOPT_URL, "https://zzzzzz.zzzzz.co.uk/zzz/zzzz/" . $form_link );
    curl_setopt($ch, CURLOPT_POST, 1 );
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postDataCapcha);
    curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookiefile");
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookiefile");
    curl_setopt($ch, CURLOPT_COOKIE, session_name() . '=' . session_id());
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $PagaeCapcha = curl_exec($ch); 

exit($PagaeCapcha);

Ответы [ 2 ]

1 голос
/ 07 мая 2011
Set-Cookie: JSESSIONID=0000HpGRXpuwrdY_u0k-ecHKAFK:14ekdcv70; Path=/ 

Это заголовок ответа, который изначально устанавливает cookie сеанса. Этот не будет сохранен в вашем банке cookiefile. Это временное печенье, и вы его выбрасываете.

Сначала вам нужно будет отправить запрос, который указывает, например, на домашняя страница. И только после этого отправьте фактический запрос данных в нужную конечную точку /zzz/zzzz/.

1 голос
/ 07 мая 2011

Проблема в том, что вы отправляете имя сеанса, который создала ВАША копия PHP.Это почти наверняка не имя сеанса, который создал сервер .co.uk.Таким образом, он видит, что ваш «браузер» не поддерживает файлы cookie - он пытается установить файл cookie сеанса с именем «JSESSIONSID», но вы отправляете обратно файл cookie с именем «PHP_SESSID» (или любой другой).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...