#php #session #cookies #curl
#php #сессия #файлы cookie #curl
Вопрос:
У меня есть эта функция:
function Connect($url, $post = 0, $postfields = '')
{
$ch = curl_init();
if($post > 0) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
}
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/joomla-cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/joomla-cookie.txt');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$exec = curl_exec($ch);
if($exec) { return $exec; } else { return 0; }
}
Я называю это так Connect($host)
И он всегда возвращает 0…
Комментарии:
1.
$host
предполагает, что вы отправляете «google.com «, где в качестве необходимого URL указанhttp://google.com
, что вы используете?2. @Sabeen я фактически отправляю его с https: // Может быть, это потому, что https:// а не http: // ? потому что » google.com » работает.
Ответ №1:
Попробуйте установить CURLOPT_SSL_VERIFYPEER и CURLOPT_SSL_VERIFYHOST в значение false. это должно сработать.
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
Комментарии:
1. @Sabeen Есть способ включить cookie для поддержки SSL тоже? Потому что сеанс сохраняется только при использовании http:// …
2. Я не думаю, что https должен влиять на способ хранения файлов cookie. Посмотрите на joomla-cookie.txt файл, чтобы посмотреть, что он содержит, это может дать вам некоторые подсказки.
3. @Sabeen Да, я не думаю, что это также должно влиять на это, но это так, лол. Я понятия не имею о файлах cookie.. Вот pastebin: pastebin.com/RX9vnEbT
4. Вы переходите между http и https?
5. попробуйте убедиться, что вы начинаете с https и отправляете на https. Я полагаю, что если вы перейдете между https и http, вы потеряете cookie. Также является ли домен одинаковым и для https. иногда сайты имеют secure.domain.com и т. Д
Ответ №2:
Проверьте, не было ли ошибки с запросом после curl_exec:
if(curl_errno($ch)){
echo 'Curl error: ' . curl_error($ch);
}
Это предоставит вам достаточно информации, чтобы узнать, была ли ошибка с запросом. Если ошибки не было, вы можете проверить запрос, отправленный после curl_exec, чтобы вы могли дважды проверить, что все отправленное на месте:
print_r(curl_getinfo($ch));
Комментарии:
1. Спасибо! я получаю ошибку SSL: ошибка Curl: проблема с сертификатом SSL, убедитесь, что сертификат CA в порядке. Подробности: ошибка: 14090086: Процедуры SSL: SSL3_GET_SERVER_CERTIFICATE: сбой проверки сертификата Идентификатор dSession: Ошибка Curl: проблема с сертификатом SSL, убедитесь, что сертификат CA в порядке. Подробности: ошибка: 14090086: процедуры SSL: SSL3_GET_SERVER_CERTIFICATE: проверка сертификата не удалась, поэтому это должно быть из-за https: //..