Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Авторизация
 
 автор: CRazych   (07.11.2006 в 01:27)   письмо автору
 
 

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

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

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

   
 
 автор: Lelik   (07.11.2006 в 02:05)   письмо автору
 
   для: CRazych   (07.11.2006 в 01:27)
 

создать в БД таблицу (или записывать в файл) кому к какому каталогу открыт доступ

   
 
 автор: Малая   (07.11.2006 в 02:09)   письмо автору
 
   для: 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>

   
 
 автор: CRazych   (07.11.2006 в 03:21)   письмо автору
 
   для: Малая   (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)


{

$arrDirtreeDir($_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/";

На код не смейтесь чуть ли не первый раз пишу. Всякую критику приму во внимание (желательно с объяснением решения порблемы)

   
 
 автор: ihoru   (07.11.2006 в 08:46)   письмо автору
 
   для: 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"?>'; ?>

   
 
 автор: CRazych   (07.11.2006 в 16:51)   письмо автору
 
   для: ihoru   (07.11.2006 в 08:46)
 

Не совсем меня поняли.
значение переменной можно передать и не через ссылку. Нужно как то обработать результат что б он не давал вазможность просматривать директорию выше корня.

<?= '<?xml version="1.0"?>'; ?>
для стандарта

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования