|
|
|
| Скажите на каком принципе можно построить авторизацию на доступ к файлам.
т.е.
Есть скрипт который отображает все папки и файлы в каталоге и осуществляет навигацию по нему.
Нужна просто логикак как можно построить авторизцию. Ну что б один человек имел доступ в 1 папку другой в другую и т.д.
если необходимо магу выложить скрипт. | |
|
|
|
|
|
|
|
для: CRazych
(07.11.2006 в 01:27)
| | создать в БД таблицу (или записывать в файл) кому к какому каталогу открыт доступ | |
|
|
|
|
|
|
|
для: CRazych
(07.11.2006 в 01:27)
| | Ну, можна так:
Создайте таблицу table в БД, в которой отметьте права юзеров.
Например, ее структура может быть такой:
id: ID юзера
url: папка
И свяжите юзеров с етими папками, тоесть если юзер з
ID=1 имеет доступ к папкам folder1, folder27,
а з ID=2 к folder1, folder2,folder 17,
то ето может быть так:
id | url
1 | folder1
1 | folder27
2 | folder1
2 | folder2
2 | folder17
И при запросе перехода на какой то линк делайте запрос в базу
select url from table where id=....
Проверяете, есть ли среди url тот, который хочет юзер и пускаете , если нет - сообщение под нос:
<SCRIPT language="JavaScript">
alert ("Вам сюда нельзя");
</SCRIPT>
|
| |
|
|
|
|
|
|
|
для: Малая
(07.11.2006 в 02:09)
| | Спасибо.
Ещё вапрос:
вот сам скрипт
<?php
if (($_POST['login']==admin) && ($_POST['pwd']==admin))
{
$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);
}
?>
<?= '<?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>
<form name="del" action="<?php $SERVER['REQUEST_URI'] ?>" method="post">
<h3 align="center">Обзор папок директории</h3>
<div><input type="submit" value="Новая папка"><input type="submit" value="Удалить"> </div>
<hr>
<table>
<?php
if (($arrDir['Dir'])>0)
{
foreach ($arrDir['Dir'] as $_dir)
{
echo"<tr>";
if ($_dir !=".")
{
echo "<td><input name='$path$_dir' type='checkbox' value='ON'></td>";
//echo "$_file";
}
?>
<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
}
if (($arrDir['File'])>0)
{
foreach ($arrDir['File'] as $_file)
{
?>
<tr>
<?php echo "<td><input name='$path$_file' type='checkbox' value='ON'></td>"; ?>
<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
}
echo"</table><hr></form>";
}
else //авторизация
{
?>
<?= '<?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>
<?php
if ($_POST['login'])
{
print "<h3>Неправельный логин или пароль</h3>";
}
?>
<form name="aut" action="<?php $SERVER['REQUEST_URI'] ?>" method="post">
<input name="login" type="text" value="<?php print $_POST['login']; ?>"><br>
<input name="pwd" type="password" value=""><br>
<input type="submit" value="Вход"><br>
</form>
<?php
}
?>
</body>
</html>
|
Нужно закрыть дырку на доступ выше корневой директории т.е. $path="./../root/";
На код не смейтесь чуть ли не первый раз пишу. Всякую критику приму во внимание (желательно с объяснением решения порблемы) | |
|
|
|
|
|
|
|
для: CRazych
(07.11.2006 в 03:21)
| | вот в этом блоке:
echo"<tr>";
if ($_dir !=".")
{
echo "<td><input name='$path$_dir' type='checkbox' value='ON'></td>";
//echo "$_file";
}
|
написать:
echo"<tr>";
if (($_dir != ".") && ($_dir != ".."))
{
echo "<td><input name='$path$_dir' type='checkbox' value='ON'></td>";
//echo "$_file";
}
|
ой... или нет... Ну, вобщем попробуй
У тебя там вообще стока всего ;)
А зачем вот это:
<?= '<?xml version="1.0"?>'; ?> | |
|
|
|
|
|
|
|
для: ihoru
(07.11.2006 в 08:46)
| | Не совсем меня поняли.
значение переменной можно передать и не через ссылку. Нужно как то обработать результат что б он не давал вазможность просматривать директорию выше корня.
<?= '<?xml version="1.0"?>'; ?>
для стандарта | |
|
|
|