PDA

Показать полную графическую версию : Отображение админского интерфейса, в зависимости от переменной


rizz
02-06-2009, 10:52
Хочу сделать чтобы админский интерфейс отображался в зависимости от установленной переменной
допустим $admin=0; не отображать, $admin=1; отображать

страничка с админским интерфесом лежит в папке www/admin/index.php папка под паролем с помощью .htpasswd
а сам сайт www/index.php

просто хочу чтобы не выкидывать лишние админские блоки каждый раз при переписывании кода из текста вручную, а чтобы они автоматически отключались из кода с помощью переменной, а страничку index.php просто копировать

понимаю что переменную можно передать через GET и тогда интерфейс отобразится, но скрипты всё равно в другой папке под паролем так что доступа к админке не будет
вобщем незнаю как правильно это делается?

или вначале страницы обнулить переменную $admin, а потом уже писать в зависимости от админский интерфейс или нет, код ведь сверху вниз исполняется, даже если будет передана переменная а потом обнулена, то уже никак её не передать?

и насколько это надёжно вобще .htpasswd?

proxy
02-06-2009, 13:28
имхо, думаю нужны сессии.

во все php файлы, в самом верху добавляете: session_start();
Теперь во всех файлах, в любом месте (в любой функции), доступен супер-глобальный сессионный массив.

Т.е. сделать форму авторизации, хотя бы в том же www/index.php, хотя бы самую простую, хотя бы так:
<?
session_start();

function auth(){
$auth = $_GET['auth'];
$auth_out = $_GET['auth_out'];
$login = str_replace(' ', '', $_GET['login']);
$pass = str_replace(' ', '', $_GET['pass']);
$cfg_login = 'admin'; //'admin' - для удобства можно вынести в переменную, во внешний php файл config.php, и оттуда считывать значение логина. Либо сразу ипользовать базу...
$cfg_pass = '333'; //'333' - для удобства можно вынести в переменную, во внешний php файл config.php, и оттуда считывать значение пароля. Либо сразу ипользовать базу...

if(!$auth_out && $_SESSION['auth'] == 2 || ($auth && $login == $cfg_login && $pass == $cfg_pass)){
$_SESSION['auth'] = 2; //2 - авторизован администратор, 1-цу можно оставить для авторизации зарегестированных пользователей (не администраторов)
include('admin/index.php'); //в файле 'admin/index.php' - только административные функции, которые можно будет использовать из файла 'www/index.php'
?>
Здравствуйте, Администратору
<form action="index.php">
<br><input type="submit" name="auth_out" value="Выход">
</form>
<?
}else{
$_SESSION['auth'] = 0; //гости сайт ?>
Здравствуйте, Гость
<form action="index.php">
Логин: <input type="text" name="login">
<br>Пароль: <input type="text" name="pass">
<br><input type="submit" name="auth" value="Отпавить">
</form>
<?
}
}
?>


в нужном месте html вставить:
<? auth(); ?>

proxy
02-06-2009, 13:45
в php ссесии - ооооочень полезное дело, и на самом деле, очень простое.

о ссесиях (http://www.phpfaq.ru/sessions)
еще полезная статья (http://www.php.su/articles/?cat=protocols&page=009)

неплохой скрипт авторизации, можно легко доделать под свои нужды, с ипользованием базы (http://pyha.ru/forum/topic/109.0)




© OSzone.net 2001-2012