проверьте, существует ли имя пользователя - PullRequest
3 голосов
/ 31 августа 2009

Я создаю сценарий регистрации для своего сайта, и я хочу проверить, существует ли $ _POST ['username'] в БД.

Есть ли лучший, менее кодовый способ сделать это? Я делаю то же самое для электронной почты.

Вот как это выглядит сейчас:

$checkusername = mysql_query("SELECT username FROM users WHERE username = '$_POST[username]'");
$row83 = mysql_fetch_assoc($checkusername);

if ($_POST['username'] == $row83['username']) die('Username already in use.');

Ответы [ 3 ]

4 голосов
/ 31 августа 2009

Добавьте unique constraint на свой стол:

alter table users
add unique (username)

Тогда ваши операторы insert или update потерпят неудачу:

mysql_query("insert into users (username) values ('$username')")
   or die('Username exists');

Конечно, большая проблема с вашим кодом заключается в том, что вы не предотвращаете внедрение SQL. Ваш код должен быть:

$username = mysql_real_escape_string($_POST['username']);
mysql_query("insert into users (username) values ('$username')")
   or die('Username exists');
0 голосов
/ 31 августа 2009

Если вы установили имя пользователя как «уникальное» в своей базе данных, вы можете просто продолжить и выполнить запрос на вставку, который не будет выполнен (что вы можете обработать). То же самое касается электронной почты - сделайте ее «уникальной».

Это может пригодиться.

0 голосов
/ 31 августа 2009

, так как вы уже проверяете имя пользователя в вызове sql, вам просто нужно посмотреть, возвращается ли запись на стороне php вещей

$row83 = mysql_query($checkusername);
if (mysql_num_rows($row83) == 0) die('Username already in use.');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...