|
|
|
| Вобщем у меня есть проверка пароля(допустимы только латинские буквы и цифры, длинна от 3 до 10 символов):
if((mb_strlen($_POST['pass']) < 3 || mb_strlen($_POST['pass']) > 10) && (preg_match("/[^\da-zA-Z_]+/", trim($_POST['pass']))))
echo 'ERROR';
else
echo 'OK';
|
Но через проверку свободно проходят пароли с любыми наборами символов, любой длинны. В чем может быть проблема? | |
|
|
|
|
|
|
|
для: Z3RO
(01.05.2011 в 15:54)
| | в mb_strlen укажите кодировку символов , регулярное выражение "привяжите" к началу и концу строки и уберите "крышку" | |
|
|
|
|
|
|
|
для: Slo_Nik
(01.05.2011 в 16:08)
| | Вообще не понял. Можете расписать подробней? | |
|
|
|
|
|
|
|
для: Z3RO
(01.05.2011 в 16:10)
| | в функции mb_strlen укажите дополнительный параметр, который определяет кодировку символов в строке, если он не указан, то принимается внутренняя кодировка | |
|
|
|
|
|
|
|
для: Z3RO
(01.05.2011 в 15:54)
| | Нужно поправить регулярное выражение (за одно и проверку длины строки в него упаковать)
<?php
if(preg_match("/^[\da-zA-Z_]{3,10}$/", trim($_POST['pass']) ) )
echo 'ERROR';
else
echo 'OK';
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(01.05.2011 в 17:04)
| | Всё равно можно зарегистрироватся с паролем из символов, которые не являются латинским буквами и/или цифрами. | |
|
|
|
|
|
|
|
для: Z3RO
(01.05.2011 в 19:04)
| | Есть такое дело, нужно еще отрицание добавить
<?php
$test = "Символы";
if(!preg_match("/^[\da-zA-Z_]{3,10}$/", trim($test)))
echo 'ERROR';
else
echo 'OK';
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(01.05.2011 в 20:36)
| | Работает. Огромное спасибо. | |
|
|
|
|
|
|
|
для: cheops
(01.05.2011 в 20:36)
| |
<?php
$test = "Символы";
if(!preg_match("/[\d\w]{3,10}/i", trim($test)))
echo 'ERROR';
else
echo 'OK';
?>
|
А, вообще-то, не этично, по крайней мере, хранить пароли пользователей в первозданном виде. Да и украсть их могут... | |
|
|
|
|
|
|
|
для: Deed
(02.05.2011 в 09:15)
| | >А, вообще-то, не этично, по крайней мере, хранить пароли пользователей в первозданном виде.
>Да и украсть их могут...
О хранении вроде речи еще не было, только о составе пароля... | |
|
|
|
|
|
|
|
для: cheops
(02.05.2011 в 10:49)
| | Я понимаю... Но ограничивать пользователя паролем только на латиннице это даже не эстетично. | |
|
|
|
|
|
|
|
для: Deed
(02.05.2011 в 18:05)
| | Есть такое дело. Однако, в каждой избушке свои погремушки, считает разработчик, что ему в силу причин так будет удобнее - его разработчика право, в случае чего ему потом переделывать :) | |
|
|
|
|
|
|
|
для: cheops
(02.05.2011 в 18:10)
| |
<?php
function pass_hash($pass){
if(isset($_POST['password1'])&&isset($_POST['password2'])){
if($_POST['password1']==$_POST['password2']){
$_SESSION['pass_mail']=$_POST['password1'];// Для отправки юзеру
$pass=$_POST['password1'];
$pass=substr($pass,0,20);
$pass=htmlspecialchars(stripslashes($pass));
$pass=md5($pass);
$pass=substr($pass,4,28);
$pass=strrev($pass);
return $pass;
}
else{$_SESSION['reg_errors']="Введенные Вами пароли не совпадают!";
$_SESSION['go']=1; // Для инклюда reg_forms.php
header("Location:".$_SERVER['HTTP_REFERER']); /*Перекидываем назад*/
exit();
}
}
else {$_SESSION['reg_errors']="Напишите 2 раза пароль!";
$_SESSION['go']=1; // Для инклюда reg_forms.php
header("Location:".$_SERVER['HTTP_REFERER']); /*Перекидываем назад*/
exit();
}
}
?>
|
Вот, на скорую руку фанкшин для пассворда. И пусть счастливый юзер нажимает у себя любые клавиши. | |
|
|
|