[英]PHP session error A session had already been started and Undefined variable: _session
[英]“Undefined variable: _SESSION” VS. “A session had already been started”
嘿。 我有一些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'];
}
输出:
注意:未定义的变量:第19行的D:..... \\ main.php中的_SESSION
注意:未定义的变量:第21行的D:..... \\ main.php中的_SESSION
空值
pre_dump代码:
function pre_dump($var)
{
echo '<pre>';
var_dump($var);
echo '</pre>';
}
我自己发现了这个错误。 在我的脚本中的某个地方有一个session_start(),我没有注意到。 一切似乎现在都有效。
我最近也遇到了同样的问题。 我无法访问$ _SESSION变量的内容。
1)这是在声明session_start();
之前尝试访问$ _SESSION变量的结果session_start();
在我自己的情况下,我已经在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();
希望这可以帮助任何偶然发现同样问题的人。 虽然这是在一个较晚的时间。
对我来说就像unset($_SESSION);
被称为。
无论您是否运行session_start(),$ _SESSION始终存在。 所以我认为其他一些必然会导致你的错误。
你可以发布代码吗? 可能是你在某处取消了变量(参见此链接 )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.