2013-12-13 426 views
0

問候一天,電子郵件驗證(不需要JavaScript)

我新的PHP和我的公司給我登記表的任務, 我想知道如何使用PHP來驗證電子郵件地址(不與JavaScript) 像那裏必須一個。和@ sign 我已經使用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> 
+4

? –

+0

顯示你的代碼到目前爲止你已經嘗試 – vishnu

回答

0

您可以使用正則表達式來驗證你使用谷歌這個問題的電子郵件地址

$email = "[email protected]"; 
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

+0

謝謝你在哪裏把這段代碼和如何在我的代碼中實現它? – Ritesh

+0

只是放在php標籤兄弟之間! :)檢查這個[php教程](http://www.tizag.com/phpT/)。適合php初學者 – zai

0

試試這個

<input type="email"> 

希望它簡單

+0

糾正我,如果即時通訊錯誤,但每個知識都能夠改變本地html,所以這不是一個適當的方式來驗證任何東西。 –

+0

我認爲它只適用於html5。 –

+0

使用jQuery和這個插件http://jqueryvalidation.org/email-method/我不確定HTML5驗證是多麼有趣。 – Corni

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。實際上是一個有效的電子郵件地址的RFC並不統一。

例如,一個非常激烈的RegEx可在http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

然後使用PHP內置的正則表達式的功能,即:

$EmailRegEx = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-][email protected][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 = "[email protected]"; 

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

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

一個簡單的例子見http://www.developphp.com/view_lesson.php?v=224

+0

驗證Plz給我一個正確的代碼或做我的代碼編輯。 我已經完成了谷歌搜索,並嘗試這麼多的功能,但他們不工作,所以PLZ做我的代碼編輯並粘貼在這裏 – Ritesh

+1

StackOverflow的人是超級慷慨,非常渴望幫助你,但你必須(除其他外)1)清楚解釋你的問題,2)展示你已經試圖做的事情和(不工作的)結果,3)詢問一個有建設性的問題,應該怎麼做/它不工作的根本原因。我對這些非常寬容,但更嚴肅的SO用戶不會以這種方式要求提供代碼。 –

+0

我粘貼我的代碼上面plz看到我已經完成了掃管笏。 我高清完成使用這個東西的JavaScript,它工作正常,但現在我必須做同樣的事情使用PHP。 @tacos_tacos_tacos – Ritesh

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