1: должно быть сравнение, а не присвоение.
Эта строка неверна:
if ($ban = 'y') {{
Это должно быть:
if ($ban == 'y') {
Япри условии, что там тоже есть дополнительная скобка.
2: SQL-инъекция
Вы не должны передавать вашу строку прямо from $_POST
в MySql, так как вы уязвимы для SQL-инъекции.Вы должны избегать его следующим образом:
$bancheck = mysql_query("SELECT * FROM users WHERE ban = '".mysql_real_escape_string($_POST['username'])."'" )or die(mysql_error());
3: Ban! = User
Вы не должны сравнивать ban
с именем пользователя, переданным через форму в любом случае, как банбудет содержать строку 'y' или 'n'.Вам следует сравнить имя пользователя (переданное в) с полем approriate username в таблице базы данных.Вот так:
$bancheck = mysql_query("SELECT * FROM users WHERE username = '".mysql_real_escape_string($_POST['username'])."'" )or die(mysql_error());
4: правильная итерация и сравнение
Вместо функции mysql_fetch_array()
я бы использовал функцию mysql_fetch_assoc()
, потому что она возвращает ассоциативный массив .
Это вернет ассоциативный массив для каждой возвращенной строки (содержащейся в ресурсе MySql $bancheck
), поэтому вам нужно выполнять итерацию по ним (даже если он должен возвращать только один массив), например так:
while($ROW = mysql_fetch_assoc($bancheck))
{
if('y' == $ROW['ban']) {
die('You are banned...');
}
}
Но я бы добавил еще немного кода, чтобы помочь с другими проблемами:
$count = mysql_num_rows($bancheck);
if($count > 1)
{
die('More than one user with that username');
}
elseif($count > 0)
{
while($ROW = mysql_fetch_assoc($bancheck))
{
if('y' == $ROW['ban']) {
die('You are banned...');
}
}
}
else //i.e. $count<=0
{
die('No users with that username');
}