2013-11-26 23 views
0

我需要檢查用戶在註冊時輸入的電子郵件是否有效/真實,這意味着只要符合正確的電子郵件格式,他們就不能輸入任何他們想要的內容,我需要真正能夠發送郵件給它。Laravel 4:在註冊期間檢查電子郵件是否真實

我也不想做電子郵件確認,但是,用戶必須單擊電子郵件中的鏈接才能註冊。我只想讓它在現場進行驗證。

+0

我認爲你能做的最好的,是驗證域是否存在,即使它不會爲所有工作 – bumperbox

+0

要知道它是有效的唯一方法是你不想這樣做,所以..? – 2013-11-26 03:21:07

+0

您可以驗證域是否存在,連接到SMTP服務器,甚至嘗試向用戶發送郵件。正確配置的SMTP服務器不會告訴您用戶是否存在,它將接受所有郵件並將郵件丟棄給不存在的用戶。在用戶干預之外沒有真正的驗證方法。 – Snowburnt

回答

0

您需要在域名的MX記錄上進行DNS查找,然後確保mx域名可聯繫。我認爲這要儘可能地接近你。

您可能還會考慮讓第三方爲您進行驗證 - 例如,實施Google OAuth作爲您網站的註冊方法。

+1

除了使用帶寬和CPU之外,這沒有任何好處 – 2013-11-26 03:32:19

+0

不正確。它會捕獲那些沒有配置郵件的人輸入亂碼域名和域名。達到一點,我會同意。 – Malcolm

1

您可以進行所有需要的驗證,但最終最好的唯一方法是發送一封包含驗證鏈接的電子郵件。

另外,由於有大量有效和奇怪的電子郵件,你會認爲不是,這個想法通常是有相當寬鬆的驗證。 Take a look here各種有趣的電子郵件。

0

對於Laravel(你已經提到它是問題的標籤),我建議你使用Laravel的原生特性作爲Validation:Laravel 3/Laravel 4。 下面是我如何使用它在POST控制器:

// Rules for form validation 
$rules = array(
     'email' => array('required', 'email', 'unique:users,email'), // Email is required and should satisfy E-mail format and it should be unique for table users. 
); 

// Form validation 
$validation = Validator::make(Input::all(), $rules); 

if($validation->fails()) { 
    // Flash validator with input values and errors to some controller 
     Former::withErrors($validation); 
     return Redirect::to_action('some.controller') 
      ->with_input() 
      ->with_errors($validation); 
    } 

} 

一般來說PHP的使用情況下,你可以使用PHP的像這樣的原生功能檢查:

filter_var($email, FILTER_VALIDATE_EMAIL) 
+0

這樣做的格式驗證,這很好,但無法驗證電子郵件是否是真實的。 –

相關問題