Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проверка введёных данных при регистрации

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Мой опыт в создании регистрационной формы
ReniFerre
Отправлено: 23 Мая, 2011 - 19:43:44
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Небольшой кусок из регистрационной формы. Локальный хостинг осуществлен с помощью XAMPP.
Сделал попытку реализовать подход "Модель-Компонент-Ядро" (хотя ядра здесь нет), потому файлы лежат в разных папках по адресам:
C:\xampp\htdocs\dlya_foruma\view - файл registration.php;
C:\xampp\htdocs\dlya_foruma\component - файл comp_check_symbol.php.

Первый файл - непосредственно регистрационная форма с проверками:
- заполненности поля;
- длины строки;
- наличия допустимых/недопустимых символов (реализовано через второй файл).

Какой функционал задействован:
- сессии (здесь для сохранения данных пользователя в случае ошибки);
- регулярные выражения (для проверки наличия допустимых/недопустимых символов(второй файл));
- строковая функция (для проверки длины поля).

Оставил проверку только одного параметра, остальное идентично.

Теперь собственно коды.
"registration.php":
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $_SESSION[user_login] = $_POST[user_login];
  3. $log_check_in = $_POST[registration];
  4. ?>
  5. <html>
  6. <head>
  7. <title>Регистрация</title>
  8. <head>
  9. <body>
  10. <h2><center>Регистрация</center></h2>
  11. <form method='post' name='reg_user' action='registration.php'>
  12. <table border='1'>
  13. <!--Поля логина-->
  14. <tr>
  15. <td>
  16. Логин
  17. </td>
  18. <td>
  19. <input type='text' name='user_login' value='<?php echo"$_SESSION[user_login]"; ?>'    size='10'>
  20. </td>
  21. <td>
  22. <!--Место для скрипта проверки и вывода результата-->
  23. <?php
  24. if ($log_check_in == 'Зарегистрироваться')
  25. {
  26. require_once ('C:/xampp/htdocs/dlya_foruma/component/comp_check_symbol.php');
  27. if (!empty ($_SESSION[user_login]))
  28. {
  29. if (check_symbol ($_SESSION[user_login]))
  30. if (strlen ($_SESSION[user_login])<=10)
  31. echo "Верный формат логина";
  32. else echo "Слишком длинный логин. Максимальная длинна 10 символов";
  33. else echo "В логине есть недопустимые символы";
  34. }
  35. else echo "Логин пустой";
  36. }
  37. else echo "Максимальная длина 10 символов";
  38. ?>
  39. </td>
  40. </tr>
  41. </table>
  42. <input type='submit' name='registration' value='Зарегистрироваться'>
  43. </form>
  44. </body>
  45. </html>


Второй файл, "comp_check_symbol.php":
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. function check_symbol ($login)
  3. {
  4. if (preg_match('|^[-А-Яа-яA-Za-z0-9_]*$|',$login))
  5. return $user_login = TRUE;
  6. else return $user_login = FALSE;
  7. }
  8. ?>


Поставил это в уроках, т.к. сам в своё время долго мучался над организацией этого вопроса. Хотя не уверен, что сделал всё правильно. Но "разбор полётов" - это тоже учёба. Буду благодарен, если кто-нибудь скажет своё аргументированное мнение о моей работе. А если еще приведет примеры, как лучше - будет просто замечательно. И остальным интересно.
 
 Top
Alex_pac
Отправлено: 24 Мая, 2011 - 01:21:23
Post Id



Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




не регистрация а авторизация
 
 Top
DlTA
Отправлено: 24 Мая, 2011 - 01:29:08
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Alex_pac пишет:
[-А-Яа-яA-Za-z0-9_]

точно не знаю так и не попробывал установить локаль
но знаю на верника, если не устанавливать локаль то в список искомых символов нужно добавить "ЙйЁё" иначе может не пропустить
 
 Top
komprenda
Отправлено: 24 Мая, 2011 - 01:29:10
Post Id


Гость


Покинул форум
Сообщений всего: 105
Дата рег-ции: Май 2011  


Помог: 3 раз(а)




ReniFerre пишет:
Небольшой кусок из регистрационной формы. Локальный хостинг осуществлен с помощью XAMPP.
Сделал попытку реализовать подход "Модель-Компонент-Ядро" (хотя ядра здесь нет), потому файлы лежат в разных папках по адресам:
C:\xampp\htdocs\dlya_foruma\view - файл registration.php;
C:\xampp\htdocs\dlya_foruma\component - файл comp_check_symbol.php.

Первый файл - непосредственно регистрационная форма с проверками:
- заполненности поля;
- длины строки;
- наличия допустимых/недопустимых символов (реализовано через второй файл).

Какой функционал задействован:
- сессии (здесь для сохранения данных пользователя в случае ошибки);
- регулярные выражения (для проверки наличия допустимых/недопустимых символов(второй файл));
- строковая функция (для проверки длины поля).

Оставил проверку только одного параметра, остальное идентично.

Теперь собственно коды.
"registration.php":
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $_SESSION[user_login] = $_POST[user_login];
  3. $log_check_in = $_POST[registration];
  4. ?>
  5. <html>
  6. <head>
  7. <title>Регистрация</title>
  8. <head>
  9. <body>
  10. <h2><center>Регистрация</center></h2>
  11. <form method='post' name='reg_user' action='registration.php'>
  12. <table border='1'>
  13. <!--Поля логина-->
  14. <tr>
  15. <td>
  16. Логин
  17. </td>
  18. <td>
  19. <input type='text' name='user_login' value='<?php echo"$_SESSION[user_login]"; ?>'    size='10'>
  20. </td>
  21. <td>
  22. <!--Место для скрипта проверки и вывода результата-->
  23. <?php
  24. if ($log_check_in == 'Зарегистрироваться')
  25. {
  26. require_once ('C:/xampp/htdocs/dlya_foruma/component/comp_check_symbol.php');
  27. if (!empty ($_SESSION[user_login]))
  28. {
  29. if (check_symbol ($_SESSION[user_login]))
  30. if (strlen ($_SESSION[user_login])<=10)
  31. echo "Верный формат логина";
  32. else echo "Слишком длинный логин. Максимальная длинна 10 символов";
  33. else echo "В логине есть недопустимые символы";
  34. }
  35. else echo "Логин пустой";
  36. }
  37. else echo "Максимальная длина 10 символов";
  38. ?>
  39. </td>
  40. </tr>
  41. </table>
  42. <input type='submit' name='registration' value='Зарегистрироваться'>
  43. </form>
  44. </body>
  45. </html>


Второй файл, "comp_check_symbol.php":
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. function check_symbol ($login)
  3. {
  4. if (preg_match('|^[-А-Яа-яA-Za-z0-9_]*$|',$login))
  5. return $user_login = TRUE;
  6. else return $user_login = FALSE;
  7. }
  8. ?>


Поставил это в уроках, т.к. сам в своё время долго мучался над организацией этого вопроса. Хотя не уверен, что сделал всё правильно. Но "разбор полётов" - это тоже учёба. Буду благодарен, если кто-нибудь скажет своё аргументированное мнение о моей работе. А если еще приведет примеры, как лучше - будет просто замечательно. И остальным интересно.


всегда пиши с error_reporting(E_ALL);
 
 Top
Ренигард
Отправлено: 24 Мая, 2011 - 05:16:29
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Alex_pac пишет:
не регистрация а авторизация


По какому интересно признаку узнали?
 
 Top
ReniFerre
Отправлено: 24 Мая, 2011 - 05:19:32
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




DlTA пишет:
Alex_pac пишет:
[-А-Яа-яA-Za-z0-9_]

точно не знаю так и не попробывал установить локаль
но знаю на верника, если не устанавливать локаль то в список искомых символов нужно добавить "ЙйЁё" иначе может не пропустить


Спасибо за совет. Дома проверю.

И всё-таки. Кто скажет, правильно ли организована проверка или лучше сделать иначе?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB