2013-11-20 109 views
2

5.3.13中的奇怪行为?

我有一个变量$ isguest已被存储到前一页(previous.php)中的$ _SESSION ['isguest']中。在当前页面(main.php)中,我想确定用户是否已从previous.php重定向(因此是guest),或者他已直接登录到main.php。然后发生一些有趣的事情:

session_start(); 

echo "<pre>"; 
print_r($_SESSION); // At this point, [isguest] => 1; 
echo "</pre>"; 

    $isguest = '';  // this should have nothing to do with the SESSION variable that happens to have the same name, should it? 

echo "<pre>"; 
print_r($_SESSION); // At this point, [isguest] => 0; 
echo "</pre>"; 
+2

如果它将会话变量更改为空字符串,我会怀疑'$ isguest'是一个引用变量。但是,由于将常量变量设置为空字符串会将会话变量更改为数字,所以我想不出任何可能发生的情况。 – Barmar

+0

顺便说一句,养成使用'var_dump'而不是'print_r'的习惯,结果会更精确。 – Barmar

+1

我们可以看到$ _SESSION ['isguest']'被设置并与之交互的地方吗? – Ibu

回答

0

首先,我并不反对你的方式,但我认为你可以这样做。

而不是[ 'isguest'],创建一个名为[ '的loggedIn']会议,设置为0(假)。这将是,未登录,因此他/她是一个客人。

当用户登录时,将其设置为1(true)。所以用户确实已经登录了。

我希望这种帮助你。

相关问题