2017-07-13 59 views
-2

我有一个表单页面,名为form.php,当它提交时,它将转到step.php在PHP中直接访问的限制

现在,如果用户直接去step.php它应该去error.php

我尝试了代码,但是当用户从'form.php的”

,我试过的代码重定向也去error.php: -

<?php 
    if ($_SERVER['REQUEST_METHOD']=='GET' && realpath(__FILE__) == realpath($_SERVER['SCRIPT_FILENAME'])) { 
header('HTTP/1.0 403 Forbidden', TRUE, 403); 
    die(header('location: error.php')); 

} 
?> 
+2

可以在使用$ _SESSION或cookie来存储有关表格提交的信息? –

+0

你可以帮助代码..? – ShriSun

+0

不应该是'POST'而不是'GET'或者你如何提交表单? –

回答

0

您可以使用会话来存储信息表单提交。

广场

session_start(); 
$_SESSION['was_on_form'] = 1; 
上form.php的顶部

,并

session_start(); 
if (empty($_SESSION['was_on_form'])) { 
    // show error or make redirect 
} 
上step.php

顶部

但通常它不是问题,用户访问的步骤.php在form.php之前。在step.php中,您只需验证$ _POST表单数据,如果数据有效,则可以继续。

+0

是我的编辑是编码的正确方法 – ShriSun

+0

@ShriSun不编辑为您的问题提供的答案。答案中不需要PHP的开始和结束标记。 –

0

解决方案1 ​​

form.php的

获得按钮的名称提交step.php

step.php

<?php 

if(isset($_POST['btn_submit'])) 
{ 
    // button submitted 
} 
else{ 
    // button not submitted 
} 

?> 

解决方案2

在form.php上创建一个具有唯一值和st的会话矿石它作为一个隐藏的价值

form.php的

step.php

<?php 
session_start(); 
if(isset($_POST['btn_submit']) AND isset($_POST['_token'])) 
{ 
    // check token if valid 

    if($_POST['_token'] == $_SESSION['inputToken']) 
    { 
     // submitted from the form 
    } 
    else{ 
     // form was not submitted 

     header("location:form.php?msg=1"); 
    } 

} 
else{ 
    // button not submitted 
    header("location:form.php?msg=2"); 
} 

?> 
+0

我使用** solution2 **,但我也可以直接去'step.php' – ShriSun

+0

l已编辑解决方案2答案检查是否有效 –

+0

我试过,现在不会进入'step.php' **但是当表单填写并提交按钮时,它也不会执行 – ShriSun