PHP代码错误。找不到我的逻辑错误

时间:2013-05-16 04:41:40

标签: php validation email

确定。所以这是我的代码。我正在尝试按照关于验证电子邮件的webtuts教程。但我的样本没有成功。它应该提醒用户它已输入无效的电子邮件。所以我的伙伴做的是他创建了“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>

3 个答案:

答案 0 :(得分:6)

用于验证电子邮件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

答案 1 :(得分:4)

自PHP 5.3.0起,

eregi()函数已被弃用。非常不鼓励依赖此功能。

所以这是实际的原因

带有i(PCRE_CASELESS)修饰符的

AND preg_match()是建议的替代方法。

在Yadav Chetan的回答中使用FILTER_VALIDATE_EMAIL而不是那些regx

答案 2 :(得分:0)

 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.';  
            }