Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Система авторизации, доступ к директории и файлам 
:(
    Опции темы
Neznayka
Дата 7.11.2006, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 26.8.2005

Репутация: нет
Всего: нет



Скажите на каком принципе можно построить авторизацию на доступ к файлам.
т.е.
Есть скрипт который отображает все папки и файлы в каталоге и осуществляет навигацию по нему.

Нужна просто логикак как можно построить авторизцию. Ну что б один человек имел доступ в 1 папку другой в другую и т.д.
Код

<?php
$path="./../root/";

function treeDir ($path)
{
     if (substr($path , strlen($path) - 1) != '/') {$path .= '/';}
     $dirlist = array();
     if ( $handle = opendir($path))
     {
          while (false !== ($file = readdir($handle )))
          {
               if ($file != '..')
               {
                    if (is_dir($path.$file)) {$arrDir[] = $file;}
                    if (is_file($path.$file)) {$arrFile[] = $file;}
               }
          }
          closedir ( $handle ) ;
     }
     return Array('Dir' => $arrDir, 'File' => $arrFile);
}



if ($_GET['fname']== true && $_GET['path']== true && $_GET['download']<1)


{

$arrDir= treeDir($_GET['path'].$_GET['fname']);
}

elseif ($_GET['fname']== true && $_GET['path']== true && $_GET['download']==1)
{
//$_GET['path'].$_GET['fname']
        header('Content-Disposition: attachment; filename='.$_GET['fname']);
$x = fread(fopen($_GET['path'].$_GET['fname'],"rb"), filesize($_GET['path'].$_GET['fname']));
    echo $x;
    die();
}
else
{
$arrDir = treeDir($path);
}
//endif;
?>
<?= '<?xml version="1.0"?>'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
     <meta http-equiv="content-type" content="text/html; charset=windows-1251" />
          <title>Вывод файлов</title>
     </head>
     <body>


<h3>Обзор папок директории</h3>
<hr>
<table>
<?php
if (($arrDir['Dir'])>0)
{
foreach ($arrDir['Dir'] as $_dir)
{
?>
    <tr>
        <td><img src="img/1.gif"></td>
        <td><?php echo '<a href="'.$SERVER['REQUEST_URI'].'?fname='.urlencode($_dir).'&path='.$path.'">'.$_dir.'</a><br />' ?> </td>
    </tr>
<?php
}
}
else
{
?>

        <tr>
            <td><img src="img/5.gif"></td>
            <td>Нет папок для отображения</td>
        </tr>
<?php
}
?>
</table>
<hr><h3>Обзор файлов директории <?php print $_GET['fname'] ?></h3>
<hr>
<table>
<?php
if (($arrDir['File'])>0)
{
foreach ($arrDir['File'] as $_file)
{
?>
    <tr>
        <td><img src="img/6.gif"></td>
        <td><?php echo '<a href="'.$SERVER['REQUEST_URI'].'?fname='.urlencode($_file).'&path='.$path.'&download=1" >'.$_file.'</a><br />'; ?></td>
    </tr>
<?php
}
}
else
{
?>
        <tr>
            <td><img src="img/5.gif"></td>
            <td>Нет файлов для отображения</td>
        </tr>
<?php
}
?>
</table><hr>
</body>
</html>


Это сообщение отредактировал(а) Neznayka - 7.11.2006, 01:35
PM MAIL   Вверх
Nbuth
Дата 7.11.2006, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.11.2006
Где: Москва

Репутация: нет
Всего: нет



Neznayka, если тебе нужна логика, зачем код приводишь? Особо его не смотрел, но насколько понял, у тебя $path путь откуда начинается просмотр.
Отсюда и вся логика:
Хранишь где-ть корневую папку для каждого юзера/группы, начинаешь просмотр для него с "его" папки, и отслеживаешь, что б не пытался выйти на уровень выше (ниже думаю ему можно будет ходить, если нет, тоже проверяешь)

Это сообщение отредактировал(а) Nbuth - 7.11.2006, 10:25
PM MAIL ICQ   Вверх
pythonwin
Дата 7.11.2006, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: нет
Всего: 36



можешь просто запустить CGIHTTPServer и поставить аудентификацию и всё smile
PM WWW GTalk Jabber   Вверх
albertn
Дата 7.11.2006, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: нет
Всего: 34



Можешь поискать какой-нить движок, в котором уже реализованно разделение по провам доступа. Или тебе нужно именно самому сделать?
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0854 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.