XF 2.0 Как вывести форму авторизации\регистрации форума на сайте

Статус
В этой теме нельзя размещать новые ответы.

kupurim

Проверенные
Сообщения
63
Реакции
3
Баллы
305
Здравствуйте.
Есть сайт на самописе и форум установлен в корне, в папке /forum.
Нужно на сайте вывести форму авторизации от движка xenForo. Как это можно сделать?
При открытии модального окна формы отправляется ajax запрос и в нем есть поле _xfToken, думаю что если его как-то на сайте сгенерировать, то можно вручную отправить и все нормально пройдет.
Не подскажите как это лучше сделать или вообще как сделать?
Спасибо!

Ап... Неужели нет решения?
 
Последнее редактирование модератором:
Последнее редактирование:
Сделайте кнопку войти, отправьте AJAX запрос на /folder/login, js скриптом обработайте ответ и покажите модальное окно
Я уже и так думал. Но там нет валидации в, перебрасывает на саму страницу forem/login. Но так же и на самом форуме работает, так что не страшно. Пусть даже и не перекидывает после успешной авторизации, но это можно подправить.
Но вот c регистрацией так не получается, выдает ошибку - "Произошла ошибка безопасности. Пожалуйста, нажмите назад, обновите страницу и повторите попытку. "

С авторизацией сделал так, взял html код формы с форума и подставил токен в поле - \XF::app()->get('csrf.token')
Все работает как нужно.
В регистрации имена полей зашифрованы и постоянно меняются. Как можно их расшифровать или убрать шифрование?
Так же есть какое-то поле с name "reg_key" как быть с ним?
 
Последнее редактирование модератором:
kupurim, подключить XF и использовать его функции для авторизации.
Он и так подключен. Мне нужно вывести именно его форму для регистрации. Подскажите в какую сторону копать с его регистрацией?
 
Последнее редактирование:
$regForm = $this->service('XF:User\RegisterForm');
$regForm->saveStateToSession($this->session());

А ну и самое сладкое.
$regForm->getHashedInputValues($this->request);

PHP:
protected $hashedFields = [
        'username',
        'email',
        'password',
        'timezone'
    ];

public function getHashedInputValues(\XF\Http\Request $request)
    {
        $values = [];
        foreach ($this->hashedFields AS $field)
        {
            $values[$field] = $request->filter($this->getFieldName($field), 'str');
        }

        return $values;
    }

public function getUnhashedInputValues(\XF\Http\Request $request)
    {
        $values = [];
        foreach ($this->hashedFields AS $field)
        {
            $values[$field] = $request->filter($field, 'str');
        }

        return $values;
    }
 
Последнее редактирование:
Не подскажите что с этим делать?)
В своем скрипте подключаю файлы форума так:
Код:
$dir = public_path() . '/forum';
require($dir . '/src/XF.php');
\XF::start($dir);
$XF = \XF::setupApp('XF\Pub\App');
$XF->start();
 
Вам уже написали, как. Либо задавайте более конкретные вопросы с примерами своего кода и может быть кто-то там покопается, либо вам в раздел поиска исполнителя. Тут уже хотелка выходит за рамки технической поддержки
 
Как вывести вид формы в своем файле? В котроллере вижу вывод вьюхи - Все изображения и файлы загружайте только на наш сервер!
Если это оно конечно:)

Извините, загружаю картинку на Ваш сервер!
Вопрос остаётся тот же:

Как вывести вид формы в своем файле? В контроллере вижу вывод вьюхи:

11eb8a0eb4.jpg


Если это оно конечно.
 
Последнее редактирование модератором:
Вот что не пойму, мне должен вернуться html код формы тут:
Код:
$class = \XF::app()->extendClass('XF\Pub\Controller\Register');
$registerController = new $class(\XF::app(), \XF::app()->request());
var_dump($registerController->actionIndex());
И на выходе у меня такой объект:
431b1b9051.jpg

Подскажите пожалуйста что я не так делаю?
 
Вы знаете, что такое MVC? Класс "View" - это далеко не html код, который, как вы думаете, должен возвращаться вам
Вот я и хочу узнать как мне вывести именно html код. Не подскажете?
 
kupurim, сделайте ajax запрос к скрипту и движок выдаст html код
Отправляю вот так:
Код:
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);
        
$result = file_get_contents('/forum/register/?_xfRequestUri=%2Fforum%2F&_xfWithData=1&_xfToken='.\XF::app()->get('csrf.token') .'&_xfResponseType=json', false, stream_context_create($arrContextOptions));

var_dump(json_decode($result));
В результате получаю ошибку - "Данный сайт использует cookie. Вы должны принять их для продолжения использования."
Что может быть не так?
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу