我在网站上读到了一些与此相似的问题但却无法从中获取任何内容。我有一个提交的表单,如果有错误,我会通知用户表单上方的错误,并显示下面的表单,以便他们更正。除了他们必须重新输入所有信息之外,这一切都很好而且花花公子。我希望信息保持不变,他们只需要修复/重新输入错误所在的字段。
这是我的处理文件:
<?php
include_once("Header.php");
if(!empty($_POST['formsubmit'])){require_once ("Form_Handle.php");}
include("Form.php");
include_once("Footer.php");
?>
在我处理完form.php之后,我有什么需要做的吗?
答案 0 :(得分:6)
我觉得所提供的答案有些含糊不清,而且他们告诉您根据这些字段是否存在值来设置value
属性中字段的内容。
以下是 的原因。当您将if
语句逻辑放在value
属性中时,它会将value属性设置为'YOURVALUE'
或'""'
。 &lt; - 那就是问题所在。当$_POST["field_name"]
为空时,该字段的值会设置为空字符串。如果你有表单验证并希望抛出一个'空字段'错误,这将通过你的验证逻辑,这将是完全错误的(你的表单字段将显示为空,但它内部将有一个空字符串)。
相反,只需在没有任何检查的情况下回显变量。如果没有设置,什么都不会发生。如果是,您将能够保留该值。例如,
<input type="text" name="email" value="<?php echo $_POST["email"]; ?>" >
这是另一个代码示例,我放弃了上述整个情况,只有在变量不为空时才回显value
属性。
<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
文件中添加类似的代码。
答案 1 :(得分:4)
您只需在输入字段值中写入一些逻辑以保持输入的值。 e.g
<input type="text" name="login" value="<?php if(isset($_POST['login'])){ echo $_POST['login'];}?>">
答案 2 :(得分:2)
在Form.php
中,您应该检查您使用的各种$_POST
变量的存在,并将其内容作为输入字段的value
答案 3 :(得分:1)
在表单中指定默认值。
例如:
<?php
$answer = (isset($_POST['answer'])) ? $_POST['answer'] : '';
?>
表格字段:
<input type="text" name="answer" value="<?php print $answer;?>"/>
答案 4 :(得分:0)
为什么不将发布的数据存储在会话变量中。
然后,当您将用户重定向回表单页面时,您可以检查表单值是否在会话变量中,如果是,则将内容填入输入字段中的值。