正在为每个页面创建PHP会话

时间:2014-10-18 15:15:55

标签: php session

问题就在于标题说每个页面都在创建php会话。所以,当我想从像这样的会话中获取变量时

session_start();
echo $_SESSION['error'];  

它说"未定义索引"。

问题在于,实际上是错误' index定义但不在当前会话中,因为php为每个页面创建了新会话。

我该如何解决这个问题?

注意:我将session_start();放在每个页面上。第一行,在header("location:error.php")之前我放session_write_close();,在标题之后还有die();方法。我正在使用localhost。使用最新版本的WAMP和JETBRAINS PHPSTORM。

修改---------------------

这是我为错误定义会话的地方(来自login.php页面)

session_start();
$_SESSION['error'] = "Enter both username and password";
header('Location:error.php');
exit;

当上面的代码运行时,会话名为" sess_amvrseubtusk0dpuo4fs35r0q1"已创建并且其中包含此行

error|s:32:"Enter both username and password";

这就是我想要读取会话的地方(这是来自error.php页面)

session_start();
echo 'SESSION: ' . $_SESSION['error'];

当上面的代码运行时,会话名为" sess_m08lf25stbhg75gj2h0n0vose0"已创建且为空。

我在Session目录中创建了所有两个会话文件,因此每个页面都有1个会话文件。

编辑2 ----------------------------------

这是我的php.ini文件 http://pastebin.com/JNsPdzjH

编辑3 ----------------------------------

带有更改的新php.ini文件" c:/ wamp / tmp" to" C:/ Users / nerzid / PhpstormProjects / Deneme / Session"

http://pastebin.com/Zaz37UPC

1 个答案:

答案 0 :(得分:1)

根据您originally posted question发布的内容,如果有人想知道的话。


您可能没有为$_SESSION['error']定义任何内容,至少不是您为代码发布的内容:

session_start();

echo $_SESSION['error'];

您首先需要为其分配一些内容。

例如:

session_start();

$_SESSION['error'] = "Error.";

echo $_SESSION['error'];

然后在后续页面上,检查会话是否设置=> isset()和/或空=> empty()或不。{/ p>

即:

if(isset($_SESSION['error']) && !empty($_SESSION['error'])){
echo $_SESSION['error'];
}

else{
echo "Session is not set";
// set a new one
}

如果从变量示例设置会话:

session_start();

$_SESSION['error'] = "Error.";

$error_x = $_SESSION['error'];

echo $error_x;

此外,使用标题时,请添加exit;

header("location:error.php")

exit;

总是


<强> 旁注:

由于您正在使用localhost,请确保该文件夹是可写的。