1

我在网站的主目录中保持会话处于活动状态时遇到问题。

我有一个名为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 回答