我有两页apply.php和registration.php。
在registration.php
,我有
if(isset($_POST['submitted'])){
//validation part
$form_error ='';
if(!$fullname){
$form_error.= "Enter full name<br />";
header('Location: apply.php');
在apply.php
中,如果发生错误,我会显示错误消息:
<p><?php if(isset($form_error))echo $form_error?></p>
<form action="registration.php" method="post">
<label for="fullname">Fullname</label>
<input type="text" name="fullname" />
为什么我没有收到回复错误消息“在apply.php中输入全名”?
答案 0 :(得分:2)
你没有得到它,因为apply.php不知道$ form_error - 它在registration.php中初始化,但在apply.php中没有。
您可以执行以下操作:
$_SESSION['form_error'] = "Enter full name<br />";
然后你可以在apply.php上访问它。
<p><?php if(isset($_SESSION['form_error']))echo $_SESSION['form_error']?></p>
<form action="registration.php" method="post">
<label for="fullname">Fullname</label>
<input type="text" name="fullname" />
或者,您也可以通过标题传递错误(通过GET):
$form_error.= "Enter full name<br />";
header('Location: apply.php?form_error=' . urlencode($form_error));
并在apply.php中访问它:
<p><?php if(isset($_GET['form_error']))echo $_GET['form_error']?></p>
<form action="registration.php" method="post">
<label for="fullname">Fullname</label>
<input type="text" name="fullname" />
答案 1 :(得分:1)
不要使用标题或不同的文件 把所有东西都放在一个错误中只显示表格。 仅重定向成功。
像这样:
<?
if ($_SERVER['REQUEST_METHOD']=='POST') {
if(!$fullname) $form_error.= "Enter full name<br />";
// other validations
if (!$form_error) {
//writing to database
Header("Location: ".$_SERVER['PHP_SELF']);
exit;
}
}
?>
<form>
...