如果访问者未登录,我正在尝试将我的索引页面重定向到目标网页。
(的index.php)
<?php
$newURL = "http://website.com/landing.php";
if (!isset($_SESSION)) {
session_set_cookie_params(86400);
session_start();
}
else
{
header('Location: '.$newURL);
die();
}
....................(index.php的其余部分)
当访问者未登录时,没有任何反应,他们只是继续坐在index.php上 有没有明显的理由说明为什么这不起作用?
答案 0 :(得分:1)
在检查$ _SESSION变量后,您正在启动会话。您应该在页面顶部调用session_start()。
答案 1 :(得分:0)
如果他们没有登录,你不会告诉他们做任何事情。只是session_start()。您可以在条件的第一部分添加标题位置。
if (!isset($_SESSION)) {
session_set_cookie_params(86400);
session_start();
// do something here, like redirect...
header('Location: '.$newURL);
die();
}
else
{
header('Location: '.$newURL);
die();
}
但这并不是很有意义。我不得不假设你在这些条件下做的不仅仅是重定向或设置会话。请参阅John Conde的评论
也许你的意思更像这样?
session_start();
if (empty($_SESSION)) {
session_set_cookie_params(86400);
header('Location: '.$newURL);
die();
}
答案 2 :(得分:0)
<?php
session_start();
session_set_cookie_params(86400);
if (!isset($_SESSION['logged_in'])) {
header('Location: '.$newURL);
die();
}
备注强>:
session_start()
在文件顶部和之前调用尝试使用任何会话功能。
我不会检查会话是否已设置,因为我在调用session_start()
时会自动设置
我检查了一个名为$_SESSION['logged_in']
的特定变量,该变量是在用户成功登录后设置的。如果没有登录soeone,则不会设置此变量,因此它们将自动失败此检查并且被重定向。确保当有人注销您unset()
此变量时,否则他们仍会登录。