Codeigniter не расшифровывает адрес электронной почты - PullRequest
0 голосов
/ 16 июня 2019

Я отправляю свой адрес электронной почты через форму, отправляемую ajax контроллеру, и данные для ajax создаются с помощью этой функции:

// Function "serializeToJson" - Serialize form data, merge new object and returns json object
function serializeToJson(element, newObj){
    // Serialize form and split into Json Object
    var data = element.serialize().split("&");
    var object = {};
    for(var key in data){
        object[data[key].split("=")[0]] = data[key].split("=")[1];
    }

    // Merge new json obj to existing json object
    const target = {};
    $.extend(target, newObj, object);

    // return the final json object
    return target;
}

и в моем аяксе

data : serializeToJson(SUform, {action:'process_signup'}),

Письмо, которое отправляется через форму, получает urlencoded, т.е.

XXXXXXXXXX% 40gmail.com

% 40 должен быть декодирован до @ , когда я получу данные в моем контроллере. В моем контроллере я установил следующие правила проверки формы для электронной почты:

$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|is_unique[users.email]');

Ошибка:

Поле электронной почты должно содержать действительный адрес электронной почты

Что я хочу?

Есть ли способ, с помощью которого я могу urldecode электронной почты в форме проверки?

1 Ответ

1 голос
/ 16 июня 2019

Вы можете использовать:

trim|urldecode|valid_email

Это должно работать так, как говорят в документах, что вы можете использовать любую функцию php как «правило», и она будет применяться.

Вам все равно придется urldecode снова, когда вы положите его в базу данных.

...