- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
defined('HEADER') or die();
$nameChars = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
$ErrorStr = NULL;
if($cfg->login_registration != 'On' || isset($_SESSION['login']))
return script::firbidden();
$keys = array('login', 'passw', 'passw2', 'email', 'fname', 'lname', 'code');
$post = script::apost($keys);
if(isset($_POST['submit'], $_SESSION['captcha'])) {
$user = new user($post['login']);
if(strtolower($post['code']) != $_SESSION['captcha']) {
$ErrorStr = "Неверный код с картинки";
unset($_SESSION['captcha']);
} else if($user->load()) {
$ErrorStr = "Логин уже зарегистрирован";
} else if(!preg_match("/^[0-9A-z]{4,16}$/", $post['passw'])) {
$ErrorStr = "Неверный пароль";
} else if($post['passw'] != $post['passw2']) {
$ErrorStr = "Пароли не совпадают";
} else if(!preg_match("/^([$nameChars]{1}){2,16}$/iu", $post['fname'])) {
$ErrorStr = "Имя введено не верно";
} else if(!preg_match("/^([$nameChars]{1}){2,16}$/iu", $post['lname'])) {
$ErrorStr = "Фамилия введена не верно";
} else if(!preg_match("/^[A-z0-9\.\-\_]{3,16}\@[A-z0-9\.\-]{5,16}$/i", $post['email'])) {
$ErrorStr = "Почтовый адрес введен неверно";
} else {
$user->passw = md5($post['passw']);
$user->email = strtolower($post['email']);
$user->fname = $post['fname'];
$user->lname = $post['lname'];
if(!$user->save())
$ErrorStr = "Невозможно сохранить файл пользователя";
else
return script::redirect('h=login');
}
}
...
istem 26.12.2010 23:46 # +4
--
имя, фамилия ... {2,16}
Добро пожаловать, ху ли
Devzirom 27.12.2010 00:08 # 0
istem 27.12.2010 00:11 # 0
Lure Of Chaos 27.12.2010 00:58 # +6
я хочу ввести свой любимый пароль %+666&999+% а мне говорят, что он неправильный, хны!
ага, вводи, сука, свое 123456 и все!
istem 27.12.2010 01:23 # +1
щас кое-кто придёт и копирайт спросит...
--
а после "%+666&999+%" php-программист усомнится в своей компетенции...
Lure Of Chaos 27.12.2010 01:29 # +2
istem 27.12.2010 01:42 # 0
Осталось получить патент на этот пароль...
Lure Of Chaos 27.12.2010 01:49 # 0
Devzirom 27.12.2010 01:54 # −5
istem 27.12.2010 02:35 # +2
"Моя личная кабинка → Настройки → Персональные → Уведомлять меня о новых комментариях к моему говнокоду → Нет, прекратите это немедленно!"
Ice 27.12.2010 02:16 # 0
istem 27.12.2010 02:36 # 0
--
(чего-то уже понеслось куда-то вдаль)
Devzirom 27.12.2010 02:39 # −2
guest 27.12.2010 02:42 # +1
bugmenot 27.12.2010 02:44 # 0
Ice 27.12.2010 02:45 # +3
И несколько мило наблюдать в данном случае ООП и процедурку, когда валидацию параметров можно было без труда реализовать на стратегии.
bugmenot 27.12.2010 02:48 # +5
Ice 27.12.2010 02:51 # 0
Devzirom 27.12.2010 02:58 # −1
Ice 27.12.2010 03:06 # +2
Говно =)
1. Можно единичку вообще убрать.
2. Использована запоминающая группировка не в том месте и не в то время.
Ice 27.12.2010 03:09 # +1
Devzirom 27.12.2010 03:11 # +1
Ice 27.12.2010 03:22 # +1
Devzirom 27.12.2010 04:22 # 0
имя файла = логин + .xml
самое важное в файле - хеш пароля, а остальное о пользователе - просто хлам, который нужен, чтобы просто обращаться к пользователю и иметь возможность отправить сообщение на почтовый ящик, для восстановления пароля.
Так-же в файлах находится и другая информация, о которой вам пока рано знать =)
Ice 27.12.2010 04:28 # +4
Devzirom 27.12.2010 04:38 # 0
Насчёт чистки, файлы удаляются будут через определенный период времени. Допустим через месяц не измененные, или по запросу администратора или владельца
Ice 27.12.2010 04:44 # +2
И плюс в строке $cfg->login_registration != 'On' изменил быстринг на буул=)
Смотрю код выборочно, так как цели разнести его в щепки перед собой не ставил=) С Ув. =)
Devzirom 27.12.2010 05:37 # 0
На самом деле, никто так и не заметил, что не проверяется пригодность логина, что не стирается код капчи из сессии... Этот код уже переписан, не стало
множества if-else if, переменная $ErrorStr превратилась в массив,
у фамилии и имени, проверяется только длина /^.{2,16}$/iu, проверку email'а менять не стал, только добавил длинны, для xn доменов. С паролями решил повременить.
Предусмотреть всего невозможно, как не крути, обязательно найдется тот, кто скажет, что это говнокод =) И это стимулирует! =)
С Ув! И с наступающим НГ!
Ice 27.12.2010 05:45 # +1
Ice 27.12.2010 14:22 # 0
То есть Вы не будете против, если у меня будет имя, скажем, !@#$%^&*?
Lure Of Chaos 27.12.2010 15:23 # +1
цензуро?
bugmenot 27.12.2010 15:39 # 0
Ice 27.12.2010 15:46 # 0
bugmenot 27.12.2010 17:23 # 0
Ice 27.12.2010 15:46 # 0
Devzirom 27.12.2010 22:59 # 0
guest 27.12.2010 03:04 # +1
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
istem 27.12.2010 03:06 # 0
guest 27.12.2010 03:09 # +1
Где такой слабый php нашли?
istem 27.12.2010 03:40 # 0
Как правило, проверка email пользователя, в большинстве своём, сводится к действиям отправки на указанный email некоего условного проверочного кода, которое впоследствии детектится с привязкой к этому пользователю. Тысячам сайтов нет нужды особо точно контролировать email.
То есть, получается - в интересах пользователя ввести правильный email адрес.
Отсюда и тысячи велосипедиков...
inkanus-gray 27.12.2010 03:05 # +6
Про ограничение на длину. Недавно завёл себе ящик на сайте
P.S. Извините, что поддался общему настроению и обсуждаю проверку валидности адресов.
Ice 27.12.2010 03:12 # 0
Devzirom 27.12.2010 03:23 # −1
inkanus-gray 27.12.2010 19:43 # 0
bugmenot 27.12.2010 20:59 # 0
inkanus-gray 27.12.2010 21:05 # 0
bugmenot 27.12.2010 22:18 # +2
inkanus-gray 28.12.2010 00:36 # +1
http://ps.1september.ru/view_article.php?ID=201001802
inkanus-gray 27.12.2010 21:15 # 0
Ice 28.12.2010 02:20 # 0
istem 27.12.2010 02:50 # −1
Хм... И к чему такой вопрос?
Devzirom 27.12.2010 04:26 # 0
istem 27.12.2010 11:27 # 0
:)
Devzirom 27.12.2010 01:26 # 0
Lure Of Chaos 27.12.2010 01:56 # +1