вопрос
Здравствуйте!
Прежде всего хочу сказать, что меня интересует реализация только через PHP, не через шаблоны и т.п.
Перед тем, как сказать, на каком моменте у меня возникли вопросы, опишу то, что я сделал.
Первым делал в файле engine/data/conig.php в строчке start_site я установил значение "4".
Таким образом, появился ещё один вариант того, какой будет главная страница.
Затем я открыл файл engine/init.php и попытался, по аналогии с 3 вариантом главной страницы (3 вариант - статическая страница с именем main) сделать вывод собственного варианта.
У меня получилось сделать так, чтобы на главной выводилась статическая страница, если в конфете указано значение 4:
А вот сделать так, чтобы была ещё проверка на то, авторизован пользователь, или нет, не получилось. Попробовал так:
Но в любом случае выводится страница main.
Полагаю, дело в том, что у меня ещё не определяется $is_logged. Но если вставить эту часть кода в другой фрагмент файла, то он уже не работает.
Прошу помочь. Я чую, решение где-то близко.
Прежде всего хочу сказать, что меня интересует реализация только через 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. Но если вставить эту часть кода в другой фрагмент файла, то он уже не работает.
Прошу помочь. Я чую, решение где-то близко.
Несколько часов разбирательств и я сам решил проблему.
Чтобы всё работало, в init.php добавляем такой код:
И чтобы на страницу статистики перебрасывало после успешной авторизации, в sitelogin ищем:
И ниже добавляем:
Чтобы всё работало, в 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" );