1

Web サイトのホーム ディレクトリでセッションをアクティブに保つのに問題があります。

login.phpセッションが設定されているという名前のファイルがあります。次に、に移動しindex.phpて実行するとprint_R($_SESSION)、それが出力されます。それから私は行きます、gallery.phpそしてそれはなくなりました。逆の順序でも同じです。gallery.php最初に に行くと表示され、次に で消えindex.phpます。

関連があるのではないかと考えていphp.iniます。

編集:わかりました、これは「nav.php」と呼ばれる両方のページに含まれているインクルードファイルであることがわかりました

<?php 
session_start();
$logout = intval($_GET['logout']);
if(isset($logout)){
session_destroy();
//header('Location: '$_SERVER['PHP_SELF']);

}
echo '<a href="/index.php" title ="home" class="navbutton">home</a>

<a href="/gallery.php" title ="gallery"class="navbutton">gallery</a>
 <a href="/info.php"title ="info"class="navbutton">info</a>

<a href="/contact.php"title="contact"class="navbutton">contact</a>';

if(isset($_SESSION['names']) || isset($_SESSION['guestlogin'])){echo '<a href="'.$_SERVER['PHP_SELF'].'?logout=1" title="logout"class="navbutton">logout</a>';
echo'<a href="/gallery" title ="gallery"class="navbutton"> test gallery</a>';

}
else{echo '<a href="/login" title="login"class="navbutton">login</a>';
}
echo'<a href="/blog"title ="blog"class="navbutton">blog</a>

<a href="/prints"title ="prints"class="navbutton">prints</a>';?>

それはb / cでsession_destroyが含まれている可能性がありますか?また、含まれているすべてのファイルに session_start があるはずですか?

4

1 に答える 1

0
$logout = intval($_GET['logout']);
if(isset($logout)) {
  session_destroy();  
} 

ここに問題がありますか?$logout常に何らかの価値があります。値は何でも構いません。isset($logout)いつもそうですTRUE。次のように変更します。

if(isset($_GET['logout']) && $_GET['logout']) {
  session_destroy();  
} 

logout=1クエリ文字列でURL をたどった場合、これはユーザーをログアウトします。

于 2012-07-28T15:00:49.033 に答える