Neden PHP 5 benim çerez değeri değiştirmek değil mi?

3 Cevap php

Ben giriş bilgi, isteğe bağlı bir tanımlama kaydedilir (girişte onay kutusu beni hatırlar) ve kullanıcı oturumunu kapattığında, kimlik doğrulama tanımlama değeri çerez izin logoutu sona erecek değişmeyecek bir web sitesi var.

Sistem dev ve evreleme hem de sunucularda düzgün çalışır ama nedense bizim üretim sunucusu çalışmaz. Biz tüm sunucular üzerinde PHP 5 ve Apache çalışıyor.

Teşekkürler.

Cookie (güvenlik için küçük düzenlemeler) ayarlamak için Fonksiyon:

function setCookieInfo($data,$expiry=0)
{
   if($data === false)
   {
       //remove cookie!
       $cookie = false;
       $expiry = 100; //should be in the past enough!
   }
   else
   {
       $serial = base64_encode(serialize($data));
       $hash = md5($XXX);
       $cookie = $hash."---".$serial;
   }

   if($_SERVER['SERVER_NAME']=='localhost')
   {
       $domain = null;
   }
   else
   {
       $domain = '.'.$_SERVER['SERVER_NAME'];
   }

   return setcookie('Auth', $cookie, $expiry, $this->controller->base, $domain);
}

3 Cevap

Bazı gerçek kodu gönderme yardımcı olabilir, ama ben çerez alanı kullanılmakta olan bir şey vardır ki bir tahmin tehlike olacak.

Çerezi silmek için tasarlanmıştır SetCookie aramanın bir trafik yakalama (örneğin www.fiddler2.com), tut ve Domain geçerli olduğu ve beklendiği gibi sona erme zamanı / değer olduğundan emin olun.

Cookie için etki ve yolunun doğru ayarlanmış olduğundan emin olun, PHP setcookie () fonksiyonu kullanarak varsayarak. Daha fazla bilgi için işlev için PHP's documentation edin.

Ben biraz daha bilgi olsaydı emin için söylemek mümkün olabilir. Eğer proje hakkında çok fazla ödün vermeden daha fazla bilgi verebilir misiniz? Nasıl dev, evreleme ve üretim sunucuları, ya da ne gibi olabilir en örneklere ait URL'ler hakkında?

Edit

Eğer yorumunuzda sağlanan bilgi dayanarak, ben yerine SERVER_NAME HTTP_HOST kullanarak denemenizi tavsiye ederim. SERVER_NAME size sanal sunucu kurulumu bağlı tuhaf bir değer veriyor olabilir. Sizin yol ya da oldukça doğru olmayabilir - bir '/' deneyin ve ne olursa olsun kullanıcı inç olan altdizinini mevcut olmalıdır

Ayrıca,

$this->controller->base

Bana CodeIgniter'ı veya Kohana kullanıyor olabileceğini düşündürüyor. Eğer öyleyse, onların çerez yardımcıları kullanmayı düşünebilirsiniz.