Bir PHP oturum boş olup olmadığını nasıl kontrol edebilirim?

5 Cevap php

Bu kötü bir uygulama mı?

if ($_SESSION['something'] == '')
{
    echo 'the session is empty';
}

Onun boş olup olmadığını kontrol etmek veya ayarlanmamış bir yolu var mı? Ben aslında bu yapıyorum:

if (($_SESSION['something'] == '') || (!isset($_SESSION['something'])) {
    echo 'the session is either empty or doesn\'t exist';
}

!isset sadece denetler yoksa bir $_SESSION[''] var ve orada değil, değerler dizi ya da olup olmadığını kontrol etmez

5 Cevap

Ben kullanmak isset and empty olur:

session_start();
if(isset($_SESSION['blah']) && !empty($_SESSION['blah'])) {
   echo 'Set and not empty, and no undefined index error!');
}

array_key_exists is a nice alternative to using isset tuşları kontrol etmek için:

session_start();
if(array_key_exists('blah',$_SESSION) && !empty($_SESSION['blah'])) {
    echo 'Set and not empty, and no undefined index error!');
}

Eğer okuma veya oturum diziye yazmadan önce session_start aradığınız emin olun.

Kimin varlığı Eğer emin değilseniz bir değişken erişmeden önce (özellikle dizi anahtarları için) isset, empty veya array_key_exists kullanın. Yani ikinci örnekte sırasını değiştirin:

if (!isset($_SESSION['something']) || $_SESSION['something'] == '')

Sen $ _SESSION dizide kaç tane girişleri görmek için sayısı () işlevini kullanabilirsiniz. Bu iyi bir uygulama değildir. Yerine oturum başlatılmak veya değil wheter denetlemek için kullanıcıya (veya benzer bir şey) kimliği ayarlamanız gerekir.

if( !isset($_SESSION['uid']) )
    die( "Login required." );

(Eğer birisi açmış olup olmadığını kontrol etmek istediğiniz varsayılarak)