Я создаю систему входа в систему, но ошибки печати PHP с неверным результатом MySQL.
Запрос на 100% правильный, $ _POST содержит правильные данные.
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ..../public_html/libs/basic.php on line 27
Вот PHP:
if(isset($_POST['password']) && isset($_POST['login']))
{
$login = mysql_real_escape_string($_POST['login']);
$result = mysql_query("SELECT * FROM `users` WHERE `login`='". $login ."' AND `pass`='". createPasswordHash($_POST['login'], $_POST['password']) ."' LIMIT 1");
if(mysql_num_rows($result) > 0)
{
$user_checked = 1;
$token = md5(uniqid() . "salt" . rand());
setUserConfig('token', $token);
setUserConfig('token_time', time() + (60 * 60));
return true;
}
}
createPasswordHash:
function createPasswordHash($login, $pass)
{
return md5($login . "_". md5($pass));
}
Форма:
<form method="POST" action="?p=home">
Login: <input type="text" name="login" placeholder="Wpisz login..." />
Hasło: <input type="password" name="password" placeholder="Wpisz hasło..." />
<input type="submit" value="Zaloguj" />
</form>
Я думаю, что вы должны fetch
ваш результат с [mysql_fetch_row][1]
(или что-то эквивалентное), например:
...
$result = mysql_fetch_row ( $result );
if(mysql_num_rows($result) > 0) {
...
}
Вы также можете попробовать это, чтобы увидеть, что находится в вашем $result
:
print_r ($result);
или же
var_dump ($result);
Просто предупреждение, MySQL не рекомендуется. Рекомендуется использовать PDO
bool(false)
означает, что ваш запрос не удался.
Если ваш запрос правильный, то ошибка в mysql_query()
что ожидает два параметры вроде так:
mysql_query("your query", $connection) OR die(mysql_error());
где $connection
ресурс вашего соединения с MySQL:
$connection = mysql_connect("host", "user", "password");
От php.net
Если идентификатор ссылки (
$connection
) не указан, последняя ссылка открыта mysql_connect () предполагается. Если такая ссылка не найдена, она попытается создать такую, как если бы mysql_connect () был вызван без аргументов. Если соединение не найдено или установлено, E_WARNING ошибка уровня генерируется.
Замечания: mysql_*
функции устарели, используйте mysqli_*
или же PDO
вместо.