我正在做一个注册表单,我正在尝试编写一个代码,如果用户没有填写所有字段,将显示错误。它工作正常但由于某种原因它只有在我输入电子邮件时才有效。如果我将所有字段留空并单击注册,我不会收到任何错误并且所有字段都清空我的光标将转到电子邮件字段并在我单击注册按钮时激活(此字段)。 这封电子邮件有问题,但我找不到任何问题,所以出了什么问题?
PHP源代码:
if(empty($_POST['fname']) || empty($_POST['lname']) || empty($_POST['email']) || empty($_POST['password']))
{
$error="Fill all fields!";
}
HTML:
<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>
答案 0 :(得分:0)
因为其他字段为type="text"
且空为空字符串""
。尝试检查它们是否为空。 ;)
例如:
if(isset($_POST["fname"]) && (strlen($_POST["fname"]) > 0) && isset($_POST["lname"]) && (strlen($_POST["lname"]) > 0) && isset($_POST["email"]) && isset($_POST["password"])){
//your code
}
对于电子邮件和密码,您可以跳过空我想如果您在HTML5中要求它们。
答案 1 :(得分:0)
我不认为他们是空的。它们将是未定义的或""
。每个人都使用print_r($_POST['name'])
,看看他们回来了什么。然后你会看到它们是否为空。
答案 2 :(得分:0)
您必须占位符而不是值。
<form action="index3.php" method="POST" >
<input style="margin-top:10px" type="text" placeholder="First Name" name="fname"
onblur="if (this.placeholder == '') {this.placeholder = 'First Name';}"
onfocus="if (this.placeholder == 'First Name') {this.placeholder = '';}" />
<input type="text" placeholder="Last Name" name="lname"
onblur="if (this.placeholder == '') {this.placeholder = 'Last Name';}"
onfocus="if (this.placeholder == 'Last Name') {this.placeholder = '';}" />
<input type="email" placeholder="Adres e-mail" name="email"
onblur="if (this.placeholder == '') {this.placeholder = 'Adres e-mail';}"
onfocus="if (this.placeholder == 'Adres e-mail') {this.placeholder = '';}" />
<p><input type="password" placeholder="Password" name="password"
onblur="if (this.placeholder == '') {this.placeholder = 'Password';}"
onfocus="if (this.placeholder == 'Password') {this.placeholder = '';}" /></p>
<button type="submit" name="submit"> Register</button> </br></br>
</form>
答案 3 :(得分:0)
onblur
和onfocus
事件会使每个输入的value
始终填充,因此当您提交每个字段时,其具有默认值或您更改的内容。更好的解决方案是使用placeholder
属性。这将使value
为空,直到用户填充它们为止。
<form action="register.php" method="POST">
<input style="margin-top:10px" type="text" value="First Name" name="fname" placeholder="First Name" />
<input type="text" value="Last Name" name="lname" placeholder="Last Name" />
<input type="email" value="Adres e-mail" name="email" placeholder="Adres e-mail" />
<p><input type="password" value="Password" name="password" placeholder="Password" /></p>
<button type="submit" name="submit"> Register</button> </br>
</br>
</form>
这对密码字段也应该更好,因为我怀疑你以前有password
作为8个子弹点。
服务器端您可以通过$_POST
或var_dump
输出print_r
数组,或通过迭代foreach($_POST as $name => value)
来验证这是原因。
答案 4 :(得分:0)
首先,您的PHP代码是正确的。但您的HTML表单有一些技术错误。您必须在输入框中为显示字段名称设置 placeholder
属性,因为当运行onBlur事件时,为字段和字符串设置的值设置为发送到服务器,并且非空!通过这种方式,您的PHP代码不能用于检查空值。您必须执行的辅助工作,通过为每个输入元素轻松设置 required
属性,检查客户端中的字段是否为空。我写了你必须使用的正确的html标签。
<form action="register.php" method="POST">
<input style="margin-top:10px" type="text" name="fname" placeholder="First Name" required />
<input type="text" name="lname" placeholder="Last Name" required />
<input type="email" name="email" placeholder="Adres e-mail" required />
<p><input type="password" name="password" placeholder="Password" required /></p>
<button type="submit" name="submit"> Register</button> </br>
</br>
</form>
&#13;
对于PHP代码,您可以简单地使用Foreach:
$error="";
foreach($_POST as $key => $value) {
if(empty($_POST[$key]))
{
$error="Fill all fields!";
break;
}
}