Проверка логина регулярным выражением

Печать RSS
428

Автор
Дух
0
кароч вот весь код регистрации.
<?php
require "connect.php";
if ($_SESSION['login']){header ('Location: '.$_SESSION['login'].''); exit();}

if ($_POST['reg']){
    
$login = $_POST['login'];
$pass = md5($_POST['pass']);
if (!preg_match("/^[a-z0-9]{3,10}$/",$login)){$errorlogin = 'Логин только из латинских букв в нижнем регистре и цифр от 3 до 10 символов';}

$row = mysqli_fetch_array(mysqli_query($connect, "SELECT login FROM users WHERE login='$login'"));
if ($row['login']){$dudlelogin = 'Логин уже зарегистрирован. Введите другой логин.';}


if (!$errorlogin AND !$dudlelogin){
$row = mysqli_query($connect, "INSERT INTO users (login,pass) VALUES('$login','$pass')");
$_SESSION['login'] = $login;
if ($_SESSION['login']){header ('Location: '.$_SESSION['login'].''); exit();}
}

}

mysqli_free_result($row);
mysqli_close($connect);
?>
Посоветуйте что добавить или убрать или поменять

2000 лет д.н.э.
0
$_POST['login'] = trim($_POST['login']); просто хороший тон. иногда случайно пробел прожимают
_______
$_SESSION['login'] = $login; для безопасной авторизации этого мало. в случае перехвата сессии учетку просто угонят.
я бы добавил хеш (ип+юзерагент), и сверял бы их
ну и в куку че то писать, если нужна возможость автоматической авторизации спустя пол-часа отсутствия
А

Чатланин
0
Так перводи сам в нижний регистр - mb_strtolower($login); да и все. Юзеру не нужно заморачиваться.
Автор
Дух
0
ramzes, вроде бы регулярка итак не пропускает пробелы.. А если ИП динамический?

2000 лет д.н.э.
0
ramzes, вроде бы регулярка итак не пропускает пробелы.. А если ИП динамический?
MaZaHaKeR (Сегодня / 00:34)
регулярка будет ругать юзера если он пробел влупит, проще его удалить чем заставлять вводить по новой.
ип можно не весь брать, допустим первые две части. можно конечно и чисто по юзерагенту, но это ненадежно, тот же хром у большинства имеет одинаковый уа.
динамический ип все равно не меняется каждые 5 минут. опять же. если будут куки, то ресет авторизации в сессии юзер даже не заметит, его на куках авторизирует автоматом, и сгенерит новые данные для сессии.
Автор
Дух
0
ramzes, спасибо за советы! А подскажешь как это правильно реализовать? Я с куками еще дел не имел

2000 лет д.н.э.
0
точно так же как с сессией, разница лишь в том что задаются куки специальной функцией http://php.net/setCookie и задавать их надо до отправки данных в браузер
а читаются так же из массива _COOKIE
и главное. данным от куки доверять нельзя, т.е. их можно подделать, соответственно их обязательно надо фильтровать и проверять на валидность (аналогично проверке данных из формы)
Изменил: ramzes (12.11.2016 / 15:46)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск