Как узнать, занято ли имя пользователя в базе данных? - PullRequest
1 голос
/ 07 июля 2011

Как узнать, что имя пользователя в базе данных уже занято с помощью php для страницы регистрации?

Ответы [ 4 ]

5 голосов
/ 07 июля 2011

что-то вроде:

$sql = 'SELECT * FROM USERS where user_name = "'.$_GET['username'].'"';
$res = mysql_query($sql);
if($res && mysql_num_rows($res)>0){
  echo 'taken';
} else {
  echo 'free';
}
4 голосов
/ 07 июля 2011

Концептуально, вы, вероятно, использовали бы GET для поля имени пользователя для сценария, который выполняет запрос к базе данных с предложением WHERE, где username равно переменной GET. Если он возвращает совпадение, имя пользователя берется.

Есть много способов сделать это, если бы у вас была более конкретная спецификация, я мог бы уточнить еще больше.

У нас есть несколько очень интересных моментов из комментариев; Исходя из моего опыта работы с пользовательским интерфейсом, я определенно сделал бы эту проверку "inline", что означает, что вы можете проверить статус имени пользователя через AJAX, чтобы мгновенно дать некоторую обратную связь относительно того, взято ли имя пользователя или нет. В этом случае вы бы наверняка использовали GET.

Если это не ваше намерение и вы отправляете любую конфиденциальную информацию (в данном случае, вероятно, пароль) в форме регистрации, используйте POST (см. Этот вопрос: GET против ПОСТ в плане безопасности? )

2 голосов
/ 10 августа 2014

Попробуйте, может быть, это может помочь вам конечно нужно обрезать ввод

//first check if it's not empty input
if (empty($_POST['userName'])) {
        $userNameErr = "User name required";
    } else {
        $userName = $_POST['userName'];
        $getData= $db->prepare("SELECT * FROM tableName WHERE user_name=?");
        $getData->bind_param('s', $userName);
        if($getData->execute()){
            $results = $getData->get_result();
            if($results->num_rows>0){
                $userNameErr = "User name already token";
            }
        }
        //check the input characters
        if (!preg_match("/^[0-9_a-zA-Z]*$/", $userName)) {
            $userNameErr = "Only letters, numbers and '_' allowed";
        }
    }

надеюсь, это поможет.

2 голосов
/ 07 июля 2011

Я думаю, вы ищете что-то вроде этого.

$username = $_POST['username'];
$query = sprintf("SELECT * FROM users WHERE user='%s'", mysql_real_escape_string($username));
$result = mysql_query($query);

if(!$result) {
    // Some kind of error occurred with your connection.
} else {
    if(mysql_num_rows($result) > 0) {
        // Throw an error, the username exists
    } else {
        // Good to go...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...