我有一个register.php
页面,允许访问者注册成为特定用户。如果它们满足表单验证设置的所有要求,它们将重定向到另一个名为thankyou.php
页面的页面。
我的问题是,如果有人试图直接访问thankyou.php
页面而不通过/ register.php
页面,那么它应该将它们重定向回register.php
页面< / strong>再次。
注意:我知道如何为登录用户使用$_session = array();
,header()
功能非常好。再一次,这里的问题需要对如何限制访问者直接访问thankyou.php
进行某种研究(因为访问者尚未成为该网站的用户)。
请不要用jquery或javascript或任何其他语言指导我。我需要你的帮助。
谢谢!
答案 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()
恢复会话。