PHP代码错误.可以';我没有发现我的逻辑错误


PHP Code Error. Can't find my logic mistake

好的。下面是我的代码。我正在努力学习关于验证电子邮件的网络教程。但我的样品不合格。它应该提醒用户它输入了一封无效的电子邮件。因此,我的同伴创建了"show_warning"jquery函数,允许我显示我的$msg。但它不起作用。我的逻辑错了吗?。

<?php
if(isset($_POST['username']) && !empty($_POST['username']) AND
   isset($_POST['password']) && !empty($_POST['password']) AND
   isset($_POST['email']) && !empty($_POST['email']) AND
   isset($_POST['role_id']) && !empty($_POST['role_id'])) 
    {
        $username = ($_POST['username']);
        $password = ($_POST['password']);
        $email = ($_POST['email']);
        $role_id = ($_POST['role_id']);  
            if(!eregi("^[_a-z0-9-]+('.[_a-z0-9-]+)*@[a-z0-9-]+('.[a-z0-9-]+)*('.[a-z]{2,3})$", $email))
            {  
                $msg = 'The email you entered is invalid. Please try again.';
            }
                else
            {  
                $msg = 'Your account has been made, <br /> please verify by clicking the activation link in your email.';  
            }     
    } 
?>

====================================

<div id="main-content">
  <div id="create-user">
      <h1>Create User</h1>
      <form action="" method="post">
      <table id="userform" width="600px" border=0>
        <tr>
          <td><label for="username">Username</label>
            <input type="text" id="username" name="username" /></td>
          <td><label for="password">Password</label>
            <input type="text" id="password" name="password" /></td>
        </tr>
        <tr>
          <td><label for="email">Email</label>
            <input type="text" id="email" name="email" /></td>
          <td><label for="role_id">Role</label>
            <select>
              <?php $roles = load_roles() ;?>
              <?php foreach ($roles as $role): ?>
              <option value='<?php echo $role['role_id']; ?>'><?php echo $role['role']; ?></option>
              <?php endforeach; ?>
            </select></td>
        </tr>
        <tr>
          <td><input type="submit" id="submit" name="save_user" value="Create User"></td>
        </tr>
      </table>
    </form>
  </div>
</div>

用于验证电子邮件php提供

$email="test@gmail.com" //your email to validate here
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
       echo "E-mail is valid";
}
else
{
      echo "E-mail is not valid";
}

并且您不能使用eregi。你可以使用preg_match()

有关更多验证功能,请访问此链接

http://php.net/manual/en/filter.filters.validate.php

eregi()函数自PHP 5.3.0起已弃用。强烈反对依赖此功能。

所以这将是的实际原因

用i(PCRE_CASELESS(修饰语AND preg_match()是建议的替代方案。

正如Yadav Chetan的回答一样,使用FILTER_VALIDATE_EMAIL代替那些regx

 if(!eregi("^[_a-z0-9-]+('.[_a-z0-9-]+)*@[a-z0-9-]+('.[a-z0-9-]+)*('.[a-z]{2,3})$", $email))
            {  
                echo $msg = 'The email you entered is invalid. Please try again.';
            }
                else
            {  
                echo $msg = 'Your account has been made, <br /> please verify by clicking the activation link in your email.';  
            }