2013-10-15 4 views
1

Итак, я изучал PHP и т. Д., Но дело в том, что я могу регистрировать много раз с тем же именем и IP.Как узнать, зарегистрирован ли пользователь

Это код моего register.php

<html> 
<head> 
<title> 
Gebruikerspaneel 
</title> 
</head> 
<body> 
<?php 
include 'connect.php'; 
?> 
<?php 
include 'functions.php'; 
?> 
<?php 
include 'titelbar.php'; 
?> 

<h3>Registreer hier</h3> 

<form method='post'> 
<?php 
if(isset($_POST['submit'])){ 
    $gebruikersnaam = $_POST['gebruikersnaam']; 
    $wachtwoord = md5($_POST['wachtwoord']); 
    if(empty($gebruikersnaam) or empty($wachtwoord)){ 
     echo "<p>Gelieve alles in te vullen!</p>"; 
    } else { 
     mysql_query("INSERT INTO gebruikers VALUES('', '$gebruikersnaam', '$wachtwoord', '2', 'a')"); 
     echo "<p>U bent succesvol geregistreerd!</p>"; 
    } 
} 
?> 
Gebruikersnaam:<br /> 
<input type='text' name='gebruikersnaam' /> 
<br /><br /> 
Wachtwoord:<br /> 
<input type='password' name='wachtwoord' /> 
<br /><br /> 
<input type='submit' name='submit' value='Registreren' /> 
</form> 
</body> 
</html> 

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

Я голландский, поэтому некоторые вещи на голландском языке.

+0

где вы проверяете базу данных, чтобы узнать, существует ли имя пользователя в базе данных? –

+0

Функции 'mysql_ *' ** больше не поддерживаются ** и не должны использоваться в какой-либо новой кодовой базе. Он постепенно прекращается в пользу новых API. Вместо этого вы должны использовать [** подготовленные заявления **] (https://www.youtube.com/watch?v=nLinqtCfhKY) с помощью [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/mysqli). –

+0

Вы можете использовать что-то для влияния 'if (mysqli_num_rows ($ result)> 0) {echo" Exists "; } ' –

ответ

1

Логика продиктована необходимостью проверить, существует ли пользователь, прежде чем вставить его. и может сделать это:

  1. положить уникальный ключ на имени пользователя, а также захватить Дубликат код ошибки ввода

  2. Query БД перед вставкой, если пользователь уже существует.

Я не трогаю многие другие проблемы, которые у вас есть, сосредоточьтесь на одной точке за раз.

Если вы проголосовали, по крайней мере, объясните, почему

+0

+1 Действительно catch 1062 номер ошибки в PHP позволяет базе данных обрабатывать уникальную проблему, как это должно .. –

-1

Две вещи, которые вы можете сделать:

  1. Проверить, если имя пользователя уже существует что-то вроде этого:

    SELECT COUNT(*) FROM users WHERE username = $username;

    Если результат больше 0, выводим сообщение об ошибке.

  2. Добавьте уникальное ограничение ключа в столбец имени пользователя, используя MySQL Workbench или командную строку, в зависимости от того, что вы используете. Это служит защитой для предотвращения дублирования в базе данных, если код по какой-то причине должен предотвращать дублирование.

Большая заметка:

Research параметризация запросов SQL, потому что сейчас у вас есть огромный недостаток безопасности происходит, называется SQL injection!

+0

Почему голос, кто бы это ни был? – woz

+0

Они тоже сделали это с моим ответом, я просто удалил его и снова опубликовал. Получил более разумное голосование. –

Смежные вопросы