Я пытаюсь реализовать код для проверки электронной почты компании. Когда пользователь вводит корпоративную и рабочую электронную почту, они должны быть совместимы друг с другом. Например, если пользователь, работающий в 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
, php.net/manual/en/function.stripos.php Теги Javascript и regex кажутся здесь неуместными, если только вы не ищете другие подходы? Но что, если домен компании не совпадает с названием? - person chris85   schedule 29.08.2017true
здесь так, как ожидалось? - person Andreas   schedule 29.08.2017if (stripos($domain, $company_name) === false)
. Затем это покажет ошибку, если название компании не находится в домене. Но, как говорит @Andreas, не каждое название компании частично или полностью появляется в домене электронной почты. - person fubar   schedule 29.08.2017fms-corp.com
… - person   schedule 29.08.2017stripos
. Тем не менее, это слабый метод проверки. Лучше использовать подтверждение по электронной почте или сравнить доменные имена. - person fubar   schedule 29.08.2017||
вместо&&
- person fubar   schedule 29.08.2017