PHP: Cookie domain / subdomain kontrolü

5 Cevap php

Ben birden çok alt ile bir site üzerinde çalışıyorum, bazıları kendi oturum almak gerekir.

Ben o amele dışarı var düşünüyorum, ama ben anlamıyorum çerez kullanımı hakkında bir şey fark ettim. Ben onu açıklayan dokümanlar şey görmek, bu yüzden herkes burada sorulması üzerine dökmek için biraz ışık varsa ben görmek düşündüm bilmiyorum.

Ben sadece yaparsanız:

session_start();

Ben böyle bir oturum çerezi ile sonuna kadar:

subdomain.example.net

Ancak, çerez alanına kendimi ayarlamak için herhangi bir girişim yapmak, ya gibi

ini_set('session.cookie_domain', 'subdomain.example.net');

ya da benzeri

session_set_cookie_params( 0, "/", "subdomain.example.net", false, false);

Ben "tüm alt alanları (veya bu durumda alt-alt alanları) maç anlamına gelir inanıyoruz. Subdomain.example.net için bir cookie (açılış noktayı unutmayın) ile sonuna kadar.

Bu aslında tüm çerezler, sadece oturumu ile ne gibi görünüyor. Ben Çerez Alan kendimi ayarlamak, otomatik nokta bu etki ve bunun tüm subs anlamı, önüne gelmiştir. Ben etki alanını ayarlama yoksa, o zaman sadece sağ geçerli etki alanı kullanarak onu alır.

Herhangi bir fikir ne bu neden ve ne bu prepending nokta kontrol için ne yapabilirim?

Teşekkürler!

5 Cevap

PHP'nin çerez fonksiyonları otomatik olarak bir nokta ile $ etki önek. Eğer bu davranışı istemiyorsanız size header işlevini kullanabilirsiniz. Örneğin:

header("Set-Cookie: cookiename=cookievalue; expires=Tue, 06-Jan-2009 23:39:49 GMT; path=/; domain=subdomain.example.net");

Eğer "http://subdomain.example.net" altında PHP komut dosyası çalıştırırsanız, don't use the domain parameter:

setcookie('cookiename','cookievalue',time()+(3600*24),'/');

Siz "subdomain.example.net" ile bir çerez alacak (ve değil ". Subdomain.example.net")

RFC 6265 tüm okursanız, bir "ana-sadece" çerez sahip tek doğru yolu alanı özniteliği ayarlamak DEĞİL olduğunu fark edeceksiniz.

http://tools.ietf.org/html/rfc6265#section-5.4

Bu eski bir soru farkında ama ben bu sorunu ve yukarıdaki cevapların hiçbiri oldukça yaptım sahip oldu.

Ben bir alt etki alanı için oturum tanımlama ayarlamak istedim, ama aynı zamanda sadece_http ve güvenli etkinleştirin.

Bir lider önlemek için. alt etki Infront, Kevin ve stolsvik alanı özniteliği ayarlamak yok doğru.

Yani bu ve hala sadece_http ve güvenli modunu ayarlamak mümkün, şöyle NULL etki alanını ayarlamak için:

session_set_cookie_params(0, '/', NULL, TRUE, TRUE);

Şimdi sadece_http ile (. Bir lider olmadan) belirli bir alt için, bir oturum çerezi var ve ayarlamak true güvenli olacaktır.

Bu kimse (ben bu anlamaya birkaç saat geçirdim) yardımcı olabilir. Sonra kaynak dosyalarında değişiklik yapmak ve bunu test etmeden önce, düzgün tüm alanları ve alt etki alanları içinde PHPSESSIONID yok etmek tarayıcınızı kapatın.

Bu biraz zaman kazanmak umut!