我正在LAMP服务器上开发一个Php项目。现在我面临会话变量和局部变量的问题。在我的系统中,first.php在session中设置值,然后在second.php中,我将这些会话变量设置为我的局部变量。然后采取行动并清除会话值。但我也松了我的局部变量中的值。我怎么能解决这个问题? 编码流程的结构如下:
在first.php中
$_SESSION['var'] = "test";
在second.php中
$var = $_SESSION['var'] ;
$_SESSION['var'] = "";
echo $var; // at this time ,i cant also see my local variable values
答案 0 :(得分:1)
如果这就是你的第一个和第一个第二个脚本,然后你在一个或所有脚本的开头肯定错过了session_start()
。
仔细查看您的php错误日志,您可能会更好地解释缺少的内容和错误。如果在使用会话的每个脚本的开头都有session_start()
,那么您的代码应该运行良好。
如果您没有显式调用session_start()
,那么变量$_SESSION
只不过是用户定义的变量,所以在第一个脚本中,您为用户定义的变量赋值,并在您只需调用不存在的用户定义变量的第二个脚本。请注意,php区分大小写,$_SESSION
与$_Session
不同。
除非通过引用分配变量,否则无法远程覆盖变量,请查看此示例:
$b = 1;
$a =& $b;
echo $a; // will output 1
$b = 2;
echo $a; // will output 2
Here很好地解释了引用如何在php中工作。
答案 1 :(得分:0)
您已启用register_globals。这确实非常糟糕,因为它允许最终用户在脚本中注入变量(每个示例使用cookie)。
它已被弃用。关闭它,快速(在php.ini中,或者如果你不能,在带有php_flag
指令的.htaccess中)。如果您的脚本依赖它,请更改您的脚本。