会社のメールアドレスを検証するコードを実装しようとしています。ユーザーが会社と仕事の電子メールを入力すると、両者は互いに互換性があるはずです。例として、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タグとregexタグは、他のアプローチを探していない限りここでは無関係ですね。しかし、もし会社のドメインが名前に合っていないとすれば? – chris85
あなたはstrposを使用していないときはそれを使用するべきですか?== false? 「真」はここで期待どおりに機能しますか? – Andreas
なぜこのメールと会社のことを強制したいのか不思議です。私はXという名前の会社で働いていますが、私のメールは会社の歴史のためにもっと一般的な名前Yです。私は実際に誰かが自分の仕事や会社内のどこにいてもX社の電子メールを持っているとは思わない(それは非常に大きな会社だ) – Andreas