Session变量的未定义索引

时间:2014-10-04 17:40:43

标签: php session

我按下提交按钮时设置会话变量,如下所示:

<?php
$submit = @$_POST["submit"];
if($submit){
    $_SESSION['id'] = $id;
}
?>

<form action="add.php" method="POST">
        <input type="submit" name="submit" value="Add">
</form>

但是,当我这样做时,在页面add.php中:

print_r($_SESSION['id'];

我收到以下错误:

Undefined index: id 

我对会话很陌生,所以仍然试图掌握它们,但我认为我所做的部分$_SESSION['id'] = $id;是我将索引id定义为的值$id变量?有人可以解释我哪里错了吗?

更新

如果您想知道我是否在使用session_start():在页面顶部附带表单,我会在顶部包含require_once './init.php';的标题页。在add.php的顶部,我只有require_once './init.php';行(我不在add.php中包含头文件,因为该页面在执行完代码后会立即重定向。

init.php文件中有以下内容:

<?php
session_start();
require_once 'configurate.php'; //database info
?>

2 个答案:

答案 0 :(得分:0)

session_start()

中设置任何值之前,您应该致电$_SESSION

像这样更改您的代码

<?php
session_start();
$submit = @$_POST["submit"];
if($submit){
    $_SESSION['id'] = $id;
}
?>

<form action="add.php" method="POST">
        <input type="submit" name="submit" value="Add">
</form>

答案 1 :(得分:0)

  • 我希望您在设置和检索$_SESSION
  • 中的值之前,已通过session_start初始化了会话
  • 如果通过$_POST["submit"]提交的值与false(例如""0)比较,您的条件if($submit)不会成功,请更好地使用{{1}而不是