Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不使用表单提交php阻止url访问_Php - Fatal编程技术网

不使用表单提交php阻止url访问

不使用表单提交php阻止url访问,php,Php,假设我们有一个表单,允许用户提交一些文本。。。。然后提交表单,表单将值传递到另一个页面,在该页面中,我们根据上一个页面中提交的输入显示结果。现在我们知道了这两个url,所以我们可以尝试直接访问它们,但是第一个是可以的,没有问题,当访问第二个页面时,它将没有参数或显示给出结果的值??????因此,我想防止用户在不填写表单并从第一页提交表单的情况下直接访问此页面 例如,提交一个带有文本框名称的表单,下一页显示数据库中该名称的详细信息。第二页的url可能类似于www.domain.com/page2.

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

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

有什么想法吗


*在尝试访问第一页时,我们已经选中了用户登录

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

  • 最简单的一点是,您将始终检查是否在第二页中获得了所需的POST参数。您可以通过检查所需的表单值是否存在于$\u POST中的相应字段中来实现这一点
  • 您还可以检查页面引用器,并且仅当用户来自页面A时才允许访问页面B(但是,请注意,页面引用器可能会被客户端欺骗)。描述如何在PHP页面中获取referer

有两种方法可以测试第二页的访问方式:

  • 最简单的一点是,您将始终检查是否在第二页中获得了所需的POST参数。您可以通过检查所需的表单值是否存在于$\u POST中的相应字段中来实现这一点
  • 您还可以检查页面引用器,并且仅当用户来自页面A时才允许访问页面B(但是,请注意,页面引用器可能会被客户端欺骗)。描述如何在PHP页面中获取referer

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

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

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

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

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

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

试试这个

if(!isset($_GET)){
   header('Location: http://www.backtoyourotherpage.php/');
}
但是我会在你的表单上使用POST,这样url就不会像你展示的那样打印出来……里面有所有的单词

然后它会变成

 if(!isset($_POST)){
   header('Location: http://www.backtoyourotherpage.php/');
}
试试这个

if(!isset($_GET)){
   header('Location: http://www.backtoyourotherpage.php/');
}
但是我会在你的表单上使用POST,这样url就不会像你展示的那样打印出来……里面有所有的单词

然后它会变成

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

此变量具有调用页面的URL

$_SERVER['HTTP_REFERER']

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

此变量具有调用页面的URL

$_SERVER['HTTP_REFERER']

您可以检查$\u POST或$\u GET是否传递了数据,但最好的方法是生成一个可选字符串(或令牌),将其保存在$\u会话变量中并以表单形式发送,然后比较两次,如果它们匹配,则继续执行…

yeah post可用于安全性,在长格式中yeah post可用于安全性,在长格式中,$\u会话也可用于确保页面不会被调用两次。回答得很好。$\u会话还可以用来确保页面不会被调用两次。回答得很好。