Tarayıcı: Cookie tazelede kaybetti

5 Cevap php

Ben Chrome tarayıcısı (diğer tarayıcılarda sorun yok) benim uygulama garip bir davranış yaşıyorum. Ben bir sayfayı yenileyin zaman, çerez doğru gönderdi ediliyor, ancak aralıklı tarayıcı bazı yenilemeler üzerinde tanımlama bilgisi geçirmek için görünmüyor.

Bu benim çerez ayarlanır nasıl:

$identifier = / some weird string /;
$key = md5(uniqid(rand(), true));
$timeout = number_format(time(), 0, '.', '') + 43200;
setcookie('fboxauth', $identifier . ":" . $key, $timeout, "/", "fbox.mysite.com", 0);

Bu benim sayfa başlıkları için kullanıyorum budur:

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Thu, 25 Nov 1982 08:24:00 GMT"); // Date in the past

Eğer çerez kullanımını etkileyebilecek Burada herhangi bir sorun görüyor musunuz? Herhangi bir öneriniz için teşekkür ederiz.

EDIT-01:

Bu çerez, bazı istekleri ile gönderiliyor değil gibi görünüyor. Bu aralıklı olur ve ben şimdi ALL tarayıcılar için bu davranış görüyorum. Herkes böyle bir durum geldi? Bir çerez isteğiyle gönderilen olmayacak herhangi bir durum var mı?

EDIT-02:

İşte HTTP Başlıkları şunlardır:

Request Method:GET
Status Code:200 OK

REQUEST HEADERS

Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Referer:http://fbox.mysite.com/dashboard
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US)
AppleWebKit/532.5 (KHTML, like Gecko)
Chrome/4.1.249.1045 Safari/532.5

RESPONSE HEADERS

Cache-Control:no-cache, must-revalidate
Content-Length:8903
Content-Type:text/html
Date:Tue, 06 Apr 2010 09:25:26 GMT
Expires:Thu, 25 Nov 1982 08:24:00 GMT
Last-Modified:Tue, 06 Apr 2010 09:25:26 GMT
Pragma:no-cache
Server:Microsoft-IIS/7.5
X-Powered-By:PHP/5.3.1 ZendServer

Tekrar teşekkürler, herhangi bir kılavuz için.

5 Cevap

Ben başlık bilgilerinizi gördükten aklınıza gelebilecek tek şey, çerez ayarlamadan önce PHP şey çıkış olmasıdır. Bu durumda, setcookie return false olmalı ve bir uyarı "oturumu Cookie gönderilemiyor - başlıklar zaten gönderildi" alırsınız Bart S. anlaşılacağı gibi, error_reporting(E_ALL) açmak ve setcookie dönüş değerini çıktısı deneyin Bu durum böyle değil doğrulamak için.

Ayrıca, sadece sadece bir isim ve değer temel durumda setcookie kullanmayı deneyin ve tekrar yanıt başlıklarını kontrol edin. Sonra setcookie hariç tüm kodu kesip ve eğer o çalışır, bölme kullanarak geri tüm kod getirmek ve fethetmek :)

Bir soru, bir öneri -

Soru - neden (zamanında Number_format (...) yapıyor), bir zamandan beri () + 43200 yeterli olmalıdır.

Öneri - Eğer istemci ve sunucu arasındaki saatlerin baktım. Büyük bir saat kayması ya da GMT size çok sona erecek nasip olan bir çerez yolluyorlar olduğunu bulabilirsiniz iki makine arasında ne zaman bir anlaşmazlık varsa sadece, ikisi arasında 12 saatlik bir fark veriyorsun yana yakın gelecekte.

Eğer çerezleri ele yolu tamamen iyi, her şey kod tamam görünüyor, sorun Chrome ile yalan gibi görünüyor.

Öncelikle bir Java uygulaması ile Chrome Issue# 3014 fırsatlar rağmen, bu karşılaştığınız ne gibi görünüyor.

Ben daha önce buna benzer bir sorunu gördüm. Ben yolun doğru olup olmadığını görmek için iki kez kontrol ederim.

Ben hayal ediyorum gibi www.domain.com (ileri-eğik çizgi ile) www.domain.com/, domain.com farklı

Bunun ötesinde, PHP uygun yazma izinleri olan dosyaya ait oturumları yazmak erişimi olduğunu kontrol edin (o dağıtımı bağlı olarak farklı bir dizin var, ama phpinfo() kullanmak için ne çalışıyor dizin size söylemeliyim.)

Ben önce bu iki çalıştırmak. Birincisi hiçbir hata verir ve yaşıyoruz ne taklit gibi görünüyor, ikinci bir çeşit dosya yazma erişim hatası verir ama hatalar gösterilmez eğer göremiyor olabilir.

Uygulama :/ http protokolü dosya veya servis edilir /?

Krom yerel uygulamalar ile çerezleri saklamak değildir, ve bu tasarımın tarafından bulunuyor. Siz komut satırı anahtarı bu davranışı değiştirebilirsiniz:

- Enable-file-çerezlerini