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


email validation in php(no javascript)

今天的问候,

我是php的新手,我的公司给了我一个注册表格的任务,我想知道如何使用php(而不是JavaScript)验证电子邮件地址好像一定会有一个。和@sign我用JavaScript做了t,但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>

编辑

您的公司要求您在服务器上进行地址验证。有时你想在两个地方都做()

  • 在客户端:在提交之前提供关于输入是否有效的即时反馈
  • 在服务器上:验证输入,以防出现错误输入

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

例如,您可以通过以下操作"获取"电子邮件地址:

$emailAddress = $_POST["email"];

$_POST数组特定于每个请求,并在字典中包含所有表单数据(我认为这实际上是一个数组,但不管怎样)。通常,您可以通过执行$_POST["the_input_id"]来获得表单数据,其中the_input_id是表单元素的输入ID。

一旦你得到了你需要的东西,那么你就可以进行验证了。

PHP端

请参阅使用正则表达式验证电子邮件地址,以找到一个好的RegEx来验证您的电子邮件地址。

据我所知,电子邮件地址没有"规范"的RegEx,因为不同的服务器允许不同种类的地址。实际有效电子邮件地址的RFC并没有得到统一遵循。

例如,在http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

然后使用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作为一个简单的例子。

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

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

另一种解决方案是使用phpfilter_var

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

您可以在文档

中看到更多信息

试试这个

<input type="email">

希望它的简单

包括"connect.php";需要"class.phpmailer.php";$mail=新PHPMailer();//---------------调整这些线路---------------------------------------$mail->用户名="email";//您的GMail用户名$mail->Password="passwd";//您的GMail密码$mail->AddAddress($_POST['t5']);$eml1=$_POST['t5'];//$ky=$_POST[$key];$mail->AddReplyTo='';$mail->ReturnPath='';$mail->FromName='';//发件人姓名$mail->主题='';$sql="SELECT*FROM$tbl_name WHERE emailid='$eml1'";$result=mysql_query($sql);$row=mysql_fetch_array($result);$key=$row['randomkey'];$mail->Body="点击此链接进行确认登录帐户http://domain/passwd.php?evalue=$eml1&rdk=$key";//-----------------------------------------------------------------------$mail->主机="ssl://smtp.gmail.com";//G电子邮件$mail->端口=465;$mail->IsSMTP();//使用SMTP$mail->SMTPAuth=true;//启用SMTP身份验证$mail->发件人=$mail->用户名;if(!$mail->Send())echo"Mailer错误:"$邮件->错误信息;其他的//header("Location:contact.php");echo"消息已成功发送";echo"检查您的电子邮件地址点击链接并创建新密码";echo"用于重定向的超链接";