PHP - 无法重定向新访问者

时间:2014-02-12 01:09:33

标签: php html

如果访问者未登录,我正在尝试将我的索引页面重定向到目标网页。

(的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上 有没有明显的理由说明为什么这不起作用?

3 个答案:

答案 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();
}

备注

  1. session_start()文件顶部之前调用尝试使用任何会话功能。

  2. 我不会检查会话是否已设置,因为我在调用session_start()时会自动设置

  3. 我检查了一个名为$_SESSION['logged_in']的特定变量,该变量是在用户成功登录后设置的。如果没有登录soeone,则不会设置此变量,因此它们将自动失败此检查并且被重定向。确保当有人注销您unset()此变量时,否则他们仍会登录。