За последние 24 часа нас посетили 50816 программистов и 1759 роботов. Сейчас ищут 960 программистов ...

Форма регистрации и авторизации

Тема в разделе "MySQL", создана пользователем obivankenobi, 10 фев 2012.

  1. obivankenobi

    obivankenobi Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    14
    Симпатии:
    0
    Здравствуйте. Я пишу дипломный проект. Решил с начала заняться организацией формы регистрации и авторизации.
    Хочу узнать ваше экспертное мнение по поводу моего решения. Буду очень признателен за указанные ошибки и недочеты.

    Форма регистрации
    Код (PHP):
    1. <html><title>Регистрация</title>
    2. <head>
    3. <meta http-equiv="Content-Type" content="text/html; charset=cp1251">
    4. </head>
    5. <body>
    6. Введите имя пользователя:
    7. <form method="post" action="register.php">
    8. <input type="text" name="user_name" title="Длина имени от 4 до 25 символов"><br />
    9.  
    10. Введите табельный номер:
    11. <input type="text" name="user_number" title="Длина номера от 4 символов"><br />
    12.  
    13. Введите пароль:                
    14. <input type="password" name="user_password" title="Длина пароля от 3 до 12 сиволов"><br />
    15. <input type="submit" name="register" value="Регистрация"></td>
    16. </form>
    17.  
    18. <br /><a href=# onClick="history.back()">назад</a>    
    19. </body>
    20. </html> 
    Обработчик
    Код (PHP):
    1. <?php
    2. #Подключение к базе данных
    3. if (isset($_POST['register']))
    4. {
    5.     require_once 'db_vars.inc';
    6.     
    7.     $login = mysql_real_escape_string($_POST['user_name']);
    8.     $login = trim(mb_strtolower($login));
    9.     $login = htmlspecialchars($login);
    10.     
    11.     $password = mysql_real_escape_string($_POST['user_password']);
    12.     $password = trim($password);
    13.     $password = htmlspecialchars($password);
    14.     
    15.     $number = mysql_real_escape_string($_POST['user_number']);
    16.     $number = htmlspecialchars(trim($number));
    17.     
    18.     
    19.     
    20. # Проверяем заполнены ли все поля и соответсвуют ли данные требованиям
    21.     if ((strlen($login) > 3) && (strlen($login) < 26) && 
    22.     (strlen($password) > 2) && (strlen($password) < 13) &&
    23.     (strlen($number)>3) && (strlen($number)<6))
    24.     {
    25.  
    26. # Проверяем есть ли пользователь с таким же именем    
    27.         $query = "SELECT `id_user`
    28.                     FROM `users`
    29.                     WHERE `login_user` = '$login'
    30.                     AND `personal_number` = '$number'
    31.                     LIMIT 1";
    32.         $result = mysql_query($query) or die("Невозможно выполнить запрос № 1 - ".mysql_error());
    33.         if (mysql_num_rows($result) == 1) {
    34.                 echo "Пользователь с таким именем уже существует!";
    35.                 echo "<meta http-equiv=\"Refresh\" content=\"2; URL=new_user.html\">";
    36.                 
    37.             }
    38.             else {
    39. # Добавляем новую учетную запись в базу
    40.         $query = "INSERT INTO `users` (login_user,password_user,personal_number) 
    41.                     VALUES ('$login',PASSWORD('$password'),'$number')";
    42.         $result = mysql_query($query) or die("Невозможно выполнить запрос № 2 - ".mysql_error());
    43.         if ($result){
    44.                     echo "Здравствуйте, вы зарегистрировались в системе!";
    45.                     echo "<meta http-equiv=\"Refresh\" content=\"2; URL=main.php\">";
    46.                 }
    47.                 else "Не могу добавить запись в базу.";
    48.                     
    49.             }
    50.     }
    51.     else {
    52.         echo "Длина имени от 4 до 25 символов. Длина пароля от 7 до 12 символов.Длина табельного номера 4 символа";
    53.         echo "<meta http-equiv=\"Refresh\" content=\"5; URL=new_user.html\">";
    54.     }
    55.     mysql_close();
    56. }
    57. ?>
     
  2. yuri

    yuri Активный пользователь

    С нами с:
    16 янв 2012
    Сообщения:
    288
    Симпатии:
    2
    действия с паролем непонятно зачем, открытые пароли хранить не круто, делай md5() и пиши в базу его
     
  3. obivankenobi

    obivankenobi Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    14
    Симпатии:
    0
    а чем плоха функция password() самой mysql? она ведь тоже шифрует.
     
  4. Крыс

    Крыс Активный пользователь

    С нами с:
    3 фев 2012
    Сообщения:
    449
    Симпатии:
    0
    Теоретически база может быть перенесена на другую субд, например на постгри. Что в этом случае будет с паролями?