@deepprod

Как переделать авторизацию пользователей?

Здравствуйте имеется авторизация без mysql логин и пароль храниться в константах. Как мне переделать, что бы логин и пароль брать из бд. Структура и подключение к бд есть. Помогите не опытному.

Вот код авторизации php:

function isAdmin($login = false, $password = false) {
		if (!$login) $login = isset($_SESSION["login"])? $_SESSION["login"] : false;
		if (!$password) $password = isset($_SESSION["password"])? $_SESSION["password"] : false;
		return mb_strtolower($login) === mb_strtolower(ADM_LOGIN) && $password === ADM_PASSWORD;
	}
	
	function login($login, $password) {
		$password = hashSecret($password);
		if (isAdmin($login, $password)) {
			$_SESSION["login"] = $login;
			$_SESSION["password"] = $password;
			return true;
		}
		return false;
	}
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 2
@noeer
В общем случае как-то так
function isAdmin($login = false, $password = false) {
	global $pdo;
	$stmt = $pdo->prepare('SELECT * FROM `users` WHERE `login` = :login AND `password` = :password');
	$stmt->execute(array(
		':login' => $login,
		':password' => $password,
	));
	if($stmt->rowCount() == 1) {
		return true;
	}
	return false;
}
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
1) нельзя хранить пароли в открытом виде, используйте password_hash()
2) Для хеширования паролей хорошей практикой считается предварительно "соленые" значения
3) для проверки используйте password_verify(), алгоритм простой и легко гуглится, например вот здесь есть одна из реализаций
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы