0

假设我们有一个表单,我们允许用户提交一些文本左右......然后表单被提交,它将值传递到另一个页面,我们根据前一页提交的输入显示结果。现在我们知道这两个 url,所以我们可以尝试直接访问它们,但是第一个没问题,当访问第二页时,它不会有参数或说出给出结果的值?????? 所以我想防止用户直接访问这个页面而不填写表格并从第一页提交。

例如,提交一个带有文本框名称的表单,下一页我们会从数据库中显示该名称的详细信息。url 可能看起来像第二页www.domain.com/page2.php?name=somename

任何想法?

*我们已经在尝试访问第一页时检查了用户登录

4

4 回答 4

2

尝试这个...

if(!isset($_GET)){
   header('Location: http://www.backtoyourotherpage.php/');
}

但是我会在您的表单上使用POST,这样 url 就不会以您显示的方式打印出来......其中包含所有单词

那么它会变成...

 if(!isset($_POST)){
   header('Location: http://www.backtoyourotherpage.php/');
}
于 2013-06-09T03:21:02.963 回答
1

此变量具有调用页面的 URL。

$_SERVER['HTTP_REFERER']

您可以检查是否有 $_POST 或 $_GET 传递的数据,但最好的方法是生成一个随机字符串(或令牌),将其保存在 $_SESSION 变量中并以表单形式发送,然后比较两次,如果它们匹配则继续执行...

于 2013-06-09T04:56:17.953 回答
0

有两种方法可以测试第二页是如何被访问的:

  • 最简单的方法是,您将始终检查是否获得了您在第二页中寻找的所需 POST 参数。您可以通过检查 $_POST 中的适当字段中是否存在所需的表单值来做到这一点
  • 您还可以检查页面引用者,并且仅当用户来自页面 A 时才允许访问页面 B(但是,请注意页面引用者可能会被客户端欺骗)。这是一个描述如何在 PHP 页面中获取引用者的 SO 问题
于 2013-06-09T03:20:03.820 回答
0

在第二个 php 文件的开头使用以下代码。这将检查 url 是否被请求为 POST。假设您的表单中有 POST 方法。这将阻止用户通过 URL 直接访问。

<?php 
    if(!isset($_POST)){
         header("location:someotherpage.php");
    }
?>

但是,当用户从任何其他地方发送 POST 请求时,这不起作用。检查单个表单字段并重定向也很好。

于 2013-06-09T03:20:38.053 回答