- 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');
}
}
...
--
имя, фамилия ... {2,16}
Добро пожаловать, ху ли
я хочу ввести свой любимый пароль %+666&999+% а мне говорят, что он неправильный, хны!
ага, вводи, сука, свое 123456 и все!
щас кое-кто придёт и копирайт спросит...
--
а после "%+666&999+%" php-программист усомнится в своей компетенции...
Осталось получить патент на этот пароль...
"Моя личная кабинка → Настройки → Персональные → Уведомлять меня о новых комментариях к моему говнокоду → Нет, прекратите это немедленно!"
--
(чего-то уже понеслось куда-то вдаль)
И несколько мило наблюдать в данном случае ООП и процедурку, когда валидацию параметров можно было без труда реализовать на стратегии.
Говно =)
1. Можно единичку вообще убрать.
2. Использована запоминающая группировка не в том месте и не в то время.
имя файла = логин + .xml
самое важное в файле - хеш пароля, а остальное о пользователе - просто хлам, который нужен, чтобы просто обращаться к пользователю и иметь возможность отправить сообщение на почтовый ящик, для восстановления пароля.
Так-же в файлах находится и другая информация, о которой вам пока рано знать =)
Насчёт чистки, файлы удаляются будут через определенный период времени. Допустим через месяц не измененные, или по запросу администратора или владельца
И плюс в строке $cfg->login_registration != 'On' изменил быстринг на буул=)
Смотрю код выборочно, так как цели разнести его в щепки перед собой не ставил=) С Ув. =)
На самом деле, никто так и не заметил, что не проверяется пригодность логина, что не стирается код капчи из сессии... Этот код уже переписан, не стало
множества if-else if, переменная $ErrorStr превратилась в массив,
у фамилии и имени, проверяется только длина /^.{2,16}$/iu, проверку email'а менять не стал, только добавил длинны, для xn доменов. С паролями решил повременить.
Предусмотреть всего невозможно, как не крути, обязательно найдется тот, кто скажет, что это говнокод =) И это стимулирует! =)
С Ув! И с наступающим НГ!
То есть Вы не будете против, если у меня будет имя, скажем, !@#$%^&*?
цензуро?
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
Где такой слабый php нашли?
Как правило, проверка email пользователя, в большинстве своём, сводится к действиям отправки на указанный email некоего условного проверочного кода, которое впоследствии детектится с привязкой к этому пользователю. Тысячам сайтов нет нужды особо точно контролировать email.
То есть, получается - в интересах пользователя ввести правильный email адрес.
Отсюда и тысячи велосипедиков...
Про ограничение на длину. Недавно завёл себе ящик на сайте
P.S. Извините, что поддался общему настроению и обсуждаю проверку валидности адресов.
http://ps.1september.ru/view_article.php?ID=201001802
Хм... И к чему такой вопрос?
:)