我试图执行验证公司电子邮件的代码。当用户进入公司工作时,他们都应该彼此兼容。例如,如果在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