我正在为我的html值进行PHP验证。但是当PHP验证时 失败,我返回页面,表单数据被清除。无论如何都要在php中保存并重新加载表单数据
php 中的<?php
$firstname=$lastname=$contactno="";
$firstnameErr=$lastnameErr=$contactnoErr="";
if ($_SERVER['REQUEST_METHOD']== "POST") {
$valid = true;
/*FirstName Validation starts here*/
if(empty($_POST["fname"]))
{
$firstnameErr="*firstname is Required";
$valid=false;
}
else
{
$firstname=test_input($_POST["fname"]);
if (!preg_match("/^[a-zA-Z ]*$/",$firstname))
{
$firstnameErr = " Only letters and white space allowed";
$valid=false;
}
}
/*FirstName Validation Ends here*/
/*lastName Validation starts here*/
if(empty($_POST["lname"]))
{
$lastnameErr="*lastname is required";
$valid=false;
}
else
{
$lastname=test_input($_POST["lname"]);
if(!preg_match("/^[a-zA-Z ]*$/",$lastname))
{
$lastnameErr = " Only letters and white space allowed";
$valid=false;
}
}
/*LastName Validation Ends here*/
/*Contact No Validation starts here*/
if(empty($_POST["contact"]))
{
$contactnoErr="*Contact No. is required";
$valid=false;
}
else
{
$contactno=test_input($_POST["contact"]);
if(!preg_match("/^(\d[\s-]?)?[\(\[\s-]{0,2}?\d{3}[\)\]\s-]{0,2}?\d{3}[\s-]?\d{4}$/i",$contactno))
{
$contactnoErr="*Enter a valid contact no";
$valid=false;
}
}
/*Contact No Validation Ends here*/
//if valid then redirect
if($valid){
include 'database.php';
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=success.php">';
exit;
}
}
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<form method="post" action="<?php htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<label>Firstname<span class="error">*</span>:</label>
<input type="text" name="fname"/>
<span class="error"><?php echo $firstnameErr?></span><br />
<br />
<label>lastname<span class="error">*</span>:</label>
<input type="text" name="lname"/>
<span class="error"><?php echo $lastnameErr?></span><br />
<br />
<label>contactno<span class="error">*</span>:</label>
<input type="text" name="contact"/>
<span class="error"><?php echo $contactnoErr?></span>
<br />
<input style="margin:20px 20px 20px 250px;" type="submit" name="Submit" value="Submit"/>
</form>
答案 0 :(得分:1)
您正在加载一个新表单(即使它与上一个表单相同)并且您没有任何输入的value
属性。
答案 1 :(得分:0)
当您提交表单时,您基本上是从头开始重新加载页面。因为你没有为它提供值 - 它是空的。您需要在表单中执行此类操作。
<form method="post" action="<?php htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<label>Firstname<span class="error">*</span>:</label>
<input type="text" value="<?php echo htmlentities($_POST['fname']); ?>" name="fname"/>
<span class="error"><?php echo $firstnameErr?></span><br />
<br />
<label>lastname<span class="error">*</span>:</label>
<input type="text" value="<?php echo htmlentities($_POST['lname']); ?>" name="lname"/>
<span class="error"><?php echo $lastnameErr?></span><br />
<br />
<label>contactno<span class="error">*</span>:</label>
<input type="text" value="<?php echo htmlentities($_POST['contact']); ?>" name="contact"/>
<span class="error"><?php echo $contactnoErr?></span>
<br />
<input style="margin:20px 20px 20px 250px;" type="submit" name="Submit" value="Submit"/>
</form>
答案 2 :(得分:0)
将value-element添加到输入标记:
<input type="text" name="fname" value="<?php echo $firstname ?>" />
并确保所有值都有预设。
答案 3 :(得分:0)
从内存验证它,而不是从字段验证。将其保存到对象或仅保存在您将使用的某些变量中。如果值无效,则返回相同的页面并再次从vars / object中填充以允许用户继续。
此外,您可能希望在此之前添加客户端验证,因此无需向服务器发送请求即可修复最无关紧要的无效数据。