我有一个名为form.php
的表单页面,在提交时会转到step.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' ) );
}
?>
答案 0 :(得分: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的顶部
但通常不是问题,用户访问form.php之前的step.php。在step.php中,您只需验证$ _POST表单数据,如果数据有效,则可以继续。
答案 1 :(得分:0)
解决方案1
form.php的
获取要提交给step.php的按钮的名称
step.php
<?php
if(isset($_POST['btn_submit']))
{
// button submitted
}
else{
// button not submitted
}
?>
解决方案2
在form.php上创建一个具有唯一值的会话,并将其存储为隐藏值
form.php的
<?php
session_start();
$_SESSION['inputToken'] = rand(4 , 100); // you can generate a random string of your own rand() function is for numbers
$token = $_SESSION['inputToken'];
?>
<form>
<input type='hidden' name='_token' value='$token'/>
<input type='submit' name='btn_submit' value=''/>
</form>
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");
}
?>