ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 19.01.2009, 11:48
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Цитата:
Юзай принцип ACL (Access Control List). На каждое атомарное действие (view/insert/update/delete) над каждым объектом задай уровни доступа, которые будут опираться на GroupID юзера и храниться в базе. Затем одним простым запросом вытаскивай всю таблицу ACL и сверяй права. Можешь реализовать кэширование, если напрягает постоянное обращение к базе.

http://ru.wikipedia.org/wiki/ACL - оно. Применяй эту концепцию к ООП.

UPD: Данный подход позволяет в дальшейшем легко управлять правами групп через админский интерфейс, не редактируя исходники.

UPD2: Надеюсь ты в своей CMS используешь ООП, в противном случае я тебе сочувствую.
Всё верно говоришь, только я бы не стал задавать уровни доступа над каждым объектом - слишком много мета-описания для однотипных объектов... Слишком этом громоздко в каждой странице проверять права доступа и т.д.). Лучше хранить уровни доступа для групп объектов - ну там статьи, новости, файлы, профили пользователей и т.д., т.е. права определяют не отдельные объекты, а группу однотипных объектов.
 

  #2  
Старый 19.01.2009, 12:46
svesve
Постоянный
Регистрация: 15.06.2007
Сообщений: 527
Провел на форуме:
1734541

Репутация: 214


По умолчанию

данные о правах
PHP код:
$query "SELECT users.user_id,users.right_id,rights.* FROM users,rights WHERE users.right_id=rights.right_id and login='$name'";
        
$res mysql_query($query) or trigger_error(mysql_error().$query);
            if (
$row mysql_fetch_assoc($res)) {
                
$_SESSION['user_id'] = $row['user_id'];
                
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
                
$_SESSION['priv']=$row['right_id'];
            } 
в header.inc.php
прописываю конкретно какие права у юзера
PHP код:
mysql_connect('localhost','calendar','123123') OR DIE("Не могу создать соединение ");
mysql_select_db('smart_calendar') or die(mysql_error()); 
$query "SELECT  * FROM `rights` where right_id='$_SESSION[priv]'";
$res=mysql_query($query) or die(mysql_error());
while(
$row=mysql_fetch_array($res)){
$_SESSION['rights']=$row['rights'];
$_SESSION['holidays']=$row['holidays'];
$_SESSION['structure']=$row['structure'];
$_SESSION['users']=$row['users']; 
а далее на каждой странице идет проверка
PHP код:
if($_SESSION['holidays']=='1'){ 
это вообще правильно все?

З.Ы. это не кмска )
 

  #3  
Старый 19.01.2009, 12:57
prescott
Участник форума
Регистрация: 28.07.2008
Сообщений: 158
Провел на форуме:
728470

Репутация: 115
По умолчанию

Насколько я понимаю, при взломе сайта на reverse-ip сессии твоих пользователей можно будет редактировать, так что я бы сверялся с БД каждый раз когда нужно проверить права.
 

  #4  
Старый 19.01.2009, 13:02
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Цитата:
Насколько я понимаю, при взломе сайта на reverse-ip сессии твоих пользователей можно будет редактировать, так что я бы сверялся с БД каждый раз когда нужно проверить права.
prescott, при чём тут reverse-ip? Глупый набор слов не имеющий никакого смысла...

svesve, конечно это не эталон программирования, но вполне работоспособная реализация.
 

  #5  
Старый 19.01.2009, 13:08
svesve
Постоянный
Регистрация: 15.06.2007
Сообщений: 527
Провел на форуме:
1734541

Репутация: 214


По умолчанию

Цитата:
svesve, конечно это не эталон программирования, но вполне работоспособная реализация.
Ну на то этот раздел и есть )) учусь учусь учусь ))
спс за инфу,будем размышлять.
 

  #6  
Старый 19.01.2009, 15:33
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

А откуда берутся эти:

$attachpath
$name"
 

  #7  
Старый 19.01.2009, 15:49
1SeTh
Участник форума
Регистрация: 17.02.2006
Сообщений: 189
Провел на форуме:
2406659

Репутация: 34
По умолчанию

Цитата:
Сообщение от Pashkela  
А откуда берутся эти:

$attachpath
$name"
я это потом посмотрю,ю
один вопрос если в линк есть знак " & "

может из за этого не сработать линк?
 

  #8  
Старый 19.01.2009, 15:53
geforce
Постоянный
Регистрация: 21.08.2008
Сообщений: 302
Провел на форуме:
458686

Репутация: -25
Отправить сообщение для geforce с помощью ICQ
Wink

Цитата:
Сообщение от 1SeTh  
я это потом посмотрю,ю
один вопрос если в линк есть знак " & "

может из за этого не сработать линк?
нет в ачате срабатывает же
http://forum.antichat.ru/editpost.php?do=editpost&p=1067230

Последний раз редактировалось geforce; 19.01.2009 в 16:04..
 

  #9  
Старый 20.01.2009, 19:03
1SeTh
Участник форума
Регистрация: 17.02.2006
Сообщений: 189
Провел на форуме:
2406659

Репутация: 34
По умолчанию

Цитата:
Сообщение от geforce  
нет в ачате срабатывает же
http://forum.antichat.ru/editpost.php?do=editpost&p=1067230
я не это имел ввиду, в самом названии аттачмента есть знак амперсанда когда тыкаешь на линк то получается что то вроде этого
download.php?name=blablabbla&blabla.zip

и выходить ошибка

Цитата:
Warning: filesize() [function.filesize]: stat failed for D:\htdocs\website\attachment\blablabbla in D:\htdocs\website\downloadfile.php on line 14

Warning: readfile(D:\htdocs\website\attachment\blablabbla) [function.readfile]: failed to open stream: No such file or directory in D:\htdocs\website\downloadfile.php on line 16

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

должно было быть

D:\htdocs\website\attachment\blablabbla&blabla.zip

а выходить с ошибкой

D:\htdocs\website\attachment\blablabbla
 

  #10  
Старый 19.01.2009, 15:39
ron63
Новичок
Регистрация: 17.06.2008
Сообщений: 10
Провел на форуме:
137065

Репутация: 4
Отправить сообщение для ron63 с помощью ICQ
По умолчанию

Привет, у меня вопрос.

как реализоватть на php потоковое видео, как бы тв эфир, или как можно с другого тв канала перетранслировать поток на свой сайт..
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ