【问题标题】:<input> Validation for email php<input> 验证电子邮件 php
【发布时间】:2015-08-22 18:04:20
【问题描述】:

我有一个练习来制作一个 ,并用 php 验证它。 为什么它不给出错误消息?

如果我只检查名称的长度,那么它就可以工作。如果我只检查正确字符的名称,那么它也可以工作。 //错误检查出了什么问题?

<?php
  //Values set?
  if(isset($_POST['name'])){
    $errors = [];

    //Error check
    if (!preg_match("/^[a-zA-Z ]*$/",$_POST['name']) && strlen($_POST['name']) < 2) {
      $errors['name'] = 'Please put in your name.';
    }
  }
?>
<p>Input your name</p>
<?php
  //Show Errors
  if (isset($errors['name'])){
     echo '<p>' . $errors['name'] . '</p>';
  }
?>
<input type="Text" name="name">
<input type="submit" name="submit" value="send">

【问题讨论】:

    标签: php forms validation if-statement input


    【解决方案1】:

    也许您应该使用 OR (||) 而不是 AND (&amp;&amp;):

    if (!preg_match("/^[a-zA-Z ]*$/",$_POST['name']) || strlen($_POST['name']) < 2)
    

    【讨论】:

    • 天啊。谢谢你。我搜索了很长时间。但这只是一个考虑错误.. :( 谢谢 :)
    • 标记为已接受的答案,以便将来的其他用户知道
    【解决方案2】:

    使用这个:

    if (!preg_match("/^[a-zA-Z ]*$/",$_POST['name']) || strlen($_POST['name']) < 2) {
      $errors['name'] = 'Please put in your name.';
    }
    

    与 ||运算符而不是 &&。

    【讨论】:

      【解决方案3】:

      您在输入字段中输入了什么?那个电子邮件在哪里?

      如果你想创建一个电子邮件输入字段,你可以这样做:

      <input type="email" name="name">
      

      最重要的是,目前,如果您输入的电子邮件至少有 2 个字符长,则 If 语句将通过,因为您使用的是 AND。你应该像这样使用 OR:

      if (!preg_match("/^[a-zA-Z ]*$/",$_POST['name']) || strlen($_POST['name']) < 2)
      

      就像一个通知:如果输入字符串是电子邮件,您可以轻松地使用以下 PHP 函数来验证:

      if (filter_var($_POST['name'], FILTER_VALIDATE_EMAIL) === false || strlen($_POST['name']) < 2)
      

      【讨论】:

        猜你喜欢
        • 2011-09-25
        • 2017-03-19
        • 2017-10-12
        • 2015-06-15
        • 2017-12-31
        • 2012-10-04
        • 2011-06-21
        • 2013-09-08
        • 2011-04-06
        相关资源
        最近更新 更多