这是一个简单的PHP代码:
@session_start();
session_destroy();
if (isset($_SESSION['l']))
echo 'Session set';
else
echo 'Session unset';
$_SESSION['l'] = 9;
echo ' : ' . $_SESSION['l'];
以上程序的输出将始终如一 会话未设置:9 因为每次运行都会破坏所有会话 session_destroy 并创建新会话。
现在我正在评论 session_destroy:
//session_destroy
现在根据逻辑链,如果我重新运行脚本,会话现在不会被销毁,因此程序应该输出会话集:9 ,而它仍然显示会议未设置:9 。但是,再次运行脚本,我得到输出会话集:9 。
我的问题是为什么即使在评论 session_destroy 之后,我在第一次运行的脚本上获得会话未设置:9 。
答案 0 :(得分:0)
我的问题是为什么我会在第一次运行脚本时取消会话:9,即使在评论session_destroy之后。
因为您还没有设置变量$ _SESSION [' l']。这里的关键词在你自己的引用中:"在第一次运行"。
如果PHP是无所不知的,它可能知道您希望设置$ _SESSION [' l']。
但它不是,所以测试失败,你的脚本说'#34; Session Unset"。
现在,如果您使用会话集在您的网站上导航而未在其他网页上销毁,则会话 仍应记住$ _SESSION [' l']。 ..除非某些其他页面未设置该变量。
所以,如果你加载这个页面,然后导航一下并回到它,它应该说"会话设置"。如果它没有,那么您的会话机制本身就会出现问题。检查session.use_only_cookies的php.ini值和session.use_trans_sid的值。确保如果您阻止使用SID的cookie,如果没有,请确保您从服务器获取cookie。
答案 1 :(得分:0)
您的问题: 为什么我在第一次运行脚本时没有设置Session = 9,甚至在评论session_destroy之后。
因为您从未向$_SESSION['l']
提供值,因此当您运行代码时
if (isset($_SESSION['l']))
echo 'Session set';
else
echo 'Session unset';
isset($SESSION['l'])
始终返回 false
但是,如果您使用以下代码,则应获得预期的结果:
@session_start();
$_SESSION['l'] = 9;
session_destroy();
if (isset($_SESSION['l']))
echo 'Session set';
else
echo 'Session unset';
$_SESSION['l'] = 9;
echo ' : ' . $_SESSION['l'];
如果能帮助你@Himanshu Agrawal,请告诉我。)