html PHP检查字段是否为空

oxalkeyp  于 2022-12-02  发布在  PHP
关注(0)|答案(5)|浏览(196)

我正在做一个注册表单,我试图写一个代码,如果用户没有填写所有字段,将显示错误。它工作正常,但由于某种原因,它只工作,如果我输入电子邮件。如果我离开所有字段为空,并点击注册,我没有得到任何错误,并与所有字段为空,我的光标转到电子邮件字段,并得到激活(此字段)当我点击注册按钮时。这封邮件有问题,但我找不到任何问题,那么是什么问题?
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>
wswtfjt7

wswtfjt71#

我不认为它们是空的。它们要么是undefined,要么是""。对每一个都使用print_r($_POST['name']),看看它们返回的是什么。然后你就会看到它们是否是空的。

j9per5c4

j9per5c42#

因为其他字段是type="text"和empty被认为是空字符串""。如果它们不是空的,也要检查一下。)
例如:

if(isset($_POST["fname"]) && (strlen($_POST["fname"]) > 0) && isset($_POST["lname"]) && (strlen($_POST["lname"]) > 0) && isset($_POST["email"]) && isset($_POST["password"])){
    //your code
}

对于电子邮件和密码,你可以跳过空我猜,如果你使他们在HTML5中要求。

6za6bjd0

6za6bjd03#

您必须使用占位符而不是

<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>
g6ll5ycj

g6ll5ycj4#

onbluronfocus事件使每个输入的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个项目符号。
在服务器端,您可以通过使用var_dumpprint_r输出$_POST数组,或者通过迭代foreach($_POST as $name => value)来验证这是原因。

zmeyuzjn

zmeyuzjn5#

首先,你的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>

对于PHP代码,您可以简单地使用Foreach:

$error="";
foreach($_POST as $key => $value) {
    if(empty($_POST[$key]))
    {
        $error="Fill all fields!";
        break;
    }
}

相关问题