Как построить ограничение на доступность пользователя при регистрации с использованием PHP?

0

У меня есть код, который регистрирует пользователей, предоставляя их имя пользователя, адрес электронной почты и пароль. Теперь я хочу ограничить пользователей разрешить только если новое имя пользователя не сохранено в базе данных. Если он вводит новое имя пользователя, тогда сообщение должно предупредить о том, что введенное вами имя пользователя недоступно.

Код, который я использовал, приведен ниже в register.php

<?php       
include"connection.php";          

if (!isset($_POST['submit'])) //if the user clicks the submit button then the PHP code   POST the details 
{
$user_name = $_POST['username']; 
$user_password = $_POST['password']; 
$user_email = $_POST['email']; 

if($user_name && $user_password && $user_email)
    {
        $query = mysql_query("INSERT INTO users (username, password, email, type) 
        VALUES ('$user_name', '$user_password', '$user_email', '0')");
        mysql_query($query); 
echo '<script type="text/javascript">alert("You have been registered");</script>';
}
else {
    echo '<script type="text/javascript">alert("All fields required");</script>'; 
   header("location:user_create.html");
}
}
?> 
  • 2
    Повторяйте за мной: я не подвергну своих пользователей опасности, имея уязвимое приложение. stackoverflow.com/questions/60174/...
Теги:
registration
restriction

2 ответа

3

Прежде всего:

  • фильтровать данные! Пользователи могут отправлять небезопасные данные, поэтому вы должны использовать функцию mysql_escape_string() (это минимальное требование). Читайте о SQL Injection и XSS.
  • хеш-пароль! Минимальное требование - использовать функцию md5, прочитать о хэшировании паролей: http://www.php.net/manual/en/faq.passwords.php

Используйте SQL-запрос, чтобы проверить, доступен ли вход пользователя:

$result = mysql_query('SELECT * FROM users WHERE username="'.mysql_escape_string($_POST['username']).'"');
if(mysql_fetch_array($result)) {
   // username is unavailable, do something ....
}
else {
  // register user
}

Обратите внимание, что функция mysql устарела из PHP 5.5. Вместо этого используйте функции PDO.

-1

Используйте ключ UNIQUE в поле db для поля имени пользователя. Затем вы можете использовать mysql_error(), чтобы поймать ошибку и показать пользователю, что он не может использовать это имя пользователя, потому что он уже хранится в db.

  • 0
    Разработка на основе ошибок звучит как неправильный подход ко мне.
  • 0
    @MrDevel, username - это тип данных Varchar, так что это может быть УНИКАЛЬНЫЙ ключ?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню