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

Как сделать главной страницей для авторизованных пользователей страницу статистики, а для неавторизированных - страницу main?


     16.07.2015    Общие вопросы по PHP, Хаки    962

вопрос
Здравствуйте!

Прежде всего хочу сказать, что меня интересует реализация только через PHP, не через шаблоны и т.п.
Перед тем, как сказать, на каком моменте у меня возникли вопросы, опишу то, что я сделал.

Первым делал в файле engine/data/conig.php в строчке start_site я установил значение "4".
'start_site' => '4',

Таким образом, появился ещё один вариант того, какой будет главная страница.

Затем я открыл файл engine/init.php и попытался, по аналогии с 3 вариантом главной страницы (3 вариант - статическая страница с именем main) сделать вывод собственного варианта.

У меня получилось сделать так, чтобы на главной выводилась статическая страница, если в конфете указано значение 4:
if( $config['start_site'] == 4 AND $_SERVER['QUERY_STRING'] == "" AND !$_POST['do']) {

    $_GET['do'] = "stats";
    $_REQUEST['do'] = "stats";

}


А вот сделать так, чтобы была ещё проверка на то, авторизован пользователь, или нет, не получилось. Попробовал так:
if( $config['start_site'] == 4 AND $_SERVER['QUERY_STRING'] == "" AND !$_POST['do']) {

    if ($is_logged) {

        $_GET['do'] = "stats";
        $_REQUEST['do'] = "stats";

    } else {

        $_GET['do'] = "static";
        $_REQUEST['do'] = "static";
        $_GET['page'] = "main";
        $_REQUEST['page'] = "main";

    }

}


Но в любом случае выводится страница main.

Полагаю, дело в том, что у меня ещё не определяется $is_logged. Но если вставить эту часть кода в другой фрагмент файла, то он уже не работает.

Прошу помочь. Я чую, решение где-то близко.

Ответил: Lashchevsky


Несколько часов разбирательств и я сам решил проблему.

Чтобы всё работало, в init.php добавляем такой код:

if( $config['start_site'] == 5 AND $_SERVER['QUERY_STRING'] == "" AND !$_POST['do']) {

    if( isset( $_POST['login'] ) AND $_POST['login_name'] AND $_POST['login_password'] AND $_POST['login'] == "submit" ) {

        // Look file modules/sitelogin.php

    } elseif( isset( $_SESSION['dle_user_id'] ) AND  intval( $_SESSION['dle_user_id'] ) > 0 AND $_SESSION['dle_password'] ) {

            $member_id = $db->super_query( "SELECT * FROM " . USERPREFIX . "_users WHERE user_id='" . intval( $_SESSION['dle_user_id'] ) . "'" );

            if( $member_id['user_id'] AND $member_id['password'] AND $member_id['password'] == md5( $_SESSION['dle_password'] ) ) {

                $is_logged = TRUE;

            } else {

                $is_logged = false;
            }

    } elseif( isset( $_COOKIE['dle_user_id'] ) AND intval( $_COOKIE['dle_user_id'] ) > 0 AND $_COOKIE['dle_password']) {

        if ($config['login_log']) $allow_login = check_allow_login ($_IP, $config['login_log']);

        if ( $allow_login ) {

            $member_id = $db->super_query( "SELECT * FROM " . USERPREFIX . "_users WHERE user_id='" . intval( $_COOKIE['dle_user_id'] ) . "'" );

            if( $member_id['user_id'] AND $member_id['password'] AND $member_id['password'] == md5( $_COOKIE['dle_password'] ) ) {

                $is_logged = TRUE;

            } else {

                $is_logged = false;


            }

            if( $config['log_hash'] and (($_COOKIE['dle_hash'] != $member_id['hash']) or ($member_id['hash'] == "")) ) {

                $is_logged = false;

            }
        }
    }


    if ( $is_logged ) {

        $_GET['do'] = "stats";
        $_REQUEST['do'] = "stats";

    } else {

        $_GET['do'] = "static";
        $_REQUEST['do'] = "static";
        $_GET['page'] = "main";
        $_REQUEST['page'] = "main";

    }

    $is_logged = FALSE;

}

И чтобы на страницу статистики перебрасывало после успешной авторизации, в sitelogin ищем:
                $db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users set lastdate='{$_TIME}', logged_ip='{$_IP}' WHERE user_id='{$member_id['user_id']}'" );

            $is_logged = TRUE;

И ниже добавляем:
header( "Location: /statistics.html" );

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

Lashchevsky
2

25 | 4

Lashchevsky - 17 июля 2015 13:02 - Юзер

В ответе поправочка!

В самом начале не
if( $config['start_site'] == 5
а
if( $config['start_site'] == 4

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

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