Технический сбой

Сайт временно работает в режиме только для чтения, идут восстановительные работы. Приносим свои извинения за неудобства.
DLE FAQ » Все вопросы » Общие вопросы » Как бы перенаправить пользователей сразу после авторизации на статические страницы их групп, а?

Как бы перенаправить пользователей сразу после авторизации на статические страницы их групп, а?


     перенаправить, переадресовать, статические страницы, группы пользователей    Общие вопросы, Шаблоны (TPL), Ламерские вопросы    4104

вопрос
Т.е. у меня есть, скажем, 5 групп пользователей и 5 статических страниц. Хочу, чтобы сразу после авторизации, пользователя отправляло на соответствующую его группе страницу.

Понимаю что надо использовать [group][/group], но что в них вставить?

Если сделать например так: [group=6]top.location.href="/static_6.html"[/group] и вставить это в main.tpl , то переадресация работает постоянно, как-бы её 1 раз что-ли вызвать, или еще что? Помогите плиз...

Ответил: sergey_


Вопрос решен! Ответ в комментариях.

13 комментариев

rocksmart
Юзер

rocksmart - -

Для браузеров с поддержкой html5


<script type="text/javascript">

var authorization = localStorage.getItem('authorization');
if(!authorization){
localStorage.setItem('authorization', 'yes');


[group=6]top.location.href="/static_6.html";[/group]
[group=5]top.location.href="/static_5.html";[/group]
}
// localStorage.removeItem('authorization'); //Удаление для проверки работоспособности



</script>

sergey_
Юзер

sergey_ - -

Спасибо большое! Сейчас попробую, отпишусь.

sergey_
Юзер

sergey_ - -

Не-а, внутри тега <script> не катять [group] - говорит ошибка.

rocksmart
Юзер

rocksmart - -

Можно использовать глобальную из js кода движка:

<script type="text/javascript">
<!--
var dle_root       = '/';
var dle_admin      = 'admin.php';
var dle_login_hash = '19fe7e18d7f82df3dc2cf6fc4ba0ef0d';
var dle_group      = 1;


var dle_group = 1;

<script type="text/javascript">

var authorization = localStorage.getItem('authorization');
if(!authorization){
localStorage.setItem('authorization', 'yes');


top.location.href="/static_"+dle_group+".html";

}
// localStorage.removeItem('authorization'); //Удаление для проверки работоспособности



</script>


top.location.href="/static_"+dle_group+".html";

sergey_
Юзер

sergey_ - -

О, это работает, но есть проблемы. Срабатывет только один раз, те если этот пользователь выйдет и залогинется другой - переадресации не происходит(что очевидно).
Попробовал поставить localStorage.removeItem('authorization'); сразу после определения переменной, т.е. вот так:

var authorization = localStorage.getItem('authorization');

localStorage.removeItem('authorization');

if(!authorization){
localStorage.setItem('authorization', 'yes');

top.location.href="/static_"+dle_group+".html";

}
// localStorage.removeItem('authorization'); //Удаление для проверки работоспособности

</script>


И всё бы хорошо, да вот только при таком раскладе пользователь не может ни куда больше сунуться с этой статической страницы. При попытке попасть в категорию main, например, получаю example.ru/main/static_6.html (чего не существует само-собой).

Как бы так сделать, чтобы эта переадресация срабатывала только один раз, но при каждой смене пользователей?

sergey_
Юзер

sergey_ - -

Так это, может добьем уже вопросик? Думаю это очень полезная вещь для всех будет....

rocksmart
Юзер

rocksmart - -

ну а так


<script type="text/javascript">

var authorization = localStorage.getItem('authorization'+dle_login_hash);
if(!authorization){
localStorage.setItem('authorization'+dle_login_hash, 'yes');


top.location.href="/static_"+dle_group+".html";

}
// localStorage.removeItem('authorization'+dle_login_hash); //Удаление для проверки работоспособности



</script>

sergey_
Юзер

sergey_ - -

О! Прекрасно! Остался один моментик. Как-то надо чистить LocalStorage, насколько я понимаю, при выходе пользователя. Дело в том, что сейчас переадресация срабатывает только один раз. Т.е. если пользователь логинится 1-й раз после очистки куки, кэша через Ctrl+Shift+Del, то всё прекрасно работает, а вот если он выйдет и залогинется еще раз, то уже не переадресовывает... Как-бы чистить так при выходе?

rocksmart
Юзер

rocksmart - -

ну смотри где происходит выход

echo '<script>localStorage.clear(); //удалит все элементы</script>';

sergey_
Юзер

sergey_ - -

Не знаю я где происходит выход.... В РHP я кофейник. Борюсь со стихией. Помоги пожалуйста... DLE 10.2.

sergey_
Юзер

sergey_ - -

Метод научного тыка, а именно, в /engine/modules/sitelogin.php пробовал сделать так:



if( isset( $_REQUEST['action'] ) and $_REQUEST['action'] == "logout" ) {

    echo '<script>localStorage.clear();</script>';
    
    $dle_user_id = "";
    $dle_password = "";
    set_cookie( "dle_user_id", "", 0 );
    set_cookie( "dle_name", "", 0 );
    set_cookie( "dle_password", "", 0 );
    set_cookie( "dle_skin", "", 0 );
    set_cookie( "dle_newpm", "", 0 );
    set_cookie( "dle_hash", "", 0 );
    set_cookie( session_name(), "", 0 );
    @session_destroy();
    @session_unset();
    $is_logged = 0;
    
    header( "Location: ".str_replace("index.php","",$_SERVER['PHP_SELF']) );
    die();
}



не помог... , пробовал и вот так:



if( isset( $_REQUEST['action'] ) and $_REQUEST['action'] == "logout" ) {

    echo '<script>localStorage.removeItem('authorization'+dle_login_hash);</script>';
    
    $dle_user_id = "";
    $dle_password = "";
    set_cookie( "dle_user_id", "", 0 );
    set_cookie( "dle_name", "", 0 );
    set_cookie( "dle_password", "", 0 );
    set_cookie( "dle_skin", "", 0 );
    set_cookie( "dle_newpm", "", 0 );
    set_cookie( "dle_hash", "", 0 );
    set_cookie( session_name(), "", 0 );
    @session_destroy();
    @session_unset();
    $is_logged = 0;
    
    header( "Location: ".str_replace("index.php","",$_SERVER['PHP_SELF']) );
    die();
}


rocksmart
Юзер

rocksmart - -

1. dle_login_hash - там нет такой js глобальной
2 у тебя код над header
3 повесь функцию на клик по кнопке выход

Пример в шаблоне

<script>
$(document).ready(function() {
$('.thide.lexit').on('click', function(){
localStorage.removeItem('authorization'+dle_login_hash);
return false;
});
});
</script>
            <a class="thide lexit" href="http://dle102.ura/index.php?action=logout">Выход</a>

sergey_
Юзер

sergey_ - -

Именно так, почему-то не пошло, пробовал и в main.tpl и в login.tpl. В итоге я убрал $(document).ready и разместил скрипт в самом низу login.tpl (чтобы успели создаться все объекты на странице до привязки функции). Сделал короче так:

<script>
$('.thide.lexit').on('click', function(){
localStorage.removeItem('authorization'+dle_login_hash);
});
</script>


И всё заработало, о чудо! Спасибо огромное!

Похожие вопросы

наверх