2009-08-07 18 views
5

Tanımlama bilgisi olmayan bir istemci için PHPSESSID değerini bir HTTP GET değişkeni ile göndermeye çalışıyorum.URL’de PHPSESSID’i nasıl gönderebilirim?

Bunu, her bağlantıya ?PHPSESSIONID=123ABC ekleyen çeşitli drupal uygulamalarda gördüm, ancak bunu PHP'de nasıl belirtebilirim ve GET parametresini değiştirmenin herhangi bir yolu olabilir mi? Token = 123ABC, hatta HTTP POST ile gönderildi?

Standart LAMBA yığını, Zend çerçevesini çalıştırarak.

Teşekkürler!

+0

Oturum kimliğini GET değişkenlerine koymamalısınız, bu bir güvenlik riskidir. Çerezleri desteklemeyen alakalı bir tarayıcı yoktur. – stefanw

+2

stefanw - özellikle belirtildiği gibi çerezsiz bir müşteri içindir. – Sledge

cevap

7

veya olmasın bu PHP seçenekleri tarafından yapılandırılır: İlki ayarlanırsa mümkünse, çerezler kullanılacaktır

.
PHP, çerezlerin etkin olup olmadığını tespit etmeli ve bunları yalnızca istemci tarafından destekleniyorsa kullanmalıdır.


yerine çerez GET ile oturum id geçmesini sağlamak için, Defaut tarafından, oturum kimliği sadece çerezleri tarafından geçirilir, yani varsayılan (olarak devre dışıdır session.use_trans_sid, aktive gerekebilir - asla tarafından GET).

Ancak, bu seçenek etkinleştirildiğinde, PHP en azından en az ilk sayfa için sitenizin GET'e geçecektir. çerezleri destekleyip desteklemediklerini kontrol etmenin tek yolu, bir tanesini ayarlayarak ve bir sonraki sayfada okumayı denemektir. ayrıca bir almak isteyebilirsiniz ve bu güzel :-(


değil Ve - Ve muhtemelen söyleyebilirim arama motorları dahil çerezleri desteklemeyen
Ve kullanıcılar, bu oturum kimliğini olacak anahtar (kümesi yerine "PHPSESSID" nin etmek için "belirteç", yani) daha fazla detay için


adını ayarlamak için session.name bakmak, sen kılavuzun Session Handling bölümüne göz alabilir :-)

1

PHPESSID değerini session_name() veya session.name kullanarak php.ini dosyanıza (veya ini_set() kullanarak) değiştirebilirsiniz.

Daha akıllı istemciler için, session.use_trans_sid php.ini seçeneği vardır - bunun sorunlara neden olabileceğinin farkında olmanız gerekir - örneğin, oturum kimlikleri olan URL'leri birbirinden geçen kullanıcılar veya bu tür URL'leri toplayan arama motorları. Kurabiye kullanma

1

anually:

if ($_REQUEST['token']) 
    session_id($_REQUEST['token']); 
session_start(); 

print("foo=".$_SESSION['foo']++."<br />". 
     "<a href={$PHP_SELF}?token=".session_id().">link</a><br />"); 
print("<form method=POST>". 
     "<input type=hidden name=token value=".session_id()." />". 
     "<input type=submit /></form>"); 
0
  1. bir giriş sayfası oluşturun, kullanıcının doğru kimliği ve şifre olmadan giriş olmamalıdır.
  2. Oturum açtıktan sonra kullanıcı eve gelir, burada kullanıcı oturumu kapatabilir ve giriş sayfasına geri döner.
  3. Kullanıcı giriş sayfasına girmeden ana sayfaya erişmemelidir.
İlgili konular