Alexander-V-Sh Опубликовано 31 Октября 2007 Жалоба Поделиться Опубликовано 31 Октября 2007 (изменено) Полазил по форуму, по поиску. что то похожее нашел, но не то.Наверняка спрашивали, прошу старожилов прошу не ругаться, а ткунть в топик, где обсуждалось Сложно ориентироваться всетаки на новом форуме.. Вопрос такой. Нужно использовать пользователей форума на сайте (сайт переделан из нюки, но ядро почти не изменилось). Форум версии 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 это не вариант для меня. Нужно просто сделать эту функцию для нормальной работоспособности сайта. Заранее спасибо. Изменено 31 Октября 2007 пользователем Alexander-V-Sh Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 31 Октября 2007 Жалоба Поделиться Опубликовано 31 Октября 2007 погляди сюда/sources/loginauth/external/ Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Alexander-V-Sh Опубликовано 1 Ноября 2007 Автор Жалоба Поделиться Опубликовано 1 Ноября 2007 (изменено) В этой папке ничего не понял.... Мое знание ПХП ограничевается 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 (имя папки локальной) Может поэтому глюки? что не могут так куки работать?Сейчас полазаю по форуму, поищу это еще Изменено 1 Ноября 2007 пользователем Alexander-V-Sh Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 1 Ноября 2007 Жалоба Поделиться Опубликовано 1 Ноября 2007 У тебя сайт и форум на одном домене? Или форум на поддомене? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Alexander-V-Sh Опубликовано 1 Ноября 2007 Автор Жалоба Поделиться Опубликовано 1 Ноября 2007 (изменено) 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)) { Коды для пользователя, например Скачать, Коментировать, Добавить } Изменено 1 Ноября 2007 пользователем Alexander-V-Sh Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.