我試圖執行驗證公司電子郵件的代碼。當用戶進入公司工作時,他們都應該彼此兼容。例如,如果在QUT工作的用戶在作爲QUT進入公司時向系統註冊,那麼電子郵件域必須是@ qut.edu.au。下面的代碼顯示了我已經實現的方法。但由於某種原因,代碼中存在一個邏輯錯誤,它給出了「您必須輸入有效的電子郵件」(假設公司名稱未包含在域中時觸發),但每次運行時都會彈出。任何幫助將不勝感激。謝謝!檢查是否與公司名稱兼容的電子郵件域名
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/abp/core/init.php';
include 'includes/head.php';
include 'includes/navigation.php';
$email = ((isset($_POST['email']))?sanitize($_POST['email']):'');
$email = trim($email);
$password = ((isset($_POST['password']))?sanitize($_POST['password']):'');
$password = trim($password);
$company_name = ((isset($_POST['company_name']))?sanitize($_POST['company_name']):'');
$company_name = trim($company_name);
$errors = array();
**$domain = array_pop(explode('@', $email));**
if($_POST){
// form validation
if(empty($_POST['email']) || empty($_POST['password'])){
$errors[] = 'You must provide email and password.';
}else {
//validlate email
**if (strpos($domain, $company_name) !== true) {**
$errors[] = 'You must enter a valid email.';
}else{
// check if email exist in the databse
$query = "SELECT * FROM users WHERE email=?";
$stmt = $db->prepare($query);
$stmt->bind_param("s", $email);
$stmt->execute();
$stmt->store_result();
也許你需要'stripos函數',http://php.net/manual/en/function.stripos.php除非你正在尋找其他方法,否則JavaScript和正則表達式標籤在這裏似乎毫不相關?但是,如果公司域名不符合該名稱呢? – chris85
當你使用strpos不是它!==你應該使用false嗎? 「真」在這裏按預期工作嗎? – Andreas
我也很好奇你爲什麼要強制這封電子郵件和公司的事情。我在一家名爲X的公司工作,但由於公司歷史,我的電子郵件名稱更常見。我實際上並不認爲任何人在我的工作或公司內部的任何地方(包括非常大的公司)都有X的電子郵件 – Andreas