PHP POST 验证错误删除所有条目

标签 php forms validation post

我正在尝试构建一个表单,但遇到了一些困难。当表单发布时,如果存在验证错误,所有输入的数据都将被删除!有没有办法在表格中保留日期?我还尝试将表单数据发送到名为 contact-engine.php 的页面 我可以通过将表单操作更改为 action="contact-engine.php"来发送它,但是我的验证不起作用!在尝试解决这个问题几个小时后,我基本上陷入困境并且已经用尽了想法。代码如下:

<?php
// define variables and set to empty values
$addDateErr = $nameErr = $emailErr = $subjectErr = $messageErr = $questionErr = "";
    $addDate = $name = $email = $subject = $message = $question = "";

 if ($_SERVER["REQUEST_METHOD"] == "POST")
 {

 //Date
   if (empty($_POST["addDate"]))
   {$comment = "";}
   else
   {$comment = test_input($_POST["addDate"]);}

 //Name
    if (empty($_POST["name"]))
    {$nameErr = "Name is required";}
    else
    {
    $name = test_input($_POST["name"]);
    if (!preg_match("/^[a-zA-Z ]*$/",$name))
    {
    $nameErr = "Only letters and white space allowed";
    }
    }

//Email
if (empty($_POST["email"]))
{$emailErr = "Email is required";}
else
{
$email = test_input($_POST["email"]);
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
{
$emailErr = "Invalid email format";
}
}

//Subject
if (empty($_POST["subject"]))
{$comment = "";}
else
{$comment = test_input($_POST["subject"]);}

//Message
if (empty($_POST["message"]))
{$messageErr = "A message is required";}
else
{$comment = test_input($_POST["message"]);}

//Question
if (empty($_POST["question"]))
{$comment = "";}
else
{$comment = test_input($_POST["question"]);}

}
function test_input($data)
{
 $data = trim($data);
 $data = stripslashes($data);
 $data = htmlspecialchars($data);
 return $data;
}
?>



<form method="post" id="form" action="
<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<p><span class="error">* required field.</span></p><br />

<!--Date--><div class="contact-font">
    Date Photography needed (if necessary)<br />
    <input type="text" name="addDate" id="datepicker" size="25" value="
<?php echo $addDate;?>">
    </div>

<!--Name--><div class="contact-font" style=" margin-top: 20px;">
    <span class="asterix">* </span>Name:<br />
    <input type="text" name="name" class="border" size="25"><span class="error">
<?php echo $nameErr;?></span>
</div>

<!--Email--><div class="contact-font" style=" margin-top: 20px;">
    <span class="asterix">* </span>Email:<br />
    <input type="text" name="email" class="border" size="25">
<span class="error"><?php echo $emailErr;?></span>
</div>

<!--Subject--><div class="contact-font" style=" margin-top: 20px;">
    Subject:<br />
    <input type="text" name="subject" class="border" size="25"<?php echo $subject;?>">
</div>

    <!--Message--><div class="contact-font" style=" margin-top: 20px;">
    <span class="asterix">* </span>Message:<br />
    <textarea cols="40" rows="10" name="message" class="border"></textarea>
<span class="error"><?php echo $messageErr;?></span>
</div><br />

<p id="info-req">How did you find about Darren Morton Photography?</p>
<!--Question--><select id="marketing" name="question"<?php echo $question;?>">
    <option value="----------" style="color:black">----------</option>
    <option value="Web Search" style="color:black">Google Search</option>
    <option value="Web Search" style="color:black">Social Media</option>
    <option value="Word of mouth" style="color:black">Word of mouth</option>
    <option value="Other" style="color:black">Other</option>
</select><br /><br />

<div>
    <input type="submit" value="Send" id="submit">
</div>
</form>

最佳答案

你应该能够做这样的事情。像以前一样保留 from 操作,而不是 contact-engine.php 文件。然后查看是否设置了 $_POST,然后它将用最近的值填充输入。示例

<input type="text" name="name" class="border" size="25" value="<?php if(isset($_POST['name'])) { echo $_POST['name']; } ?>"><span class="error">
<?php echo $nameErr;?></span>

然后您可以为其他输入执行此操作。

关于PHP POST 验证错误删除所有条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21357091/

相关文章:

php - 返回 PHP 中带前导零的字符串

php - 如何实现未注册用户的观看次数统计?

Php正则表达式在字符串中的第一个全大写字母单词后插入字符

javascript - 使用 Javascript 发送动态 POST 数据

HTML 通过一个复选框提交多个值?

actionscript-3 - 单独验证 DataGridColumn 单元格

javascript - 在使用 Javascript 上传文件之前显示图像和图像扩展名验证

Javascript 验证输入字段?

php - Laravel - 多公司范围

forms - Wicket - 具有 Java 继承的可重用面板