嘿。 我有一些PHP脚本。在其中一个我有代码session_start(),当我在另一个脚本中再次有session_start()时,我收到通知:
注意:会话已经开始......
这是合乎逻辑的。但当我删除它时,我收到错误/通知:
注意:未定义的变量:_SESSION
为什么呢?我该如何解决?当我在脚本中有两个地方的session_start()时,脚本工作正常(只是稍微注意一下),但是当我没有两个session_start()时根本不起作用。
唯一的解决方案是
error_reporting(E_ALL ^ E_NOTICE);
在我的剧本中?仅仅忽略通知并不是那么糟糕的做法?
修改
我的部分代码:
try {
//session_start();
$STH = DB::prepare ( "UPDATE users SET DJ_name=?, DJ_showname=? WHERE id=?" );
$STH->execute(array($_POST['DJ_name'], $_POST['DJ_showname'], $_SESSION['userid']));
pre_dump($_SESSION);
$_SESSION['DJ_name'] = $_POST['DJ_name'];
$_SESSION['DJ_showname'] = $_POST['DJ_showname'];
}
输出:
注意:未定义的变量:D中的_SESSION:第19行的..... \ main.php
注意:未定义的变量:D中的_SESSION:第21行的..... \ main.php
NULL
pre_dump代码:
function pre_dump($var)
{
echo '<pre>';
var_dump($var);
echo '</pre>';
}
答案 0 :(得分:4)
答案 1 :(得分:0)
听起来像是unset($_SESSION);
。
答案 2 :(得分:0)
我最近也遇到了同样的问题。我无法访问$ _SESSION变量的内容。
1)这是因为在声明session_start();
之前尝试访问$ _SESSION变量。在我自己的情况下,我已经在header.php文件中启动了一个会话。但我在include语句之前访问了$ _SESSION变量。实施例;
<?php
$username = $_SESSION['username'];
//do some logical operation!!!
?>
<?php include("header.php");?>
而不是做这样的事情
<?php include("header.php");?>
<?php
$username = $_SESSION['username'];
//do some logical operation!!!
?>
2)可能导致此问题的另一件事,可能是无法在所有可能需要使用
访问$ _SESSION变量的文件的顶部启动会话session_start();
希望这有助于任何遇到同样问题的人。虽然这是在晚些时候发生的。
答案 3 :(得分:-1)
$ _ SESSION始终存在。所以我认为其他一些必然会导致你的错误。
你可以发布代码吗?可能是你在某处取消了变量(参见this link)。