Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Отображение админского интерфейса, в зависимости от переменной (http://forum.oszone.net/showthread.php?t=141642)

rizz 02-06-2009 10:52 1132863

Отображение админского интерфейса, в зависимости от переменной
 
Хочу сделать чтобы админский интерфейс отображался в зависимости от установленной переменной
допустим $admin=0; не отображать, $admin=1; отображать

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

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

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

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

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

proxy 02-06-2009 13:28 1132993

имхо, думаю нужны сессии.

во все php файлы, в самом верху добавляете:
HTML код:

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

Т.е. сделать форму авторизации, хотя бы в том же www/index.php, хотя бы самую простую, хотя бы так:
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'] == || ($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 вставить:
PHP код:

<? auth(); ?>


proxy 02-06-2009 13:45 1133007

в php ссесии - ооооочень полезное дело, и на самом деле, очень простое.

о ссесиях
еще полезная статья

неплохой скрипт авторизации, можно легко доделать под свои нужды, с ипользованием базы


Время: 01:56.

Время: 01:56.
© OSzone.net 2001-