html表单提交方法发布和限制访问帖子文件

时间:2011-03-11 04:59:31

标签: php html forms redirect

我有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。

如果这有一些奇特的方式,请告诉我! 感谢。

3 个答案:

答案 0 :(得分:1)

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

您可以检查REQUEST_METHOD变量。

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

答案 1 :(得分:0)

只需设置一个重定向:

<?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文件的事实。

答案 2 :(得分:0)

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

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