首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP:在表单错误后保留已填充的表单字段值

PHP:在表单错误后保留已填充的表单字段值
EN

Stack Overflow用户
提问于 2013-09-27 00:08:40
回答 5查看 12.9K关注 0票数 4

我在这个网站上读到了一些类似的问题,但我真的不能从他们那里得到任何东西。我有一个被提交的表单,如果有错误,我会通知用户表单上面的错误,并在下面显示表单,让他们纠正它。这一切都很好,除了他们必须重新输入他们所有的信息。我希望信息留下来,他们只需要修复/重新输入错误所在的字段。

下面是我的处理文件:

代码语言:javascript
运行
复制
  <?php

 include_once("Header.php");

 if(!empty($_POST['formsubmit'])){require_once ("Form_Handle.php");}
 include("Form.php");

 include_once("Footer.php");


 ?>

在处理完form.php后,我是否需要做些什么才能包含它?

EN

回答 5

Stack Overflow用户

发布于 2016-01-01 07:19:09

我觉得提供的答案有些含糊,而且也不正确,因为它们告诉您根据这些字段的值是否存在来设置value属性中的字段内容。

这就是为什么。当您将if语句逻辑放在value属性中时,它会将value属性设置为'YOURVALUE''""'。<-这就是问题所在。该字段的值会使$_POST["field_name"]为空时将设置为空字符串。如果你有表单验证,并希望抛出一个“空域”错误,这将通过你的验证逻辑,这将是完全不正确的(你的表单域将显示为空,但其中将有一个空字符串)。

相反,只需回显变量而不进行任何检查。如果未设置,则不会发生任何事情。如果是,您将能够保留该值。例如,

代码语言:javascript
运行
复制
<input type="text" name="email" value="<?php echo $_POST["email"]; ?>" >

下面是另一个代码示例,其中我放弃了上述所有情况,仅在变量不为空时才回显value属性。

代码语言:javascript
运行
复制
<h2>PHP Form Validation Example</h2>
<p><span class="error">* required field.</span></p>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

   Name: <input type="text" name="name" <?php if (!empty($_POST['name'])) {echo "value=\"" . $_POST["name"] . "\"";} ?> >
   <span class="error">* <?php echo $nameErr;?></span>
   <br><br>

   E-mail: <input type="text" name="email" <?php if (!empty($_POST['email'])) {echo "value=\"" . $_POST["email"] . "\"";} ?> >
   <span class="error">* <?php echo $emailErr;?></span>
   <br><br>

   Website: <input type="text" name="website" <?php if (!empty($_POST['website'])) {echo "value=\"" . $_POST["website"] . "\"";} ?> >
   <span class="error"><?php echo $websiteErr;?></span>
   <br><br>

   Comment: <textarea name="comment" <?php if (!empty($_POST['comment'])) {echo "value=\"" . $_POST["comment"] . "\"";} ?> rows="5" cols="40"></textarea>
   <br><br>

   Gender:
   <input type="radio" name="gender" value="female" <?php if ($_POST['gender']=="female") {echo "checked";} ?> >Female
   <input type="radio" name="gender" value="male" <?php if ($_POST['gender']=="male") {echo "checked";} ?> >Male
   <span class="error">* <?php echo $genderErr;?></span>
   <br><br>

   <input type="submit" name="submit" value="Submit"> 

</form>

对于用户提出的实际问题,您需要在form.php文件中添加类似的代码。

票数 6
EN

Stack Overflow用户

发布于 2013-09-27 00:13:05

您只需要在您的输入字段值中编写一些逻辑,以保持输入值。e.g

代码语言:javascript
运行
复制
<input type="text" name="login" value="<?php if(isset($_POST['login'])){ echo $_POST['login'];}?>">
票数 4
EN

Stack Overflow用户

发布于 2013-09-27 00:11:30

在您的Form.php中,您应该检查您使用的各种$_POST变量是否存在,并将它们的内容作为输入字段的value

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19033275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档