Удаление Gmail / Hotmail из разрешенного ввода электронной почты - PullRequest
0 голосов
/ 28 мая 2020

В настоящее время у нас возникла проблема с формой бесплатной пробной версии в нашей компании. Мы хотим, чтобы регистрировались только le git компании, на данный момент существует много учетных записей Gmail и Hotmail и c, которые пользуются пробной версией, затем создают новые учетные записи, а затем получают еще одну бесплатную пробную версию.

Вот функция проверки электронной почты в контроллере модуля в PHP, просто интересно, как бы я отредактировал это, чтобы не разрешать учетные записи gmail и т. Д. c, поскольку я прыгнул на эту уже настроенную базу кода.

protected $allowAnonymous = ['index', 'do-something', 'render-form', 'submit-marketplace', 'validate-email', 'verify-code', 'create-company'];

public function actionValidateEmail()
{
    $email = $_POST['email'];

    $emailValid = false;

    $baseUrl = $_SERVER["ourcompany_API_BASE_URL"]."/userByEmail/";
    $apiKey = $_SERVER["ourcompany_API_KEY"];
    $authHeader = $_SERVER["ourcompany_HEADER"];

    $client = new \GuzzleHttp\Client();
    try {
        $response = $client->request('GET', $baseUrl . $email, [
            'headers' => [
                'content-type' => 'application/vnd.ourcompany.message-v1+json',
                'accept' => 'application/vnd.ourcompany.message-v1+json',
                'authorization' => $authHeader,
                'x-api-key' => $apiKey,
            ]
        ]);
        $emailValid = !($response->getStatusCode() == 200);
    } catch (ClientException $e) {
        // ClientException raised for 400 level errors
        $emailValid = true;
    }

    return json_encode(array("valid" => $emailValid));
}

Тогда внешний вид выглядит так.

   <form style="display: none;" method="post" id="create-company-form" action="/">
        <input
          type="hidden"
          name="action"
          value="ourcompany-in-action-module/ourcompany-in-action/create-company"
        />
        <input id="companyName" type="text" name="companyName" value="" />
        <input id="firstName" type="text" name="firstName" value="" />
        <input id="lastName" type="text" name="lastName" value="" />
        <input id="email" type="text" name="email" value="" />
        <input id="mobile" type="text" name="mobile" value="" />
        <input id="country" type="text" name="country" value="" />
        <input id="timezone" type="text" name="timezone" value="" />
      </form>

      <form style="display: none;" method="post" id="validate-email-form" action="/">
        <input
          type="hidden"
          name="action"
          value="company-in-action-module/company-in-action/validate-email"
        />
        <input id="emailValidationField" type="email" name="email" value="" />
      </form>

Любая помощь будет принята с благодарностью, спасибо сообществу.

1 Ответ

0 голосов
/ 28 мая 2020

Вы можете использовать RegExp со сценарием, чтобы узнать, является ли Gmail, а затем создать ошибку на входе.
Js решение:

function Clear() {
document.getElementById("error").innerHTML ='';
}
function CheckMail() {
    return RegExp(/([a-zA-Z0-9]+)([\.{1}])?([a-zA-Z0-9]+)\@gmail([\.])com/g);
}
function Validation(elem) {
isGmail=CheckMail();
var result = true;
if(isGmail.test(elem)) {
        result=false;
        $('#error').html('Gmail is not allowed!');
    }else{
     $('#error').html(' Domain Allowed!');
    }
    
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="test" type="email" onChange="Validation(this.value)" onClick="Clear()">

<p id="error"></p>

PHP решение:

function Test($value) {
    $notallowed=array(
      'gmail.com', 'gmail.it'
    );
     // Split the email address at the @ symbol
    $email_parts = explode( '@', $value );

    // Pop off everything after the @ symbol
    $domain = array_pop( $email_parts );
    if ( in_array( $domain, $notallowed ) ) {
      return false;
    }

      return true; 


}
if(Test('test@lol.com')==FALSE){
 echo 'Not allowed';   
}else{

 echo 'Allowed';   
}

Вы адаптируете это к своей ситуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...