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

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


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

вопрос
Т.е. у меня есть, скажем, 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>


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

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

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

наверх