【发布时间】:2011-06-05 05:01:12
【问题描述】:
我想我不了解 PHP 中会话变量或会话本身的范围,因此提出了这个问题:
这是我的代码
if(session_id()!=""){
echo "Getting rid of session"."</br>";
session_destroy();
}
echo "Before session_start(): ".isset($_SESSION["first_date_of_week"])."</br>";
session_start();
echo "After session_start(): ".isset($_SESSION["first_date_of_week"])." ".$_SESSION["first_date_of_week"]->format("Y-m-d")."</br>";
输出是:
Before session_start():
After session_start(): 1 2011-01-09
为什么在会话变量上执行 isset(..) 时,它是在启动会话后直接设置的,即使我还没有使用或设置它?但是,它仍然具有与以前相同的值。
另外,session_id()="" 因为 if 子句永远不会被触发。我从来没有杀死会话,为什么它设置为“”? IE。我刷新页面并希望会话仍然存在。
如果已经设置了 isset(..) 函数,那么测试它是非常无用的......
提前致谢!
/尼克拉斯
【问题讨论】:
-
提示:
!session_id()==""被评估为(!session_id()) == "",而不是您(可能?)想到的!(session_id() == "")。使用!=运算符...
标签: php session apache2 session-variables