• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь Почему не могу автолизироваться через dle.api?

drkrol

Постоялец
Регистрация
6 Мар 2016
Сообщения
112
Реакции
11
Здравствуйте. Есть php файл такого вида:
PHP:
<?php
include ('engine/api/api.class.php');
$request = $dle_api->external_auth( $_POST['ajaxname'],  $_POST['ajaxpass']);
if ($request == true)
    echo 'Вы успешно Авторизировались';
elseif ($request == false)
    echo 'Ошибка! Логин или пароль не совпали!';
На сайте его встречается такой js {
Код:
    $(function(){
        $('#ajaxlogin').on( "submit", function(e) {
            e.preventDefault();
            $.ajax({
                type: "POST",
                url: "ajaxlogin.php",
                data: $('#ajaxlogin').serialize(),
                success: function(data){
                    alert(data);
                }
            });
        });
       });
Создал форму, ввожу логин и пароль, возвращается true, обновляю страницу, а я как был гостем, так и остался. Почему так? Где ошибка?
 
PHP:
		function external_auth($login, $password)
		{
			$login = $this->db->safesql( $login );
			$password = md5( md5( $password ) );
			$arr = $this->load_table(USERPREFIX."_users", "user_id", "name = '$login' AND password = '$password'");
			if( ! empty( $arr['user_id'] ) )
				return true;
			else
				return false;
		}
Собственно, эта функция не авторизации, а проверки логина/пароля... Если возвращён true - нужно самостоятельно установить куки пользователю...
 
Собственно, эта функция не авторизации, а проверки логина/пароля... Если возвращён true - нужно самостоятельно установить куки пользователю...

Ссылку, на подобную вещь не дадите?

И почему же dle называют эту вещь авторизацией?...
Авторизация по логину и паролю. Возвращаемые значения: true - авторизация успешна, false - логин или пароль не верны.
 
Для просмотра ссылки Войди или Зарегистрируйся - тут есть раскодированный файл init.php - авторизация происходит в нём.
И почему же dle называют эту вещь авторизацией?...
Ох, кто б знал сколько у меня таких вопросов накопилось за последние лет 5...

Почему функция так названа - не знаю... Но в коде самой функции нет ни намёка на авторизацию - просто проверка есть ли такой пользователь с таким паролем в БД и всё.
 
Для просмотра ссылки Войди или Зарегистрируйся - тут есть раскодированный файл init.php - авторизация происходит в нём.
Ох, кто б знал сколько у меня таких вопросов накопилось за последние лет 5...

Почему функция так названа - не знаю... Но в коде самой функции нет ни намёка на авторизацию - просто проверка есть ли такой пользователь с таким паролем в БД и всё.
Мне достаточно просто отправить логин и пароль в init.php? Или есть еще какие либо танцы с бубном?
 
Не, не, не... Надо полностью переписывать и писать свой код, схожий с имеющимся...
 
После проверки если выдало true, надо просто записать id пользователя и пароль в куки


Код:
        $member_id = $db->super_query( "SELECT * FROM " . USERPREFIX . "_users WHERE `name` = '{$member_id['name']}'" );

            set_cookie( "dle_user_id", $member_id['user_id'], 365 );
            set_cookie( "dle_password", md5($_POST['contact_password']), 365 );

            $_SESSION['dle_user_id'] = $member_id['user_id'];
            $_SESSION['dle_password'] = md5($_POST['contact_password']);
 
@igramnet, что-то мне подсказывает, что использование API здесь вообще не нужно и достаточно в запрос добавить поиск по паролю. Вернулся - пишем куки с тем, что вернулось, нет - значит нет пользователя.

Экономия - 1 запрос в БД
 
После проверки если выдало true, надо просто записать id пользователя и пароль в куки

Вот прописал я это в своём php
PHP:
<?php
include ('engine/api/api.class.php');
$request = $dle_api->external_auth( $_POST['login_name'],  $_POST['login_password']);
if ($request == true) {
$member_id = $db->super_query( "SELECT * FROM " . USERPREFIX . "_users WHERE `name` = '{$member_id['name']}'" );

            setcookie( "dle_user_id", $member_id['login_name'], 365 );
            setcookie( "dle_password", md5($_POST['login_password']), 365 );

            $_SESSION['dle_user_id'] = $member_id['login_name'];
            $_SESSION['dle_password'] = md5($_POST['login_password']);
    echo 'yes';
}
elseif ($request == false)
    echo 'no';
Жму войти, получаю yes, обновляю страницу, я гость, как и прежде. Я где-то ошибся?
 
$member_id['login_name']
Должно быть
$member_id['user_id']

Там ID, а не логин
 
Назад
Сверху