Внимание!
Не все расширения для phpBB 3.2 совместимы с phpBB 3.3, главным образом из-за неверного синтаксиса в определениях сервисов (отсутствия обрамляющих кавычек - '...').
Перед обновлением необходимо убедиться в совместимости всех расширений.
Рекомендуется предварительно тестировать обновление на копии конференции (локально или на сервере).

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

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

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

Не получается авторизация через 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
Сообщения: 2194
Стаж: 10 лет 8 месяцев
Благодарил (а): 41 раз
Поблагодарили: 455 раз

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

Сообщение Pazh »

посмотри в FireBug вкладку Cookies, кроме того не появляется ли в адресной строке новый sid
форум ЖК Вестердам Помощь в ЛС/email только за WM или ЯД

Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2190
Стаж: 12 лет 6 месяцев
Откуда: Павлодар
Благодарил (а): 7 раз
Поблагодарили: 340 раз

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

Сообщение nissin »

phpBB после логина нужно передавать session_id через cookie или sid в GET запросе.
Всё повторяется. nurlan.info

Max Brown
phpBB 1.0.0
Сообщения: 2
Стаж: 6 лет 6 месяцев

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

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

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

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