Я бы переписал это полностью. Он подвержен внедрению SQL-кода, неэффективен и слишком сжат. Кроме того, вам лучше использовать расширение PHP mysqli
Кроме того, убедитесь, что вы заключили имена переменных $ _POST в кавычки. Вы написали их как константы, а не как строки. (Если вы не определили в другом месте в коде константы, представляющие строковые значения, это ошибка. Включайте предупреждения PHP во время разработки.)
$safe_username = mysqli_real_escape_string($_POST['userName']);
$sql = "SELECT userName FROM registeredUsers WHERE userName='$safe_username' LIMIT 1";
$result = mysqli_query($database_connection, $sql);
if (mysqli_num_rows($result))
{
// username already found code
mysqli_free_result($result);
}
else
{
$safe_hemis = mysqli_real_escape_string($_POST['hemis']);
$sql = "SELECT hemis FROM registeredUsers WHERE hemis='$safe_hemis' LIMIT 1";
// Side note, LIMIT 1 tells the database engine to stop looking after it's found one hit. More efficient as you're only looking for a Boolean value anyway.
$result = mysqli_query($database_connection, $sql);
if (mysqli_num_rows($result))
{
// hemis found code
mysqli_free_result($result);
}
}
Остальное вы, вероятно, сможете понять из этого.
Пожалуйста, подтвердите и удалите все данные. Проверка включает проверку работоспособности - это данные в пределах границ (длина строки, числовые границы и т. Д.) И т. Д. Все вводные данные являются злыми!
Вы действительно тоже не хотите зависеть от HTTP_REFERER. Агенты пользователей не всегда передают рефереры.
Кроме того, я знаю, что это не имеет большого значения, но используйте CSS, а не <br>
. Если вы используете тип документа XHTML, вам нужно правильно закрыть все теги, чтобы <br>
стал <br />
. В любом случае, это хорошая идея.