|
|
|
| я пишу маленькую порталку
и мне надо так настроить систему пользователей
чтобы например я пользователя рангом ниже сделал(модератор->обыкн пользователь)
и его сессии изменились( т.к. все данные о статусе у меня хранятся в сессиях)
кто-нибудь может посоветовать что-нибудь??? | |
|
|
|
|
|
|
|
для: Gimli
(30.03.2006 в 20:10)
| | Не стоит так делать.
Храните чужие данные в файлах или в БД, а в сессии держите те данные, к которым всяко не нужно будет обращаться из чужих сессий. В идеале - только идентификатор пользователя. | |
|
|
|
|
|
|
|
для: Trianon
(30.03.2006 в 21:11)
| | но каждый раз эти данные извлекать из файла проблематично!(это мое мнение) | |
|
|
|
|
|
|
|
для: Gimli
(30.03.2006 в 21:20)
| | Понимаете, то что Вы просите, в принципе, можно выполнить.
Найти в tmp/ файл sess_ с идентификатором сессии, удалить его. Или перезаписать.
Но это будет являться грубым хаком.
В результате, проблем станет еще больше.
Например, при переносе на другой хостинг, при смене версии движка.
Еще при каких-нибудь обстоятельствах, когда Вы уже и думать забудете, что когда-то сделали привязку к чужому механизму. В данном случае - к механизму управления сессиями. | |
|
|
|
|
|
|
|
для: 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'])){присваиваю опр переменным все значения(или массиву)}
}
?>
|
так? | |
|
|
|
|
|
|
|
для: Gimli
(30.03.2006 в 21:35)
| | Можно так.
Можно по-другому. Например создать по файлу для каждого пользователя с именем равным логину. Или (если логин допускает всякую ересь вроде пробелов и русских букв) хешу от логина { $filename = md5($login).".txt"; } . Для преобразования данных в текстовое представление имеет смысл использовать функции serialize, unzerialize . Механизм сессий пользуется именно ими. | |
|
|
|
|
|
|
|
для: Trianon
(30.03.2006 в 21:40)
| | не так не очень потому что файлов будет очень много!
будет например 200 пользователей и 200 файлов
ХОТЯ тогда быстрее будет все работать т.к. каждый пользователь будет писать все в свой файл! | |
|
|
|
|
|
|
|
для: Gimli
(30.03.2006 в 21:43)
| | Двести файлов - вполне приемлемо.
Если за несколько тысяч, тогда можно думать о том, как на БД перелезть.
Впрочем, об этом можно думать сразу. На БД всяко будет гибче. | |
|
|
|
|
|
|
|
для: Trianon
(30.03.2006 в 21:54)
| | да в том то и вся штука
я хочу портал БЕЗ базы! | |
|
|
|
|
|
|
|
для: Gimli
(30.03.2006 в 21:59)
| | Делите на каталоги.
level
|
|\_ best_users/
|
|\_ normal_users/
|
\_ bad_users/
В каждом каталоге - файл с айди логина. Так вы уменьшите нагрузку на файловую систему, так как в одном каталоге будет не очень много файлов. | |
|
|
|
|
|
|
|
для: Shorr Kan
(30.03.2006 в 22:44)
| | а как их распределять( на хороших плохих) ??? | |
|
|
|
|
|
|
|
для: Gimli
(30.03.2006 в 22:45)
| | Это я условно. "пользователя рангом ниже" - это ваши слова. Вы хотите разбить на ранги. Но как "ранг" по-английски - я не знаю. Как "плохой" - знаю. | |
|
|
|
|
|
|
|
для: Shorr Kan
(30.03.2006 в 22:44)
| | В современных файловых системах (это такие, которые старше FAT32), размер каталога создает не пропорциональную нагрузку, а логарифмическую. Поэтому не нужно усложнять жизнь там, где нет проблемы. Проблемы же в этой части начнутся не раньше, чем с нескольких десятков тысяч файлов на каталог. А вот путем серьезного усложнения скрипта проблемы огрести можно прямо сейчас. | |
|
|
|
|
|
|
|
для: Trianon
(31.03.2006 в 10:22)
| | Кроме того, при частом обращении к файловой системе - содержимое каталога не плохо кэшируется, поэтому проблемы мне кажется начнутся сильно позже... | |
|
|
|