PHP условия для регистрационной формы

Это часть кода условий для заполнения формы.
У меня (у чайника) 2 вопроса:
1) Данный код позволяет для заполнения логина ввести пробел, а я хочу запретить пробели в логине, как это реализовать?
2) Если логин написали правильный, но потом ошибка в пароле, у меня выводит ошибку, но при этом логин приходиться снова написать... можно же как-то сохранить правильно заполненный логин в таком случае?

// login
else if (iconv_strlen($login) < 1){
        $_SESSION['error']['login'] = "Please, write login!";
    } else if (!preg_match('/^[a-zA-Z0-9\s]+$/', $login)) {
        $_SESSION['error']['login'] = 'Name can only contain letters and numbers';
}
// password
else if (iconv_strlen($password) < 1){
        $_SESSION['error']['password'] = "Please, write password!";
    } else if (iconv_strlen($password) != iconv_strlen($password_confirm)){
        $_SESSION['error']['password_confirm'] = "Those passwords didn't match!";
        } else {
            $password = md5($password);
            $connect->query("INSERT INTO `users` (`full_name`, `login`, `email`, `password`, `avatar`) VALUES ('$full_name', '$login', '$email', '$password', '$avatar')");
        }

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

Автор решения: Denis640Kb

Чтобы запретить ввод пробелов через регулярное выражение - Вам необходимо удалить \s из него.
Чтобы задать количество символов в строке, Вы можете использовать {От скольки, до скольки}.
Пример (Ограничение по количеству символов в 10):

else if (iconv_strlen($login) < 1){
        $_SESSION['error']['login'] = "Please, write login!";
    } else if (!preg_match('/^[a-zA-Z0-9]{0,10}+$/', $login)) {
        $_SESSION['error']['login'] = 'Name can only contain letters and numbers';
}
// password
else if (iconv_strlen($password) < 1){
        $_SESSION['error']['password'] = "Please, write password!";
    } else if (iconv_strlen($password) != iconv_strlen($password_confirm)){
        $_SESSION['error']['password_confirm'] = "Those passwords didn't match!";
        } else {
            $password = md5($password);
            $connect->query("INSERT INTO `users` (`full_name`, `login`, `email`, `password`, `avatar`) VALUES ('$full_name', '$login', '$email', '$password', '$avatar')");
        }

Чтобы сохранить логин введённым, Вы можете либо передать значение в файл php с формой, и выводить его примерно так:

<input <?php if($login){ echo 'value: "'.$login.'"'?>>

В данном случае, мы проверяем наличие значения в переменной $login, и если оно присутствует, то добавляем его в value поля input.

Или же после передачи данных в основной файл php можно проставлять значение через js.

Или же использовать localstorage или cookie для добавления значения в поле ввода через javascript или php.

→ Ссылка