Перейти к контенту

Использование пользователей форума на сайте.


Рекомендуемые сообщения

Полазил по форуму, по поиску. что то похожее нашел, но не то.

Наверняка спрашивали, прошу старожилов прошу не ругаться, а ткунть в топик, где обсуждалось :D Сложно ориентироваться всетаки на новом форуме..

 

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

 

Форум версии 3.2.1

 

Имеется функция:

 

function is_user($user) {
if (!$user) return 0;
if (isset($userSave)) return $userSave;
if ($user && $_COOKIE['member_id'])
{
	global $db, $forum_prefix;
	if ($db->sql_numrows($db->sql_query("SELECT id FROM ".$forum_prefix."_members WHERE id='$_COOKIE[member_id]' AND member_login_key='$user'")))
	{
		static $userSave;
		return $userSave = 1;
	}
	else
	{
		static $userSave;
		return $userSave = 0;
	}
}
else
{
	static $userSave;
	return $userSave = 0;
}
}

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

Но не работает.

 

Классы в ПХП я абсолютно не знаю, поэтому вникать как это реализовано все в IPB это не вариант для меня. Нужно просто сделать эту функцию для нормальной работоспособности сайта.

 

Заранее спасибо.

Изменено пользователем Alexander-V-Sh
Ссылка на комментарий
Поделиться на других сайтах

В этой папке ничего не понял.... Мое знание ПХП ограничевается if else, ну еще немного (что в нюке есть)

 

Пробую сейчас различные варианты (для слаеда нашел еще совмещение функции is_user)

 

Получается вроде, но колбасит что то почерному все. Авторизация в целом.

 

В IE - в урлах идут сессии, а этого недолжно быть.

 

В опере нормально, но слетает авторизация.

 

Пишу:

 $forumid = (int)$_COOKIE['member_id'];
$forumpass = substr(addslashes($_COOKIE['pass_hash']), 0, 32);

Вывожу через ехо. Вроде все ОК. Получаю ID и сессию. Через какое то время авторизация слетает.

В IE вообще никак не работает.

----------------------------------------------

 

Домен Cookie

Совет: используйте .your-domain.com для глобальных cookie

 

.site (имя папки локальной)

 

Может поэтому глюки? что не могут так куки работать?

Сейчас полазаю по форуму, поищу это еще :D

Изменено пользователем Alexander-V-Sh
Ссылка на комментарий
Поделиться на других сайтах

1 домен, 1 база данных.

 

site/forum/

 

Вроде получилось все. Только из-за куков проблемы локальные. В сети не должно быть их. Но пока не пробывал.

 

Вот что получилось:

 

//Проверяем куки
if (isset($_COOKIE['member_id']) && isset($_COOKIE['pass_hash'])) {

$forum = (int)$_COOKIE['member_id'];
$pass = substr(addslashes($_COOKIE['pass_hash']), 0, 32);	

global $db, $forum_prefix, $display_name, $memberid, $avatar;

//Запрашиваем и сверяем пароль, заодно создаем необходимые переменные с аватаркой, и т.д.
$result = $db->sql_query("SELECT d.id, d.name, d.members_display_name, dc.avatar_location, dc.avatar_type FROM ".$forum_prefix."_members AS d LEFT JOIN ".$forum_prefix."_member_extra AS dc ON(d.id=dc.id) WHERE d.id='$forum' AND d.member_login_key='$pass'"); 

if ($numrows = $db->sql_numrows($result) == 0) {
define("NOT_USER_SET", true);
} else {

$row = $db->sql_fetchrow($result);
$memberid = intval($row['id']);
$name = $row['name'];
$display_name = $row['members_display_name'];
$avatar_location = $row['avatar_location'];
$avatar_type = $row['avatar_type'];	

if (empty($display_name)) {$display_name=$name;}

if ($avatar_type == "upload") {
$avatar = "<img border=\"0\" src=\"/forum/uploads/$avatar_location\" alt=\"$display_name\">";
} else {
$avatar = "<img border=\"0\" src=\"$avatar_location\" alt=\"$display_name\">";
}

define("USER_SET", true);
	}
}
else
{
define("NOT_USER_SET", true);
}

//Функция проверки юзера.

function is_user($user) {
if(defined("USER_SET")) return true;
if(defined("NOT_USER_SET")) return false;
}

 

Теперь в любом месте сайта используем:

 

	 if (is_user($user)) { Коды для пользователя, например Скачать, Коментировать, Добавить }

Изменено пользователем Alexander-V-Sh
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.