我目前正在为一个网站制作注册/验证脚本,偶然发现了一个问题。
我使用所有PHP来验证,并使用if语句来回显错误数组。
我的问题是:我如何保持用户的输入值在刷新后的形式?我必须学习AJAX吗?
- 注意:我正在考虑的文件是
register.php
,它将数据发送到同一页面(action = ""
)。form_handle.php
是包含在register.php
最顶部/开始的实际验证脚本。
form_handle.php
CODE:
$errors = array();
if( empty($safe_fname) ||
empty($safe_lname) ||
empty($safe_email) ||
empty($safe_email_again) ||
empty($safe_password) )
{
$errors = '<p>One or more fields left empty';
}
elseif( strlen($safe_password) < 6)
{
$errors = '<p>Password must be atleast 6 charcters long.</p>';
}
elseif($safe_email != $safe_email_again)
{
$errors = '<p>E-mails do not match.</p>';
}
The form
CODE:
<h2>Sign up Today!</h2>
<form method="post" action="">
<span class="p" id="p1"></span><br/>
<input name="first_name" id="first" class="register_form cap" type="text" placeholder="First Name" />
<br/><span class="p" id="p2"></span><br/>
<input name="last_name" id="second" class="register_form cap" type="text" placeholder="Last Name" />
<br/><span class="p" id="p3"></span><br/>
<input name="email" id="third" class="register_form" type="text" placeholder="E-mail" />
<br/><span class="p" id="p4"></span><br/>
<input name="email_again" id="fourth" class="register_form" type="text" placeholder="Re-enter E-mail" />
<br/><span class="p" id="p5"></span><br/>
<input name="password" type="password" class="register_form" placeholder="Password" />
<br/><span class="p" id="p1"></span><br/>
<input name="submit" id="fifth" class="register_form" type="submit" value="Create!" />
</form>
</div>
你的代码应该像
<input type='text' name='first_name' value='<?php echo $_POST['first_name']; ?>' />
这样做并避免大量代码和错误的快速方法如下:
<input type='text' name='first_name' value='<?php echo isset($_POST['first_name']) ? $_POST['first_name'] : ''; ?>' />
您可以尝试如下操作-
<input name="first_name" id="first" class="register_form cap" type="text"
<?php
if(isset($_POST['first_name'])) {
echo "value='".$_POST['first_name']."'";
} else {
echo "placeholder='First Name'";
}
?>
/>
有点晚了,但是从PHP 7.0开始。您可以使用null合并(??
)二进制运算符。左操作数是要求值的表达式,右操作数包含在表达式不存在或为null时使用的值。这简化了代码阅读,并消除了由于表达式复制而导致的打字错误的可能性:
<expression> ?? <if-null-value>
等价于:
isset(<expression>) ? <expression> : <if-null-value>
基于此,我建议对问题的答案如下:
<input type='text' name='first_name' value='<?php echo $_POST['first_name'] ?? ''; ?>' />