Пишу CMS - вернее уже написана... есть вопросы

Сенсей

Новичок
Пишу CMS - вернее уже написана... есть вопросы

Уже стоит сайт на cms

В самой cms очень много функция.... но в основном меня интересует моя система пользователей.
-------------
Правильный ли у меня подход?

Есть файл который грузится со скриптом ВСЕГДА

Вначале этого файла я определяю является ли посетитель зарегистрированным пользователем:

PHP:
if (!empty($_COOKIE['user']))
{
	# берем инфу с кукис
	$user = base64_decode($_COOKIE['user']);
	$pos = strrpos($user, ':');
	$u_login = substr($user, 0, $pos);
	$u_pass = substr($user, $pos+1);
	if (!empty($u_login) AND !empty($u_pass))
	{
		# проверяем есть ли такой юзер в базе и берем некоторую инфу
		$res = sql_query("select user_id, user_nick_name, user_new_messages from users where user_nick_name='".adsl($u_login)."' AND user_password='".adsl($u_pass)."'", $dbi);
		if (sql_num_rows($res))
		{
			list($uid, $unn, $user_new_messages) = sql_fetch_row($res);
			# определяю константу с ID юзера что бы использоваать в любой части скрипта
			define('USER_ID', $uid);
			# тоже самое с ником пользователя
			define('USER_NICK', $unn);
			# при каждом обновлении страници робновляю время и ip пользователя
			sql_query("update users set user_last_visit=NOW(), user_ip='".$user_ip."' where user_id='".USER_ID."'", $dbi);
			define('IS_USER', 1);
		}
	}
}

# в последствии в скрипте если надо вывести что то только зарегистрированным пользователям юзаю if(is_user()) { {};

function is_user()
{
	if (defined('IS_USER'))
	{
		return 1;
	}
	return 0;
}
Код конечно можно упростить... но меня волнует имено организация.. принцип...

У меня принцип такой - один раз определяем - юзер это или гость... и в скрипте уже проверяем "флаг" 1 или 0

Есть CMS где в каждой части где идет разграничение функция гостей и пользователей проверка происходит каждый раз заного... то есть каждый раз запускается код который у меня находится выше function is_user()

Ну и вообще - может есть какие советы...
 

Сенсей

Новичок
А что конкретно мне дадут сессии?
Просьба не аргументировать ответ "безопасность"

А так вобщем то интересно...
 

Dreammaker

***=Ф=***
Удобнее, ИМХО, по крайней мере больше вероятность что юзер будет залогинен, если у него отключены куки. Хотя, если use_trans_sid = 0, то свои нюансы появляются...
 

Сенсей

Новичок
Dreammaker

Тоже не аргумент.. ибо большинству не нравится в урле текста типа

s=765v56n7um,08[[07097b6-v875647ee

и они помещают в куки... так что в любом случае куки используются...

Меня интересует правилен ли сам подход...

У меня 4000 зарегистрированных пользователей сейчас.. когда 70 человек одновременно сидят на сайте... + открыто у каждого как минимум 3 окна ... сайт начинает тормозить...
 

Фанат

oncle terrible
Команда форума
а куки-то здесь при чём?
чего это ты вдруг сюда тормоза приплёл?
 

Dreammaker

***=Ф=***
Автор оригинала: Сенсей
Dreammaker

Тоже не аргумент.. ибо большинству не нравится в урле текста типа

и они помещают в куки... так что в любом случае куки используются...
я не любитель спорить, в частности на пхпклуб.ру и особенно в присутствии Фаната :), при этом хотелось бы спросить - кто это "они" - если это пользователи, то, по-моему, они ничего в куки не помещают, если имелись ввиду программеры, то опять же "любовь или не любовь" программиста не должна играть огромной роли для пользователя. Например, в то время. когда я программирую, то у меня открыто несколько броузеров одновременно (и ИЕ, и Опера, и ФФ) при этом я могу сидеть и на нескольких сайтах. И отключив для проверки куки, я не хочу задумываться почему я никак не могу залогинится на каком-нибудь портале... Это моё мнение как пользователя чужого проекта. Людей, которые отключают куки не так уж и много, но и не мало. Так уж случилось, что и я попадаю в их число время от времени.
 

Сенсей

Новичок
Фанат

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

Мну не волнует что у кого то там куки выключены...
Хотелось бы услышать - чем конкретно лучше использовать сессии...

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

[q]чего это ты вдруг сюда тормоза приплёл?[/q]
Ну потому что это так сказать "на заднем плане" то что меня волнует в этой части кода... вернее не в самом коде - а в организации...

Я ж ведь не знаю... быть может существует способ один лишь раз определит пользователя... и при следующих обновеням им страницы уже не придется повторно делать проверку...
 

Dreammaker

***=Ф=***
Кстати, при сессиях можно будет не юзать каждый раз базу на проверку того, есть ли пользователь с взятым из куки логином, а просто хранить в сессии его логин... Вот и уменьшение тормозов ( правда, всего на один запрос :), оптимизация обалдеть...
 
where user_nick_name='".adsl($u_login)."' AND user_password='".adsl($u_pass)."'",
1. Ключ составной на user_nick_name и user_password есть?
быть может существует способ один лишь раз определит пользователя... и при следующих обновеням им страницы уже не придется повторно делать проверку...
Сессии на то и придуманны. Только с ними нужно оооочень аккуратно.
 

Нечто

Психолог РНРClub
Сессии будет использовать лучше, т.к.:
1. не изобретается велосипед
2. это встроенный механизм php, и оно само делает gc
3. объем кода значительно уменьшается
4. информация о пользователя загружается "серьезными" запросами 1 раз - при логине; впоследствии запрос идет по pk (хотя некоторые не делают sid первичным.. ;)) из одной таблицы: "уже не придется повторно делать проверку"
5. куки действительно у многих отключены
 

Сенсей

Новичок
Вот это уже аргументы...

Пошел читать... будут вопросы - буду писать.
Всем спосибо :)
 

Doomer

Guest
А как реализовать на сессиях возможность запоминать пользователей?
 
Сверху