Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы Как бы перенаправить пользователей сразу после авторизации на статические страницы их групп, а?

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


     15.04.2014    Общие вопросы, Шаблоны (TPL), Ламерские вопросы    1810

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

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

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

Ответил: sergey_


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

Комментарии пользователей (13)

rocksmart
64

307 | 115

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_
19

sergey_ - 15 апреля 2014 17:47 - Юзер

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

sergey_
19

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

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

rocksmart
64

307 | 115

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_
19

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_
19

sergey_ - 23 апреля 2014 16:03 - Юзер

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

rocksmart
64

307 | 115

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_
19

sergey_ - 23 апреля 2014 19:27 - Юзер

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

rocksmart
64

307 | 115

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

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

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

sergey_
19

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

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

sergey_
19

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
64

307 | 115

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_
19

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>


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

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

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