如果使用PHP直接访问,则将访问者重定向到另一个页面

时间:2016-02-05 12:39:50

标签: php

我有一个register.php页面,允许访问者注册成为特定用户。如果它们满足表单验证设置的所有要求,它们将重定向到另一个名为thankyou.php页面的页面。

我的问题是,如果有人试图直接访问thankyou.php页面而不通过/ register.php页面,那么它应该将它们重定向回register.php页面< / strong>再次。

注意:我知道如何为登录用户使用$_session = array();header()功能非常好。再一次,这里的问题需要对如何限制访问者直接访问thankyou.php进行某种研究(因为访问者尚未成为该网站的用户)。

请不要用jquery或javascript或任何其他语言指导我。我需要你的帮助。

谢谢!

4 个答案:

答案 0 :(得分:4)

在register.php中,您可以在$ _SESSION中设置一个键。例如

$_SESSION['justRegistered'] = true;

并在thankyou.php中检查它

if (!empty($_SESSION['justRegistered'])) {
    unset($_SESSION['justRegistered']);
    // Say Thank You
} else {
    header('Location: ... register.php');
}

答案 1 :(得分:0)

您必须首先检查与$_SESSION的正确重定向关联的thankyou.php变量是否已设置。

之后,您必须检查用户$_SERVER['HTTP_REFERER']是否符合要求,即$_SERVER['HTTP_REFERER'](包含引荐网址)是否以register.php结尾且域名是您的域名

我建议你做一些事情(我假设你定义了一个常量YOUR_HOST并使用了一个会话变量ok。也可以用它来改变它):

if(empty($_SESSION['ok']) || empty($_SERVER['HTTP_REFERER'])) {
    die(header('Location /register.php'));
}

$url = parse_url($_SERVER['HTTP_REFERER']);
if($url['host'] !== YOUR_HOST || $url['path'] !== 'register.php') {
    die(header('Location /register.php'));
}
// else show the thankyou page content

答案 2 :(得分:0)

您可以在thankyou.php中查看$_SERVER['HTTP_REFERRER']

if($_SERVER['HTTP_REFERRER'] != 'your referrer page'){
  header('location: yourtarget.php');
  die();
}

也使用会话是更好的方式。

答案 3 :(得分:0)

实现所需内容的一种简单方法是将会话变量从register.php发送到thankyou.php。会话是获得权限的好方法。

register.php - &gt; $_SESSION['myvariable'] = 'something'。然后在thankyou.php中你可以访问会话变量,如果设置了变量,那么你可以留在那个页面或做任何你想做的事情。请注意,您必须在每个页面中使用session_start()恢复会话。