假设我们有一个表单,我们允许用户提交一些文本......然后提交表单,将表单传递给另一个页面,我们根据前一页面提交的输入显示结果。现在我们知道这两个网址,所以我们可能会尝试直接访问它们但第一个没问题,当转到访问第二页时它将没有参数或者说要给出结果的价值 ??????所以我想阻止用户直接访问到这个页面而不填写表格并从第一页提交。
例如,提交带有文本框名称的表单,然后我们会从数据库中显示该名称的详细信息。网址可能与第二页www.domain.com/page2.php?name=somename
任何想法?
*我们在尝试访问第一页时已经检查过用户登录
答案 0 :(得分:2)
试试这个......
if(!isset($_GET)){
header('Location: http://www.backtoyourotherpage.php/');
}
但是我会在你的表单上使用 POST ,这样网址就不会以你展示的方式打印....包含所有单词
然后它会变成...... if(!isset($_POST)){
header('Location: http://www.backtoyourotherpage.php/');
}
答案 1 :(得分:1)
此变量具有调用页面的URL ..
$_SERVER['HTTP_REFERER']
您可以检查是否有$ _POST或$ _GET传递的数据,但最好的方法是生成一个随机字符串(或令牌),将其保存在$ _SESSION变量中并在表单中发送,然后比较两次,如果他们匹配继续执行...
答案 2 :(得分:0)
有两种方法可以测试第二页的访问方式:
答案 3 :(得分:0)
在第二个php文件的开头使用以下代码。这将检查URL是否被请求为POST。假设你的表单中有POST方法。这将阻止用户直接通过URL访问。
<?php
if(!isset($_POST)){
header("location:someotherpage.php");
}
?>
但是,当用户从任何其他地方发送POST请求时,这不起作用。 检查单个表单字段和重定向也很好。