Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Не получается авторизация через JQuery.post()

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Max Brown
phpBB 1.0.0
Сообщения: 2
Стаж: 10 лет 3 месяца

Не получается авторизация через JQuery.post()

Сообщение Max Brown »

Уважаемые гуру, вынужден побеспокоить вас, поскольку гугление и поиск по форуму ничего не дали.
Если я читал FAQ невнимательно - не кидайтесь тапками, а лучше кидайтесь ссылками на соответствующие топики форума.

Я пытаюсь сделать авторизацию в phpBB3 запросом JQuery.post() с другого сайта (назовём его MyWebSite.ru, форум расположен на forum.MyWebSite.ru):

Код: Выделить всё

$.post( "http://forum.MyWebSite.ru/ucp.php?mode=login", { username:"My Name", password:"My$uperC00l_Password", redirect:"./index.php?sid="+$("input[name=sid]").val(), sid:$("input[name=sid]").val(), login:"Вход", style_cookie:"null",  }, function(data){
 alert(data);
});
Проблему отключения защиты от XSS уже решил (прописыванием в config.php строчки

Код: Выделить всё

header("Access-Control-Allow-Origin:http://MyWebSite.ru");
, где MyWebSite.ru - сайт, с которого выполняется $.post()
Продампил $user и $result (который в функции login_box) - всё идёт нормально, $result=3, в $user->data юзернэйм виден, но.
После того, как в этой функции срабатывает

Код: Выделить всё

if ($result['status'] == LOGIN_SUCCESS){
...
 die( header("Location: ".$redirect) );
...
}
, форум резко "забывает" о том, что только что меня успешно залогинил и открытие форума в другой вкладке тоже показывает, что я кагбэ и не логинился вовсе.
Такое полное ощущение, что ucp.php воспринимает JQuery.post() как другой браузер и создаёт для него, соответственно, другую сессию. Но блин, alert(data) тоже говорит, что я не залогинен (присутствует ссылка на страницу входа).

Собственно, вопрос: почему может не получаться авторизация запросом JQuery.post() с другого сайта?
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

Re: Не получается авторизация через JQuery.post()

Сообщение Pazh »

посмотри в FireBug вкладку Cookies, кроме того не появляется ли в адресной строке новый sid
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2208
Стаж: 16 лет 3 месяца
Откуда: Павлодар
Благодарил (а): 7 раз
Поблагодарили: 338 раз
Контактная информация:

Re: Не получается авторизация через JQuery.post()

Сообщение nissin »

phpBB после логина нужно передавать session_id через cookie или sid в GET запросе.
Всё повторяется. nurlan.info
Max Brown
phpBB 1.0.0
Сообщения: 2
Стаж: 10 лет 3 месяца

Re: Не получается авторизация через JQuery.post()

Сообщение Max Brown »

Спасибо за ответы, ключевым словом было cookie, а собака порылась в том, что JQuery.post() не устанавливает и не сможет установить куку для forum.MyWebSite.ru, а может только для MyWebSite.ru
Пришлось устанавливать мод авторизации GET-запросом и открывать его во фрэйме, после чего проблема решилась.
Закрыто

Вернуться в «Для авторов (phpBB 3.0.x)»