您好我在页面之间保持会话时遇到问题,代码在我之前运行php5的服务器上工作但在我最近的服务器上没有,我想知道它是否是一个bug?
<?php
session_start();
$_SESSION['session'] = $_POST['session'];
header("location: www.mysite.com/page1.php");
?>
<?php
session_start();
echo "Good morning" . $_SESSION['session']; //returns empty session always.
?>
任何想法?会话在第一页举行,但不在第二页。
答案 0 :(得分:2)
如果您错过了,请确保在使用session_start()
变量的每个页面上都$_SESSION
。
你应该检查你的php.ini文件,看看发生了什么。
确保session.use_cookies = 1
和session.save_handler = files
。
使用此测试页面查看它是一般PHP问题还是仅代码。
<?php
session_start();
if(isset($_SESSION)){
echo "Session variable exists<br/>";
if(!isset($_SESSION['test'])){
$_SESSION['test'] = "Success!";
echo "Variable has been set, refresh the page and see if stored it properly.";
}else{
echo $_SESSION['test'];
}
}else{
echo "No session variable has been created.";
}
?>
如果有效,那么它与您的代码有关。
如果您将会话变量设置为$_POST['session']
我是否假设您提交的表单中包含名为session
的输入?
此设置 应该。
的index.php
<form action='page0.php' method='POST'>
<input type='hidden' name='session' value='SPAAAAACE' />
<input type='submit' />
</form>
Page0.php
<?php
session_start();
$_SESSION['session'] = $_POST['session'];
header("location: www.mysite.com/page1.php");
?>
page1.php中
<?php
session_start();
echo "Good morning" . $_SESSION['session'];
?>
如果您使用的是无Cookie会话,则必须手动将SID
(session id)添加到标题重定向中,如下所示
header("location: www.mysite.com/page.php?".htmlspecialchars(SID));
如果问题仍然存在,则可能是许可问题 也许你不允许读取存储在服务器上的会话文件?
更新:OP评论说这是一个权限问题,问题现已解决
答案 1 :(得分:0)
您需要使用重定向传递会话ID。
还要确保在每个需要会话的页面顶部使用session_start()
答案 2 :(得分:0)
您必须致电
session_start();
在每个页面的第一行,您希望在
中保留会话答案 3 :(得分:0)
首先尝试使用
<?php session_start();
而不是
<?php
session_start();
如果问题仍然存在,请在 Netbeans 编辑器中打开您的脚本,看看是否在脚本的最开头发现了任何意外的字符。
此外,请确保$ _POST ['session']具有要在$ _SESSION ['session']中指定的值。
答案 4 :(得分:0)
通过以下方式开启错误报告:
error_reporting(E_ALL)
这可能会导致与您的问题相关的错误。很可能是未定义的索引会话通知。
您应该始终在Super Globals上进行检查。
<?php
session_start();
$_SESSION['session'] = (isset($_POST['session']))?$_POST['session']:null;
header("Location: www.mysite.com/page1.php");
die;
?>
答案 5 :(得分:0)
你的代码似乎是正确的,虽然我很确定$ _POST ['session']是空的。
你应该试试这个:
<?php
session_start();
$_SESSION['session'] = 'John Doe';
header("location: www.mysite.com/page1.php");
?>
<?php
session_start();
echo "Good morning" . $_SESSION['session']; //returns empty session always.
?>
看看这是否有效。我猜它会。
如果没有,请查看您的Cookie,也许他们已被停用。
然后,如果它有效,我可能因为$_POST['session']
为空或空,您确定发布了<input type="text" name="session" />
之类的内容吗?