这是我的PHP代码:
<?php
session_start();
if ( !isset($_SESSION['index_visited']) )
{
$_SESSION['page2_visited'] = 1;
$_SESSION['wrong_number'] = 1;
header('Location: index.php');
}
?>
我认为$ _SESSION ['page2_visited'] = 1且$ _SESSION ['wrong_number'] = 1永远不会被设置。程序将我重定向到index.php就可以了。
我需要做些什么才能设置它?
答案 0 :(得分:1)
在重定向发生之前,会话可能没有时间正确保存自己。
使用session_write_close();强制在标题重定向之前保存会话。
所以它会是:
<?php
session_start();
if ( !isset($_SESSION['index_visited']) ) {
$_SESSION['page2_visited'] = 1;
$_SESSION['wrong_number'] = 1;
session_write_close();
header('Location: index.php');
}
?>
session_commit()也有效。它就像session_write_close()
的别名一样答案 1 :(得分:1)
我打赌$ _SESSION ['index_visited']已设置。也许你想要
if(isset($ _ SESSION ['index_visited'])和$ _SESSION ['index_visited'] == 1){
请记住,如果$ _SESSION ['index_visited']设置为0,则计为设置值。
答案 2 :(得分:1)
header('Location: index.php');
会覆盖会话设置标题。
可选的replace参数指示标头是应该替换先前的类似标头,还是添加相同类型的第二个标头。默认情况下它将替换,但如果您传入FALSE作为第二个参数,则可以强制使用相同类型的多个标头。
http://php.net/manual/en/function.header.php
所以请尝试:header('Location: index.php', false);
答案 3 :(得分:0)
我的错误。这不是$ _SESSION ['wrong_number']的地方,现在它正在运作。无论如何,谢谢你的答案。