вернуть сообщение, если вход находится в массиве - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть проверка формы, которая до сих пор возвращает сообщение об ошибке, если в области ввода присутствует одно из двух определенных слов / фраз:

add_filter('gform_validation_3', 'custom_validation');
function custom_validation($validation_result){
    $form = $validation_result["form"];
    foreach($form['fields'] as &$field){
        /* Check that the value of the field that was submitted. e.g. the name="input_1" that is generated by Gravity Forms */
        if($_POST['input_4'] == "Your First Name" || "SEO"){
         // set the form validation to false
         $validation_result["is_valid"] = false;
            //The field ID can be found by hovering over the field in the backend of WordPress
             if($field["id"] == "4"){
                 $field["failed_validation"] = true;
                 $field["validation_message"] = "This field needs to be your actual first name.";
             }
         }
        }
    //Assign modified $form object back to the validation result
    $validation_result["form"] = $form;
    return $validation_result;
}

Сейчас я не уверен, как создать массив для определения слов, которые не допускаются, чтобы у меня был намного более длинный список?

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Прежде всего, первое «если» неверно, я думаю, что вы имели в виду:

if($_POST['input_4'] == "Your First Name" || $_POST['input_4'] =="SEO")

Хороший способ достичь того, что вы хотите:

$forbidden_words = ["Your First Name", "SEO"];
$is_valid = !in_array($_POST['input_4'], $forbidden_words); //false if the word is in array

После этого Вы можете go:

if($is_valid)
     //do magic
1 голос
/ 22 апреля 2020

Вы можете использовать функцию in_array ()

<?php

$blacklisted = ['some', 'ugly', 'bad', 'words'];

if(in_array('ugly', $blacklisted)){
  echo('bad word spotted');
}

демо: https://repl.it/@kallefrombosnia / DarkvioletDeepPolygons

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