如何通过单击按钮检查用户是否已进入页面,而不是通过复制粘贴URL来进行检查?
例如,如果用户点击了注册,我希望他/她只能通过单击“注册”按钮转到该页面,而不是通过复制粘贴链接。 另外,在地址栏上提供页面名称是一个好习惯,还是我必须隐藏页面。如果我隐藏页面,我能够做到吗?
例如,如果是localhost / projname / register.php。我不希望人们看到地址栏上的注册或登录或关于或任何东西,除了localhost / projname。
答案 0 :(得分:3)
也许检查他是否使用$ _POST,如:
<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
// do ya thing
}
else
{
?>
<form action="index.php" method="post">
are you sure? <input type="submit" value="yes">
</form>
<?php
}
?>
答案 1 :(得分:1)
您可以使用$_SERVER保留变量的HTTP_REFERER
数据来查看用户来自何处。
if(empty($_SERVER['HTTP_REFERER'])) {
// if we are here, the user copy pasted the url.
}
至于你的第二个问题,你不能完全“隐藏页面”,就像你建议的那样。 Web服务器必须知道要显示的页面,因此浏览器必须知道。
但是,您可以对页面名称进行模糊处理。例如,您可以调用页面“sfhjgdjkfg”,这样用户就无法知道这是“注册”页面。但我认为这真的是一个坏主意,为什么首先要让你隐藏这个?
答案 2 :(得分:0)
如果您的表单使用POST参数,浏览器将传递一些POST数据。然后你可以检查
if (empty($_POST)) {
//didn't click the button, just went straight to the url
}else{
//did click the button
}
答案 3 :(得分:0)
一种方法是使用$_SERVER['HTTP_REFERER']
来验证他们是否点击了您网站上的链接,但此方法并非万无一失,因为许多防火墙和防病毒套件都会删除推荐人信息。
更好的方法是在您网站的网页上生成临时session
令牌,并在打开注册页面时检查该令牌。