设置会话var

时间:2011-02-11 15:02:12

标签: php session

这是我的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就可以了。

我需要做些什么才能设置它?

4 个答案:

答案 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']的地方,现在它正在运作。无论如何,谢谢你的答案。