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

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


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

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

Наверняка спрашивали, прошу старожилов прошу не ругаться, а ткунть в топик, где обсуждалось :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
Ссылка на комментарий
Поделиться на других сайтах

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

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

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

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