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

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


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

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

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

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

Ответил: sergey_


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

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

rocksmart
Юзер

rocksmart - 15 апреля 2014 17:35 -

Для браузеров с поддержкой 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_ - 15 апреля 2014 17:47 -

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

sergey_
Юзер

sergey_ - 15 апреля 2014 17:52 -

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

rocksmart
Юзер

rocksmart - 15 апреля 2014 18:07 -

Можно использовать глобальную из 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_ - 16 апреля 2014 13:37 -

О, это работает, но есть проблемы. Срабатывет только один раз, те если этот пользователь выйдет и залогинется другой - переадресации не происходит(что очевидно).
Попробовал поставить 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_ - 23 апреля 2014 16:03 -

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

rocksmart
Юзер

rocksmart - 23 апреля 2014 16:24 -

ну а так


<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_ - 23 апреля 2014 19:27 -

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

rocksmart
Юзер

rocksmart - 23 апреля 2014 20:06 -

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

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

sergey_
Юзер

sergey_ - 23 апреля 2014 20:45 -

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

sergey_
Юзер

sergey_ - 24 апреля 2014 12:47 -

Метод научного тыка, а именно, в /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 - 24 апреля 2014 16:45 -

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_ - 24 апреля 2014 17:38 -

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

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


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

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

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

наверх