【问题标题】:html form submit method post and limiting access to the post filehtml表单提交方法post和限制对post文件的访问
【发布时间】:2011-03-11 04:59:30
【问题描述】:

我有 2 个文件,index.html 和 code.php。

在我的 html 页面中,我有一个表单,它在提交时发布到 code.php,如下所示:

<form method="post" action="code.php"> 

我要做的只是在用户单击 html 表单上的提交时让公众可以访问 code.php。我试图完成此操作的原因是,当用户键入sites.com/code.php 时,它会显示一个未使用表单数据处理的页面并且看起来很糟糕,因此我想限制code.php 访问。

所以基本上我想做的是,当用户访问sites.com/code.php时,他们会被重定向到index.html,但如果他们通过表单并点击提交,他们将能够得到处理后的code.php。

我想到了不同的方法来做到这一点,其中一种方法是使用一些 php 脚本更改 code.php 的 chmod。因此,默认情况下 code.php 将不可读,但如果用户单击提交,则 code.php wpuld 的 chmod 将更改为可读,从而显示页面,但无法将用户重定向到 index.php 时他们只是访问 code.php。

如果有什么花哨的东东,请告诉我! 谢谢。

【问题讨论】:

    标签: php html forms redirect


    【解决方案1】:

    您可以做的是在表单未发布时重定向回 index.html 页面。

    您可以检查 REQUEST_METHOD 变量。

    if($_SERVER['REQUEST_METHOD'] !== 'POST')
    {
      Header('Location: http://www.mysite.com/index.html');
      exit;
    }
    

    【讨论】:

      【解决方案2】:

      只需设置如下重定向:

      <?php
      if(!isset($_POST['submit'])) //If form has not been submitted to get to this page
      {
           header('Location: http://www.domain.com/');  //Redirect
           die; //Make sure script ends processing
      }
      
      
      //Rest of code.php
      ?>
      

      这样,如果有人在所需导航结构之外访问 code.php,他们只会被撞回索引。

      您也可以将所有内容保存在一个页面上,让表单自己提交,如果表单已提交,则包含通过 require() 或 include() 处理它的代码,如果尚未提交,则显示表单'没有提交或者提交有错误,否则显示提交结果,甚至不暴露有外部php文件的事实。

      【讨论】:

      • 最好使用 IsSet($_POST['submit']) 进行检查,否则会给出未定义数组索引错误警告。
      【解决方案3】:

      另一种选择是检查 code.php 中的HTTP_REFERRERHTTP_REFERRER 提供当前用户访问页面的来源。如果HTTP_REFERRER 不是index.html,您可以将用户重定向到index.html

      <?php
      $ref = $_SERVER["HTTP_REFERER"];
      if ( $ref !== 'http://www.mydomain.com/index.html' )
      {
          header("Location:http://www.mydomain.com/index.html");
          exit;
      }
      ?>
      

      【讨论】:

      • 这不是一个可靠的解决方案,因为某些浏览器被配置为省略引用标头。
      • 是的,我也知道它不太可靠。依靠 REQUEST_METHOD 会更好。
      猜你喜欢
      • 2019-03-19
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-14
      • 2013-08-24
      • 2019-04-27
      相关资源
      最近更新 更多