Узнать разрешение вашего экрана и IP адрес   •   Online-инструменты
93 просм
0 комм
Поделиться:
Лучший платный хостинг!

Месяц в подарок. Помощь с переездом. Быстрая тех. поддержка. Цена от 115р в месяц. Скидки, спеши!

vk.cc/88lMkj

Рабочая авторизация на сайте через API в DLE

Не знаю, как сейчас обстоят дела со встроенным API в CMS DataLife Engine, но в релизах ветки 10.* и 11.* точно есть одна проблема. А именно – при использовании метода:

$dle_api->external_auth($login, $password);

вместо реальной авторизации происходит простая проверка корректности логина и пароля указанного пользователя.

Очень странно, что в официальной документации этот метод описывается как «Авторизация по логину и паролю», хотя на деле, как я уже сказал ранее, происходит проверка корректности указанных данных.

Уверен, что многие, кто кастомизирует этот движок, столкнулись с этой проблемой, как, собственно, и я.

Решение мне удалось найти спустя некоторое время после возникновения задачи. И выглядит оно так:

$login = $_POST["login"]; // Логин пользователя
$password = $_POST["password"]; // Пароль пользователя
$time_active = time() + (365 * 86400); // Сколько дней запоминаем пользователя (1 год)

$auth = $dle_api->external_auth($login, $password);

if($auth) { // Если данные пользователя верны

	$user_id = $dle_api->load_table("dle_users", "user_id", "name = '".$login."' AND password = '".md5(md5($password))."'"); // Получаем ID пользователя по его данным

	setcookie("dle_user_id", $user_id["user_id"], $time_active, "/", NULL, NULL, TRUE);
	setcookie("dle_password", md5($password), $time_active, "/",  NULL, NULL, TRUE);

	$_SESSION["dle_user_id"] = $user_id["user_id"];
	$_SESSION["dle_password"] = md5($password);
	
	echo "<script>window.location.replace(window.location.pathname);</script>"; // Обновляем страницу после авторизации

} else {

	echo "Данные не верны!";
	
}

Сначала (с помощью стандартного API) мы проверяем, корректные ли указаны данные, и если корректные – записываем данные в куки и авторизовываем пользователя.

Если что-то вам показалось непонятным – не стесняйтесь и задавайте свои вопросы в комментариях.

0
комментариев
Гостям запрещено учавствовать в обсуждениях сайта. Авторизуйтесь, чтобы иметь возможность оставить свое мнение о материале или задать вопрос.