php中的电子邮件验证(没有javascript)

时间:2013-12-13 06:51:03

标签: php

当天的问候,

我是php的新手,我公司给了我一份注册表格, 我想知道如何使用PHP验证电子邮件地址(不使用JavaScript) 就像必须有一个。和@符号 我已经使用JavaScript,但TL表示必须使用PHP。 我的Html代码如下 任何人都可以帮忙吗?

<html>
<head><title>Form validation</title>
    <script type="text/javascript">
/*function validateEmail() {
    var emailText = document.getElementById('email').value;
    var pattern = /^[a-zA-Z0-9\-_]+(\.[a-zA-Z0-9\-_]+)*@[a-z0-9]+(\-[a-z0-9]+)*(\.[a-z0-9]+(\-[a-z0-9]+)*)*\.[a-z]{2,4}$/;
    if (pattern.test(emailText)) {
        return true;
    } else {
        alert('Bad email address: ' + emailText);
        return false;
    }
}

window.onload = function() {
    document.getElementById('email_form').onsubmit = validateEmail;
}
*/
</script>


</head>
<body>

<form action="<?php echo base_url();?>index.php/validation_control/insert_to_db"  method="post" id="email_form" onsumbit="return myFunction()">
<table align="center" border="2">
<tr><td>Username :- <td><input type="text" name='uname'/></td></td></tr>
<tr><td>First Name :- <td><input type="text" name='fname'/></td></td></tr>
<tr><td>Last Name :- <td><input type="text" name='lname'/></td></td></tr>
<tr><td>Email :- <td><input type="text" name='email' /><?php //echo $emailErr;?></td></td></tr>
<tr><td>Password :-<td><input type="password" name='pass' id='pass'/></td></td></tr>
<tr><td>Confirm Password :-<td><input type="password" name='cnfpass' id='cnfpass'/></td></td></tr>
<tr><td>Status :-<td><input type="radio" name="status" value="active" />Active<input type="radio" name="status" value="deactive" />Deactive<input type="radio" name="status" value="delete" />Delete</td></td></tr>
<tr><td align="center" colspan="2"><input type="submit" name="sbmt" id="sbmt" value="Submit" onclick="Javscript:validateEmail"/></td></tr>


</table>
</form>
</body>
</html>

5 个答案:

答案 0 :(得分:3)

修改

贵公司要求您在服务器上进行地址验证。有时你想在两个地方都这样做,即:

  • 在客户端上:在提交之前提供有关输入是否有效的即时反馈
  • 在服务器上:验证输入,以防通过
  • 输入一些错误信息

您的表单数据通过POST请求(通常)提交给服务器,因此处理请求的PHP端点必须从请求中获取表单字段并对其进行验证。

例如,您可以通过以下方式“获取”电子邮件地址:

$emailAddress = $_POST["email"];

$_POST数组特定于每个请求,并且所有表单数据都在字典中(我认为这是一个数组,但无论如何)。通常,您可以通过$_POST["the_input_id"]获取表单数据,其中the_input_id是表单元素的输入ID。

获得所需资料后,即可进行验证。

PHP端

请参阅Using a regular expression to validate an email address找一个好的RegEx来验证您的电子邮件地址。

我知道电子邮件地址没有“规范”RegEx,因为不同的服务器允许不同类型的地址。实际上是有效电子邮件地址的RFC未统一遵循。

例如,http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html可以使用非常激烈的RegEx。

然后使用php的内置RegEx函数,即:

$EmailRegEx = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$";
$InputAddress = "tacos_tacos_tacos@nowhere.com";

$EmailAddressValid = preg_match($EmailRegEx, $InputAddress);

if ($EmailAddressValid) {
    $this->_SendMe();
}

有关简单示例,请参阅http://www.developphp.com/view_lesson.php?v=224

答案 1 :(得分:0)

if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
     //Valid email!
}

您可以看到more in the documentation

答案 2 :(得分:0)

试试这个

<input type="email">

希望它简单

答案 3 :(得分:0)


 include 'connect.php'; 



require 'class.phpmailer.php';
    $mail = new PHPMailer();

    // ---------- adjust these lines ---------------------------------------
    $mail->Username = "email"; // your GMail user name
    $mail->Password = "passwd"; // your GMail password
    $mail->AddAddress($_POST['t5']);
    $eml1=$_POST['t5'];
    //$ky=$_POST[$key];
    $mail-> AddReplyTo ='';
    $mail->ReturnPath='';

    $mail->FromName = ''; // sender name

     $mail->Subject = '';
     $sql="SELECT * FROM $tbl_name WHERE emailid='$eml1'";
     $result=mysql_query($sql);

     $row = mysql_fetch_array($result);
     $key=$row['randomkey'];
     $mail->Body = "Click to this link for conformation login Account http://domain/passwd.php?evalue=$eml1&rdk=$key";   

    //-----------------------------------------------------------------------

    $mail->Host = "ssl://smtp.gmail.com"; // GMail
    $mail->Port = 465;
    $mail->IsSMTP(); // use SMTP
    $mail->SMTPAuth = true; // turn on SMTP authentication
    $mail->From = $mail->Username;
    if(!$mail->Send())
        echo "Mailer Error: " . $mail->ErrorInfo;
    else
       //   header("Location: contact.php");
      echo 'Message was Sucessfully Sent  ';
      echo 'Check Your Email Address Click to Link and Create New Password';


      echo 'your hyperlink for redirect ';


答案 4 :(得分:0)

您可以使用正则表达式来验证电子邮件地址

$email = "youremail@yahoo.com";
define( 'EMAIL_REGEX',
        '^(([0-9A-Za-z]|[0-9A-Za-z][0-9a-zA-Z_\.-]+)@'.__DOMAIN_REGEX__.')$' );

if ( preg_match( '/'.EMAIL_REGEX.'/', $email ) ) {
    echo 'Email Adress is valid';
} else {
    echo 'Email Adress is not valid';
}

替代解决方案是使用php filter_var