所以经过大量的反复试验后,我设置了一些东西来测试我的会话是否设置,如下所示:
<?php
session_start();
if (isset($_SESSION['email'])) {
echo "Logged In!";
}
else {
echo "NOT LOGGED IN!";
}
?>
我意识到登录后(重定向到网站的主页)在重新加载整个主页之前,会话未设置。
有没有人经历过这样的事情和/或知道如何解决这个问题?
提前致谢!
答案 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="?">< 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();