superglobal ayarı varsayılan değer

2 Cevap

Ben bir Zaman Çizelgesi Yönetimi web sitesinde çalışıyoruz. I index.php olarak benim ana sayfa var

//index.php (only relevant portion shown)
<?php
      session_start();

    if($_SESSION['logged']=='set')
    {

       $x=$_SESSION['username'];

              echo '<div align="right">';
              echo 'Welcome ' .$x.'<br/>';
              echo'<a href="logout.php" class="links">&nbsp;<b><u>Logout</u></b></a>' ;   

    }   

    else if($_SESSION['logged']='unset')
    {
             echo'<form id="searchform" method="post" action="processing.php">
                  <div>
                  <div align="right">
                  Username&nbsp;<input type="text" name="username" id="s" size="15" value="" />
                  &nbsp;Password&nbsp;<input type="password" name="pass" id="s" size="15" value="" />
                  <input type="submit" name="submit" value="submit" />
                  </div>
                  <br />
                  </div>
                  </form> ';

     }
?>

Karşılıklı sorunun bu senaryonun ilk çalıştırma sırasında bir hata Notice: Undefined index: logged in C:\wamp\www\ps\index.php olsun ama sayfayı yenileyerek sonra hata kaybolur olmasıdır.

Nasıl bu sorunu düzeltebilirsiniz? logged kullanıcı veya olmayan giriş olup olmadığını belirlemek yardımcı olan bir değişkendir. Kullanıcı oturum açtığında $_SESSION['logged'], aksi unset ayarlanır. I $_SESSION['logged'] unset önce komut dosyası yürütme olmak için varsayılan değer istiyorum. Bu sorunu nasıl çözebilirim?

2 Cevap

Oturumu ilk başladığında, $_SESSION boş bir dizidir ve $_SESSION['logged'] yok. Ve başlatılmamış değişkenler veya dizi indisleri okuma erişimi (hata raporlama seviyesinin bildirimlerini kapsar verilen) bir uyarı atmak:

echo $undefinedVariable;

$emptyArray = array();
echo $emptyArray['undefined index'];

Değişken veya dizi dizin aslında var okumak istiyorsanız bu mücadele için test edilmelidir. Değişkenler için isset and for array indices you can either use isset çok ya da array_key_exists bulunmaktadır.

Eğer '@' sembolü, örneğin kullanırsanız siz de bir hata atma bir işlev önleyebilirsiniz @ Function_call ();.

Eğer gerçekten "($ _SESSION ['giriş'] = 'tanımsız') ise" yapmak istiyorsun? Eğer bir atama yapmak istiyorsanız, yaptırmayı düşünebilirsiniz kodunuzu daha okunaklı hale getirmek için "eğer". Aksi takdirde, muhtemelen Eşitlik işlecini kullanmak istedim. :-)