Задать вопрос

Php. Авторизация не работает. В чем ошибка?

Всем привет. Ребят, возникла проблема. Я тут делаю авторизацию, написал код, а он не работает.

Структура MySql БД:
Таблица 'users'
username || email || password

Вот код:
if($_POST['username'] == "")
		echo 'Введите логин.';
	else
		$username = $_POST['username'];

if($_POST['password'] == "")
		echo 'Введите пароль';
	else
		$hashpassword = password_hash($_POST['password'], PASSWORD_DEFAULT);

if(isset($username) && isset($hashpassword))
	{
		$q1 = mysql_query("SELECT * FROM users WHERE username='".$username."'");
		if(mysql_num_rows($q1) == 1)
		{
			$password_by_username = mysql_query("SELECT password FROM users WHERE username = '".$username"'");
			if($hashpassword == $password_by_username)
					echo 'Вы успешно авторизовались!';
				else
					echo 'Вы ввели неверный пароль';
		}
		else
			echo 'Вы ввели неверный логин.';
	}


password_hash() -
|Для хеширования пароля подключаю отдельный модуль. В БД все хешируется.|

Проблема: запускаю и ничего не работает. Ничего даже не выводится.
  • Вопрос задан
  • 412 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
1. isset($password)
$password - что за переменная такая? В коде у вас есть только $_POST['password'] и $hashpassword.
Вот и не срабатывает у вас условие.

2.
$password_by_username = mysql_query("SELECT password FROM users WHERE username = '".$username"'");

Вы забыли вытянуть сам пароль из запроса (mysql_fetch_array or mysql_fetch_assoc) и в переменную записываете результат выполнения запроса, а не значение password.

P.S: переходите на mysqli, mysql в новых версиях PHP не поддерживается.
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
1) Стесняюсь спросить - а подключение к базе есть?
2) Как настроен вывод ошибок в пхп?
3) если не настроен вывод - скорее всего ошибки не выводятся, но код падает по ерору.
4) Код - просто аццкий ад, еще и с скюельинжекцией влегкую.
5)
$q1 = mysql_query("
SELECT * 
FROM users 
WHERE `username`= $username 
and `password  = $hashpassword
");
if(mysql_num_rows($q1) == 1) echo "ура, залогинились!" 
else "блиин, неверные данные авторизации";
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы