Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регистрация на сайте, оценка реализации 
:(
    Опции темы
aktuba
Дата 22.8.2007, 05:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: нет
Всего: 38



Сделал такую регистрацию на сайте:
Код

    $index = true;
        if(count($_POST) == 5 && isset($_POST['login']) && isset($_POST['passwd']) && isset($_POST['passwd2']) && isset($_POST['email']) && isset($_POST['captcha'])) {
            $login = htmlspecialchars($_POST['login']);
            $passwd = htmlspecialchars($_POST['passwd']);
            $passwd2 = htmlspecialchars($_POST['passwd2']);
            $email = htmlspecialchars($_POST['email']);
            $captcha = htmlspecialchars($_POST['captcha']);
            if(strlen($login) < 3 || strlen($login) > 32) {
                $errmsg_login = 'Логин должен быть от 3 до 32 символов';
                $index = false;
            }
            if(empty($errmsg_login) and !empty($login) && !eregi("^([A-Za-z0-9А])", $login)) {
                $errmsg_login = 'Неверный формат логина';
                $index = false;
            }
            if(strlen($passwd) < 3 || strlen($passwd) > 32) {
                $errmsg_passwd = 'Пароль должен быть от 3 до 32 символов';
                $index = false;
            }
            if(empty($errmsg_passwd) && $passwd2 != $passwd) {
                $errmsg_passwd = 'Пароли должны быть одинаковы';
                $passwd2 = '';
                $index = false;
            }
            if(empty($errmsg_passwd) && !eregi("^([A-Za-z0-9А])", $passwd) && !empty($passwd)) {
                $errmsg_passwd = 'Неверный формат пароля';
                $passwd2 = '';
                $index = false;
            }
            if($_SESSION['captcha_keystring'] <> $captcha) {
                $errmsg_captcha = 'Не верный код.';
                $index = false;
            }
            if (!eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$", $email) and $email != "") {
                $errmsg_email = 'неверный формат e-mail';
                $index = false;
            }
            if($index) {
                register_new_user($login, $passwd, $email); // Вызываем функцию регистрации пользователя в базе и перекидываем на главную
                redirect("./index.php");
                exit;
            } else {
                                // Выводим форму регистрации с сообщениями об ошибках
                        }
        }


Нужна оценка, критика и советы, т.к. мне самому не нравится реализация...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
NightmareZ
Дата 22.8.2007, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 2
Всего: 13



Чем тебе она не нравится?


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
aktuba
Дата 22.8.2007, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: нет
Всего: 38



Цитата

htmlspecialchars


вот этим. может лучше просто на регулярках сразу проверять или лучше сначала экранировать?


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Severyanin
Дата 22.8.2007, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



Лучше экранировать сначала, по-моему.


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
GiV
Дата 22.8.2007, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 13.7.2006
Где: rus|53

Репутация: 4
Всего: 9



1. Зачем подсчитывать кол-во данных? При последующем изменении скрипта, месяца через 2, 100% будут непонятки почему данные не воспринимаются скриптом.

2. Если данных нет, то не понятно поведение скрипта. По хорошему должна снова выводится форма регистрации, с сообщением о некорректности заполнения формы. Следовательно
Код

            if($index) {
                register_new_user($login, $passwd, $email); // Вызываем функцию регистрации пользователя в базе и перекидываем на главную
                redirect("./index.php");
                exit;
            } else {
                                // Выводим форму регистрации с сообщениями об ошибках
                        }

Стоит вынести из условия.

3. Ошибки лучше собирать в массив. Тогда и флага index не надо будет, сделал count($errors) и понял что дальше делать. Более того, список ошибок будет полнее, нежели чем сейчас, а значит дружелюбнее к пользователю. Пример с логином:
Человек ввел пробел больший 32 символов не соответствующий допустимой маске пароля. В случае этого скрипта, напишется только про 32, а про недопустимость такого пароля он узнает только отправив форму второй раз.

4. Не понятное регулярное выражение A-Za-z0-9А, зачем A два раза.

5. Если пишем в базу то http://php.net/mysql_escape_string
PM MAIL WWW ICQ   Вверх
aktuba
Дата 22.8.2007, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: нет
Всего: 38



Цитата

1. Зачем подсчитывать кол-во данных? При последующем изменении скрипта, месяца через 2, 100% будут непонятки почему данные не воспринимаются скриптом.


Привычка  smile 

Цитата

2. Если данных нет, то не понятно поведение скрипта.


Я привел только часть скрипта. Если данных нету - будут выведены другие данные.

Цитата

3. Ошибки лучше собирать в массив. Тогда и флага index не надо будет, сделал count($errors) и понял что дальше делать. Более того, список ошибок будет полнее, нежели чем сейчас, а значит дружелюбнее к пользователю. Пример с логином:
Человек ввел пробел больший 32 символов не соответствующий допустимой маске пароля. В случае этого скрипта, напишется только про 32, а про недопустимость такого пароля он узнает только отправив форму второй раз.


Можно пример? В общем виде я представляю, но...

Цитата

4. Не понятное регулярное выражение A-Za-z0-9А, зачем A два раза.


А это 2 дня без сна сказываются  smile 

Цитата

5. Если пишем в базу то http://php.net/mysql_escape_string 


Это чуть позже. Но про mysql_escape_string знаю...

Может еще есть предложения и советы?


--------------------
user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1187 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.