Problem с авторизацией
Вот код
@$username=$_POST['username'];
@$password=$_POST['password'];
if (isset($username, $password))
{
$password=addslashes($password);
//$username=htmlspecialchars(trim(addslashes($username)));
//$password=htmlspecialchars(trim(addslashes($password)));
//$password=md5($_POST['password']);
$sql->db_connect();
$sql->db_select("users","userID,name,password","name='".$username."' and password='".md5($password)."'");
$sql->db_Fetch();
$rows=$sql->db_rows();
if ($rows !=1)
{
echo "Такого пользователя нет!";
}else
{
session_start();
$_SESSION['name']=$username;
echo "Вы вошли как:".$_SESSION['name'];
}
}else
{
$func->login_form();
}
Вывел для проверки данные из бд юзверя определенного и вывел вводимые данные и результат меня удивил
Pass:5f532a3fc4f1ea4
Такого пользователя нет!
---------------------------------
Your name:Microsoft
Your pass:5f532a3fc4f1ea403f37070f59a7a53a
Кто-нить расскажет почему так происходит?Уже незнаю где копать
Кто сможет обьяснить, почему именно 32 символа кодировка занимает?
вот от куда 32 символа лимит.
@$password=$_POST['password'];
if (isset($username, $password)){....}
Проверка в данном случае не имеет смысла, т.к. и $username и $password будут в любом случае инициализированны.
А обрезать md5 никак нельзяда?
@$password=$_POST['password'];
if (isset($username, $password)){....}
Проверка в данном случае не имеет смысла, т.к. и $username и $password будут в любом случае инициализированны.
substr();
не помогает
Ты этим чё хотел сказать?Умный чтоли?
Что именно не помогает?
Ты ж записываешь слово, обработанное md5 в БД. Соответственно, и проверять нужно такое же слово, обработанное md5. Зачем что-то резать? С паролями всё очень просто: ограничиваешь длинну, скажем, до 8-ми символов [A-Za-z0-9] и всё. Больше и не надо. А если кто-то не в состоянии придумать себе пароль, то придумывай им его сам:
(Примерно так, я не знаю, чем ты там пользуешься для работы с БД, поэтому по аналогии с db_select написал).
Соответственно, в БД будет храниться зашифрованная строка, а значение переменной $pass отдашь юзерю.
А придумывать пароль самому смысла не вижу, проще вообще не региться, т.к. человек его сам забудет. Я просто поставил ограничение в 15 символов(т.к. длина от 5 до 15) и если массив $_POST отсутствует, то отправляем в баню юзера.
нет. не это он имел ввиду, это ты вопрос не правильно задал.
md5-хэш даже 1го символа все равно будет строчкой, длина которой 32 симовла, и смысле обрезать хэш ни автор поста (на который ты так обозлился :)), ни я, не вижу.
PS: ограничение поставленное в БД касается именно хэша, а не пароля, который вводит пользователь (если я тебя правильно понял у тебя ограничение именно на пароль от 5 до 15ти символов?). ограничивать длину пароля надо скриптом ) или самый глупый вариант - записывать тупо и прямо пароль в БД. тогда ограничение на поле "пароль" сканает =)
в общем как-то так.
За то, что разьяснил про хэш, огромное спасибо тебе!