Есть несколько вещей неправильно с вашим кодом.
Вы смешиваете библиотеки MySQL, которые не смешиваются друг с другом.
Плюс, недостающие котировки вокруг переменной $user
в предложении where
.
Строки должны быть заключены в кавычки, а также передавая соединение с базой данных для запроса вместе с его mysqli_
эквивалента mysql_query()
и mysql_num_row()
, функции, которые не перемешиваются с mysqli_
связи.
Также эта линия:
if ($checkU && mysqli_num_rows($checkU) > 0)
заменить его просто с:
if (mysqli_num_rows($checkU) > 0)
Rewrite:
<?php
$servername = "";
$username = "root";
$password = "ahmed2001";
$db = "html";
$conn = mysqli_connect($servername, $username, $password, $db);
if(!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$user = $_REQUEST['username'];
$pass = $_REQUEST['password'];
$email = $_REQUEST['email'];
$checkU = mysqli_query($conn, "SELECT username FROM players WHERE username = '".$user."'")
or die(mysqli_error($conn))
;
if (mysqli_num_rows($checkU) > 0) {
echo "You have logged in !";
} else {
echo "Failed to log in !";
}
?>
Plus, в отношении инъекции SQL, use mysqli
with prepared statements или PDO with prepared statements, они намного безопаснее.
Я заметил, что вы можете хранить пароли в текстовом виде. Если это так, то оно очень обескуражено.
Я рекомендую использовать функцию CRYPT_BLOWFISH или PHP 5.5's password_hash()
. Для PHP < 5.5 используйте password_hash() compatibility pack
.
Использование or die(mysqli_error($conn))
с mysqli_query()
.
Добавьте error reporting в начало файла, в котором будут найдены ошибки.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
Sidenote: Сообщения об ошибках не должно быть сделано только в постановке, и никогда производства.
Если то, что я представил в своем ответе, не решает проблему, тогда у вас есть проблемы в другом месте в вашей базе данных.
- Проверьте типы и длину колонок.
- Если есть данные о фактах, которые соответствуют данным входа в систему.
- Использовать проверку ошибок/отчетность.
Sidenote: Вы проверяете только имя пользователя в своем запросе. Итак, я не знаю, почему вы проверяете только имя пользователя, а не комбинацию пароля.
Если это так, вам нужно добавить дополнительный запрос в свой пункт where
.
т.е .:
WHERE username = '".$user."' AND password = '".$pass."'
если password
это имя столбца в таблице.
После копирования запроса в mysql и проверьте, работает ли он нормально или нет. – phpfresher
Hii @Nezoo ... После изменения 'mysql_query' на' mysqli_query', а затем попробуйте. Я думаю, это может быть вопрос ... – phpfresher
Да база данных работает хорошо – Nezoo