会话未设置,直到页面重新加载?

时间:2014-09-15 23:49:34

标签: php session session-cookies reload isset

所以经过大量的反复试验后,我设置了一些东西来测试我的会话是否设置,如下所示:

<?php
session_start();
if (isset($_SESSION['email'])) {
    echo "Logged In!";
}
else {
    echo "NOT LOGGED IN!";
}
?>

我意识到登录后(重定向到网站的主页)在重新加载整个主页之前,会话未设置。

有没有人经历过这样的事情和/或知道如何解决这个问题?

提前致谢!

4 个答案:

答案 0 :(得分:0)

这段代码对我来说是一个测试。确保您的操作顺序与此匹配。如果这不起作用,请确保您在浏览器中允许cookie。如果做不到这一点,你的PHP / Apache配置可能就会出现问题。

<?php
session_start();

if (!isset($_GET['test']))
{
    $_SESSION['email'] = "something ".time();
    header('location:?test');
    die;
}else{
    echo 'Value: "' .$_SESSION['email']. '"';
    echo '<br /><br /><a href="?">&lt; Do again</a>';
    die;
}
?>

答案 1 :(得分:0)

您的网页需要按此顺序设置(特别是session_start()):

的login.php

<?php
session_start();
// 1) Some code here to check database if username and password check out
// 2) If username and password check out and validation is good
// 3) Redirect to your next page (index.php in this case)
?>

index.php(主页)

<?php
session_start();
?><!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1><?php
if(isset($_SESSION['email'])) { ?>
EMAIL IS SET!! Great job!
<?php } else { ?>
UM...No..<?php } ?></h1>
</body>
</html>

答案 2 :(得分:0)

感谢所有帮助人员,但我发现了问题。 显然,我必须在重定向文件中对我的网址非常具体。

我有header('location: http://domain.com');

而不是

header('location: http://www.domain.com');

... 捂脸

答案 3 :(得分:0)

我正在度过一段可怕的时光。我有一个索引页面,每次加载内容div加载特定的PHP脚本通过包。我通过将GET变量传递给index.html来以这种方式控制网站的导航,因此无论您正在查看什么内容,我的索引页面每次都会加载。 index.html的第一行是:

<?php
session_start();

我在索引页面上作为包运行的一些php脚本会设置会话变量,然后重定向到索引页面,会话变量就不会存在,或者它们不会被设置为它们应该是什么。它让我发疯,我可以ctrl-F5,有时他们会出现,有时不会出现。我唯一可以想到的是,它在某种程度上为地址栏中的不同网址打开了不同的会话(通过不同的网址,我的意思是具有不同GET参数的网址。简单地将它放在我的index.html的开头解决了我所有的问题我认为这会导致每次都打开同一个会话:

   <?php
   session_name('SessName');
   session_start();