cURL PHP Cookie Alınmasını etkiler?

3 Cevap php

Ben düzgün bu soruyorum emin değilim.

Ben aynı sunucuda bulunan iki PHP sayfaları var. İlk PHP sayfası ekspirasyon ile bir çerez ve ikinci bir çerez ayarlanmış olup olmadığını görmek için denetler. ayarlı ise, bu "on" döndürür. Ayarlı değil ise, "off" döndürür.

If I just run the pages like
"www.example.com/set_cookie.php"
AND
"www.example.com/is_cookie_set.php"
I get an "on" from is_cookie_set.php.

İşte sorun, set_cookie.php dosyada ben is_set adında bir işlevi var. Bu fonksiyon aşağıdaki cURL yürütür ve ("on" veya "off") içeriğini döndürür. Ne yazık ki, içerikleri her zaman "kapalı" olarak döndürülür. Ben ("www.example.com / is_cookie_set.php") dosyayı elle kontrol ederseniz, ancak ben çerez kuruldu görebilirsiniz.

Heres fonksiyonu:

<?php
function is_set()
{
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://example.com/is_cookie_set.php');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$contents = curl_exec ($ch);

curl_close ($ch);

echo $contents;
}
?>

Ben sadece çerez ayarlanmış olmadığını denetleyen bir sayfayı kontrol etmek, çerezleri GET veya SET cURL kullanarak değilim, unutmayın.

Ben CURLOPT_COOKIEJAR ve CURLOPT_COOKIEFILE içine baktım, ama ben bu cURL aracılığıyla çerezleri ayarlamak için inanıyorum ve ben bunu yapmak istemiyorum.

3 Cevap

Ben bir karışıklık yapıyoruz inanıyorum. Eğer kıvırmak kullanırken, PHP (belki bir tarayıcı gibi) bir istemci gibi hareket sorun gitmek ve sizin için bu isteği yapacaktır. Bunun için çek kıvırın çerezleri geçerli tarayıcı tanımlama ile ilgisi olması. Sanırım.

Zaten is_set() fonksiyonu, bu istemci değil tarayıcı olarak PHP oyunculuk doğru olduğunu, devletler nc3b gibi, ben burada yapmaya çalıştığınız ne tamamen emin değilim ama sen farkında mısınız? Bu çerez testi her zaman başarısız (= hiçbir çerez ile dönecektir) anlamına gelir.

Çerezler saklanan by the client ve sunucuya her isteği ile birlikte gönderilir.

Bir çerez ayarlanmış olup olmadığını PHP öğrenmek istiyorsanız - Tabii, bunun için çerez olarak aynı etki alanında olması gerekir - ovasını if (isset($_COOKIE["cookiename"])) kullanabilirsiniz.

Belki uzak bir konağa bir çerez sorgulamak için bir çözüm oluşturmak için çalışıyoruz. Bunun için, bu SO soruya bakın:

Curl acts like your browser as a http client. If configured they both recceive and store cookies, but they are in no way related.

Curl doesn't use the browser cookies. If you want to use your browser cookies, you have to use the --cookie option switch. See the manpage for details: http://curl.haxx.se/docs/manpage.html
For example Firefox stores them in a file called cookies.txt. Under linux its located under ~/.mozilla/firefox/$profilefolder/cookies.txt

Hint: If you use Firefox >= 3.0 the cookies are stored in a sqlite database. If you want to use them with curl, you have to extract a cookies.txt file by yourself. Here are some examples how to do that: