我正在做一个注册表单,我试图写一个代码,如果用户没有填写所有字段,将显示错误。它工作正常,但由于某种原因,它只工作,如果我输入电子邮件。如果我离开所有字段为空,并点击注册,我没有得到任何错误,并与所有字段为空,我的光标转到电子邮件字段,并得到激活(此字段)当我点击注册按钮时。这封邮件有问题,但我找不到任何问题,那么是什么问题?
PHP源代码:
if(empty($_POST['fname']) || empty($_POST['lname']) || empty($_POST['email']) || empty($_POST['password']))
{
$error="Fill all fields!";
}
于飞:
<form action="register.php" method="POST">
<input style="margin-top:10px" type="text" value="First Name" name="fname" onblur="if (this.value == '') {this.value = 'First Name';}" onfocus="if (this.value == 'First Name') {this.value = '';}" />
<input type="text" value="Last Name" name="lname" onblur="if (this.value == '') {this.value = 'Last Name';}" onfocus="if (this.value == 'Last Name') {this.value = '';}" />
<input type="email" value="Adres e-mail" name="email" onblur="if (this.value == '') {this.value = 'Adres e-mail';}" onfocus="if (this.value == 'Adres e-mail') {this.value = '';}" />
<p><input type="password" value="Password" name="password" onblur="if (this.value == '') {this.value = 'Password';}" onfocus="if (this.value == 'Password') {this.value = '';}" /></p>
<button type="submit" name="submit"> Register</button> </br>
</br>
</form>
5条答案
按热度按时间wswtfjt71#
我不认为它们是空的。它们要么是undefined,要么是
""
。对每一个都使用print_r($_POST['name'])
,看看它们返回的是什么。然后你就会看到它们是否是空的。j9per5c42#
因为其他字段是
type="text"
和empty被认为是空字符串""
。如果它们不是空的,也要检查一下。)例如:
对于电子邮件和密码,你可以跳过空我猜,如果你使他们在HTML5中要求。
6za6bjd03#
您必须使用占位符而不是值。
g6ll5ycj4#
onblur
和onfocus
事件使每个输入的value
总是被填充,这样当你提交每个字段时,它就有了默认值,或者你改变了它。一个更好的解决方案是使用placeholder
属性。这将保持value
为空,直到用户填充它们。这也应该更好地为密码字段工作,因为我怀疑你以前有
password
作为8个项目符号。在服务器端,您可以通过使用
var_dump
或print_r
输出$_POST
数组,或者通过迭代foreach($_POST as $name => value)
来验证这是原因。zmeyuzjn5#
首先,你的PHP代码是正确的。但是你的HTML表单有一些技术错误。你必须设置**
placeholder
属性来显示输入框中的字段名称,因为当onBlur事件运行时,发送到服务器的字段和字符串的值是设置的,并且不是空的!这样你的PHP代码就不能检查空值。通过为每个输入元素轻松设置required
**属性,检查客户端字段是否为非空。我编写了您必须使用正确html标记。对于PHP代码,您可以简单地使用Foreach: