Ошибки при подключении через PHP и обработке входящих данных

Что я вижу перед собой: Warning: Undefined array key "password" in D:\Site\php\check.php on line 4

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in D:\Site\php\check.php on line 4 Недопустимая длина пароля (минимум 5 символов)

  1. Почему только на password ругается?
  2. Что не так с trim? ему какие-то доп параметры надо передать? код:
<?php
    $login = filter_var(trim($_POST['login']),  FILTER_SANITIZE_FULL_SPECIAL_CHARS );
    $name = filter_var(trim($_POST['name']),  FILTER_SANITIZE_FULL_SPECIAL_CHARS );
    $password = filter_var(trim($_POST['password']),  FILTER_SANITIZE_FULL_SPECIAL_CHARS );
   
    if(mb_strlen($login) < 5 || mb_strlen($login) > 32){
        echo "Недопустимая длина логина (минимум 5 символов)";
        exit();
    }
    else if(mb_strlen($name) < 3 || mb_strlen($name) > 32){
        echo "Недопустимая длина имени (минимум 3 символа)";
        exit();
    }
    else if(mb_strlen($password) < 5 || mb_strlen($password) > 32){
        echo "Недопустимая длина пароля (минимум 5 символов)";
        exit();
    }

    $user = 'root';
    $pass = '';
    $db = 'users';
    $host = '127.0.0.1';
    $charset = 'utf-8';

    $pdo = new PDO("mysql:host=$host;dbname=$db;charset=$charset", $user, $pass);
    $query = $pdo -> query("INSERT INTO `users` (`login`,`name`,`password`)
    VALUES('$login','$name','$password')")
?>

Ответы (1 шт):

Автор решения: Алексей Шиманский

Почему только на password ругается?

Видимо потому, что только это поле и не существует в массиве. Смотри есть ли вообще на форме поле с таким именем.

Что не так с trim?

Банально для ответа на этот вопрос надо закинуть текст в переводчик - раз. Открыть документацию - два. Это два простых действия, которые необходимо сделать сразу, как видишь ошибку/предупреждение

Там будет сказано, что метод, в который можно было передавать null в качестве параметра - устарел, теперь можно передавать исключительно строки

→ Ссылка