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

Форум PHP

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

 

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

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

тема: удаление сессий чужого пользователя....
 
 автор: Gimli   (30.03.2006 в 20:10)   письмо автору
 
 

я пишу маленькую порталку
и мне надо так настроить систему пользователей
чтобы например я пользователя рангом ниже сделал(модератор->обыкн пользователь)
и его сессии изменились( т.к. все данные о статусе у меня хранятся в сессиях)
кто-нибудь может посоветовать что-нибудь???

   
 
 автор: Trianon   (30.03.2006 в 21:11)   письмо автору
 
   для: Gimli   (30.03.2006 в 20:10)
 

Не стоит так делать.
Храните чужие данные в файлах или в БД, а в сессии держите те данные, к которым всяко не нужно будет обращаться из чужих сессий. В идеале - только идентификатор пользователя.

   
 
 автор: Gimli   (30.03.2006 в 21:20)   письмо автору
 
   для: Trianon   (30.03.2006 в 21:11)
 

но каждый раз эти данные извлекать из файла проблематично!(это мое мнение)

   
 
 автор: Trianon   (30.03.2006 в 21:32)   письмо автору
 
   для: Gimli   (30.03.2006 в 21:20)
 

Понимаете, то что Вы просите, в принципе, можно выполнить.
Найти в tmp/ файл sess_ с идентификатором сессии, удалить его. Или перезаписать.
Но это будет являться грубым хаком.
В результате, проблем станет еще больше.
Например, при переносе на другой хостинг, при смене версии движка.
Еще при каких-нибудь обстоятельствах, когда Вы уже и думать забудете, что когда-то сделали привязку к чужому механизму. В данном случае - к механизму управления сессиями.

   
 
 автор: Gimli   (30.03.2006 в 21:35)   письмо автору
 
   для: Trianon   (30.03.2006 в 21:32)
 

то есть
в сессии хранится только id пользователя
а дальше я делаю

<?
$file 
file("data/users.dat");
 for(
$i=0;$i<count($file);$i++)
 {
  
$q explode("<>"$file[$i]);
  if (
strtolower($q[0]) == strtolower($_SESSION['user_nick'])){присваиваю опр переменным все значения(или массиву)}
}
?>

так?

   
 
 автор: Trianon   (30.03.2006 в 21:40)   письмо автору
 
   для: Gimli   (30.03.2006 в 21:35)
 

Можно так.
Можно по-другому. Например создать по файлу для каждого пользователя с именем равным логину. Или (если логин допускает всякую ересь вроде пробелов и русских букв) хешу от логина { $filename = md5($login).".txt"; } . Для преобразования данных в текстовое представление имеет смысл использовать функции serialize, unzerialize . Механизм сессий пользуется именно ими.

   
 
 автор: Gimli   (30.03.2006 в 21:43)   письмо автору
 
   для: Trianon   (30.03.2006 в 21:40)
 

не так не очень потому что файлов будет очень много!
будет например 200 пользователей и 200 файлов
ХОТЯ тогда быстрее будет все работать т.к. каждый пользователь будет писать все в свой файл!

   
 
 автор: Trianon   (30.03.2006 в 21:54)   письмо автору
 
   для: Gimli   (30.03.2006 в 21:43)
 

Двести файлов - вполне приемлемо.
Если за несколько тысяч, тогда можно думать о том, как на БД перелезть.
Впрочем, об этом можно думать сразу. На БД всяко будет гибче.

   
 
 автор: Gimli   (30.03.2006 в 21:59)   письмо автору
 
   для: Trianon   (30.03.2006 в 21:54)
 

да в том то и вся штука
я хочу портал БЕЗ базы!

   
 
 автор: Shorr Kan   (30.03.2006 в 22:44)   письмо автору
 
   для: Gimli   (30.03.2006 в 21:59)
 

Делите на каталоги.

level
|
|\_ best_users/
|
|\_ normal_users/
|
\_ bad_users/

В каждом каталоге - файл с айди логина. Так вы уменьшите нагрузку на файловую систему, так как в одном каталоге будет не очень много файлов.

   
 
 автор: Gimli   (30.03.2006 в 22:45)   письмо автору
 
   для: Shorr Kan   (30.03.2006 в 22:44)
 

а как их распределять( на хороших плохих) ???

   
 
 автор: Shorr Kan   (30.03.2006 в 23:10)   письмо автору
 
   для: Gimli   (30.03.2006 в 22:45)
 

Это я условно. "пользователя рангом ниже" - это ваши слова. Вы хотите разбить на ранги. Но как "ранг" по-английски - я не знаю. Как "плохой" - знаю.

   
 
 автор: Trianon   (31.03.2006 в 10:22)   письмо автору
 
   для: Shorr Kan   (30.03.2006 в 22:44)
 

В современных файловых системах (это такие, которые старше FAT32), размер каталога создает не пропорциональную нагрузку, а логарифмическую. Поэтому не нужно усложнять жизнь там, где нет проблемы. Проблемы же в этой части начнутся не раньше, чем с нескольких десятков тысяч файлов на каталог. А вот путем серьезного усложнения скрипта проблемы огрести можно прямо сейчас.

   
 
 автор: cheops   (31.03.2006 в 12:52)   письмо автору
 
   для: Trianon   (31.03.2006 в 10:22)
 

Кроме того, при частом обращении к файловой системе - содержимое каталога не плохо кэшируется, поэтому проблемы мне кажется начнутся сильно позже...

   
Rambler's Top100
вверх

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