Elfet Опубликовано 22 Сентября 2004 Жалоба Поделиться Опубликовано 22 Сентября 2004 как из своего скрипта получить имя, номер, статус и ещё чего-нибудь, пользователя? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Elfet Опубликовано 22 Сентября 2004 Автор Жалоба Поделиться Опубликовано 22 Сентября 2004 member_id - вот так ид? это можно из кукеров достать без проблем? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 theIggs Опубликовано 22 Сентября 2004 Жалоба Поделиться Опубликовано 22 Сентября 2004 member_id - вот так ид? это можно из кукеров достать без проблем?Да, это можно из кукеров достать. Если оно там есть, конечно.А потом уже, вооружившись полученным id, сделать SQL-запрос к таблице ibf_members. Оттуда и взять всю остальную инфу. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Elfet Опубликовано 22 Сентября 2004 Автор Жалоба Поделиться Опубликовано 22 Сентября 2004 угу, я уже разобрался! спасиб! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Pupil23 Опубликовано 29 Сентября 2004 Жалоба Поделиться Опубликовано 29 Сентября 2004 theIggs Да, это можно из кукеров достать. Если оно там есть, конечноКонечно не всегда оно там есть.Как быть в этом случае (получить лог или ид)? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 theIggs Опубликовано 30 Сентября 2004 Жалоба Поделиться Опубликовано 30 Сентября 2004 Pupil23 Как быть в этом случае (получить лог или ид)?Какой такой лог? :\ Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Pupil23 Опубликовано 30 Сентября 2004 Жалоба Поделиться Опубликовано 30 Сентября 2004 theIggs Какой такой лог?Имя пользователя которое отображается в строке приветствия или его ид. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 theIggs Опубликовано 3 Октября 2004 Жалоба Поделиться Опубликовано 3 Октября 2004 Pupil23 Хе... Если этого нет в куках, то перебросить пользователя на страницу авторизации и заставить авторизоваться. Иначе никак. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Song Опубликовано 3 Октября 2004 Жалоба Поделиться Опубликовано 3 Октября 2004 Elfetсходи в index.php - яркий пример как это нужно делать. Даже могу подсказать в какой строчке это делается:$ibforums->member = $sess->authorise();после этого массив $sess->member[] или $ibforums->member[] будут указывать на найденного пользователя или будут пустыми, если это гость. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Pupil23 Опубликовано 3 Октября 2004 Жалоба Поделиться Опубликовано 3 Октября 2004 theIggs Хе... Если этого нет в куках, то перебросить пользователя на страницу авторизации и заставить авторизоваться. Иначе никак. Заставлять авторизовываться не хотел. Мне нужно было просто получить имя пользователя, чтоб вставить его на другую страницу (не форума). Впринципе авторизация происходит одинаково в версиях 1.3 и 2. Если нажать, на форуме, кнопку "ВХОД" - загрузится страница на которой можно выбрать: "не запоминать меня" тогда member_id будет отсутствовать. Точней его неуспеешь взять.Если надо покажу пример. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 GiV Опубликовано 3 Октября 2004 Жалоба Поделиться Опубликовано 3 Октября 2004 Заставлять авторизовываться не хотел. Мне нужно было просто получить имя пользователя, чтоб вставить его на другую страницу (не форума).Вам же объяснили, что если в куке пользователя нет его ид, то когда он заходит на Ваш сайт, его опознать не возможно, форум кстати его тоже не узнает, до тех пор пока он не автоизуется."не запоминать меня" тогда member_id будет отсутствовать. Точней его неуспеешь взять.бред. Просто в таком случае кука держится до закрытия браузера, но она есть и member_id в ней тоже есть. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Pupil23 Опубликовано 3 Октября 2004 Жалоба Поделиться Опубликовано 3 Октября 2004 Vanish Конечно я всего незнаю, извини за беспокойство.Конечно кука держится до закрытия браузера. Конечно я немного разобрался откуда взять имя пользователя и всё остальное. Если посмотреть порядок авторизации, то можно увидеть, что только один параметр остается без изменений.Просто попутный вопрос: откуда берется список активных пользователей, скрытых пользователей на форуме.Мне кажется что всё это берется из таблицы ibf_sessions. В ней ID это id_session.Если пользователь авторизовался на форуме, не закрыл окно браузера, пошел на нужную мне страницу, можно сделать запрос к базе и получить имя.Чтоб посмотреть какие переменные активны в какой момент можно в index.php форума, в самый верх поставить код и будет всё видно <? echo "-- НАЧАЛО ПЕРЕМЕННЫХ GET --<br>"; echo "-- ".dump_array($HTTP_GET_VARS)." --<br>"; echo "-- НАЧАЛО ПЕРЕМЕННЫХ POST --<br>"; echo "-- ".dump_array($HTTP_POST_VARS)." --<br>"; echo "-- НАЧАЛО ПЕРЕМЕННЫХ СЕАНСА --<br>"; echo "-- ".dump_array($HTTP_SESSION_VARS)." --<br>"; echo "-- НАЧАЛО ПЕРЕМЕННЫХ COOKIE-НАБОРА --<br>"; echo "-- ".dump_array($HTTP_COOKIE_VARS)." --<br>"; function dump_array($array) { if(is_array($array)) { $size = count($array); $string = ""; if($size) { $count = 0; $string .= "{ "; foreach($array as $var => $value) { $string .= "$var = $value"; if($count++ < ($size-1)) { $string .= ", "; } } $string .= " }"; } return $string; } else { return $array; } } ?> При этом желательно изменить ещё файл skin_globalв нём надо найти function Redirect($Text, $Url, $css) { global $ibforums; return <<<EOF <html> <head> <title>{$ibforums->lang['stand_by']}</title> <meta http-equiv='refresh' content=2; url=$Url' /> <script type="text/javascript"> </script> $css </head> <body> <table width='100%' height='85%' align='center'> <tr> <td valign='middle'> <table align='center' cellpadding="4" class="tablefill"> <tr> <td width="100%" align="center"> {$ibforums->lang['thanks']}, $Text<br /><br /> {$ibforums->lang['transfer_you']}<br /><br /> (<a href='$Url'>{$ibforums->lang['dont_wait']}</a>) </td> </tr> </table> </td> </tr> </table> </body> </html> EOF; }В строке <meta http-equiv='refresh' content=2; url=$Url' />заменить значение с 2 на что нибудь большее, например на 120, а то пересылка происходит очень быстро.Конечно на сервер переделанные страницы лучше не выкладывать, пробовать на домашнем.Пожалуйста, попровьте меня. Возможно просто я плохо высказал свои мысли. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 GiV Опубликовано 3 Октября 2004 Жалоба Поделиться Опубликовано 3 Октября 2004 Просто попутный вопрос: откуда берется список активных пользователей, скрытых пользователей на форуме.Мне кажется что всё это берется из таблицы ibf_sessions. В ней ID это id_session.да именно так. При выводе в он-лайн списке используется эта таблица. При этом в этой таблице хранится и имя пользователя и его ид и тип логина (скрытый/нет), и всей этой информации сопоставляется id сессии. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Pupil23 Опубликовано 3 Октября 2004 Жалоба Поделиться Опубликовано 3 Октября 2004 Vanish Может я не прав, но тогда правильней будет делать так<? $aa=$HTTP_COOKIE_VARS['session_id']; $db_for="имя базы форума"; $tab_nam="ibf_sessions"; $con=@mysql_connect("хост", "логин", "пароль") or die("Подключение к MySQL - невозможно."); $db=@mysql_select_db($db_for,$con) or die("База невыбрана."); $quer="select * from $tab_nam where id ='$aa'"; $resu1=@mysql_query($quer, $con) or die("Запрос невозможен."); while ($row = mysql_fetch_array($resu1)){ $member_name=$row['member_name']; $display_block .= " <P><em>Имя: <strong>$member_name</strong></em></p>"; } print "$display_block"; ?>Т.е. разместить этот код на нужной странице и пользователь войдя на неё увидит своё имя (если не нажал на "выход" в форуме и не закрывал окно браузера). Конечно это просто рыба кода, но работает.Ведь member_id может равняться нулю. А member_name может быть пустым - если пользователь нажал на выход. Имею ввиду таблицу ibf_sessions. Если member_name не пусто, то можно сделать запрос к другим таблицам. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 GiV Опубликовано 3 Октября 2004 Жалоба Поделиться Опубликовано 3 Октября 2004 member_id может равняться нулюВ этом случае пользователь гостем зовется.Если member_name не пусто, то можно сделать запрос к другим таблицам.как раз смотреть то лучше по member_id Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Pupil23 Опубликовано 3 Октября 2004 Жалоба Поделиться Опубликовано 3 Октября 2004 Vanish В этом случае пользователь гостем зоветсяВтом идело, что авторизован пользователь, а member_id = 0. Правда такая штука бывает в Opera7.03, за IE этого не наблюдалось. Вот посмотри три варианта авторизации.-- { CookieIp = 127.0.0.1, phpbb2mysql_data = a:0:{}, open_qr = 1, session_id = 9c7631ab60acadeb12a2ed3eef95414e, member_id = 1, pass_hash = f3618cb4a09d0f1d98a71fb7dd465115 } -- -- { CookieIp = 127.0.0.1, phpbb2mysql_data = a:0:{}, open_qr = 1, session_id = f0c60addb7f55744ad2b315dbda3e421 } -- -- { CookieIp = 127.0.0.1, phpbb2mysql_data = a:0:{}, open_qr = 1, forum_read = a:1:{i:1;i:1096826949;}, member_id = 0, pass_hash = 0, anonlogin = -1, session_id = 8885c8e915cfe0480380aa4a417bb7a6 } -- Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 GiV Опубликовано 3 Октября 2004 Жалоба Поделиться Опубликовано 3 Октября 2004 member_id = 0, pass_hash = 0, anonlogin = -1, session_id = 8885c8e915cfe0480380aa4a417bb7a6гость, если сессия такая вышла или IP иной session_id = 9c7631ab60acadeb12a2ed3eef95414e, member_id = 1, pass_hash = f3618cb4a09d0f1d98a71fb7dd465115пользователь session_id = f0c60addb7f55744ad2b315dbda3e421гость, если сессия такая вышла или IP иной Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Pupil23 Опубликовано 3 Октября 2004 Жалоба Поделиться Опубликовано 3 Октября 2004 В том и дело, что во всех трёх вариантах, пользователь авторизован нормально, не гость. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 GiV Опубликовано 3 Октября 2004 Жалоба Поделиться Опубликовано 3 Октября 2004 В том и дело, что во всех трёх вариантах, пользователь авторизован нормально, не гость.мммм. ладно объясню на пальцах механизм автологина в IPB. Для того что бы пользователь был опознан необходимо:Вариант А:в куках пользователя или в URL'ах есть id сессии. Зовется она id_session. Пользователь с определенным id_session считается вошедшим в систему, если в таблице ibf_sessions найдется хотя бы одна запись удовлетворяющая условию id_session = id сессии нашего пользователя и ip_под_которым_стартовали_сессию = текущему ip пользователя. Если такой записи не находится => пользователь превращается в гостя. Дальше идет проверка member_id полученного из таблицы ibf_sessions по id сессии. Если пользователь с таким member_id существует в таблице ibf_members, то загружается вся информация о нем и он становится настоящим пользователем. Вариант Б:id сессии у нас нет, но есть в куках непустые записи member_id и pass_hash. Тогда пытаемся проверить существование пользователя в таблице ibf_members с таким member_id, который прописан в куках. Если пользователя такого нет, превращаеся в гостя. Иначе проверяем хэши паролей того пользователя что мы получили из ibf_members с тем хэшем что мы получили из кук. Совпали хэши - законный пользователь, не совпали - гость. Если случай не попадает ни под один вариант, то мы гость. А в таблице сессий ibf_sessions под нас так же создается сессия, но member_id у этой сессии равен 0. Это важное и принципиальное отличие сессии пользователя, от сессии гостя или поискового бота.----------Надеюсь поможет... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Pupil23 Опубликовано 4 Октября 2004 Жалоба Поделиться Опубликовано 4 Октября 2004 Vanish Только не ругайся (ну сильно не ругайся)....С куками всё понятно. Если я сделаю страницу с этим кодом, то будет выведено имая пользователя. Это при условии, что пользователь авторизоваляся на форуме и не выходя перешёл на нужную страницу. Но такой код будет не полным, ведь пользователь может отключить куки и тогда $HTTP_COOKIE_VARS будет бесполезным. Если куков нет, то остаётся сессия, но $HTTP_SESSION_VARS не задействована, передача происходит $HTTP_GET_VARS - передаётся "S".Конечно я только учусь и многого не знаю.Пробовал проверить с помощью session_is_registered() вобщем ничего пока невышло, может сможешь объяснить как быть в этом случае (у пользователя куки отключены). Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 GiV Опубликовано 4 Октября 2004 Жалоба Поделиться Опубликовано 4 Октября 2004 сессия создаваемая форумом не равна сессии создавемой session_start. Скажем так - это совершенно разные сессии и ничего общего между собой не имеют, потому с помощью session_is_registered() вобщем ничего пока невышлои к сожалению не выйдет, потому как вы правильно сказали чтоЕсли куков нет, то остаётся сессия, но $HTTP_SESSION_VARS не задействована, передача происходит $HTTP_GET_VARS - передаётся "S".что делать в этом случае? К сожалению если пользователь с самого начала заходит на вашу страницу, то ничего, если же он приходит с форума на вашу страницу, то вставить id сессии в адрес вашей страницы. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Pupil23 Опубликовано 5 Октября 2004 Жалоба Поделиться Опубликовано 5 Октября 2004 Vanish с форума на вашу страницу, то вставить id сессии в адрес вашей страницы. Ну да, это и надо. Но я этого не умею. Конечно, может дальнейшее следует спрашивать в форуме по прогаммированию, но вроде тут начали. Если не трудно, может поможете?Сильно звиню - ступил... смутило слово сессия. Всё работает в обе стороны.Большое спасибо Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Protva Опубликовано 17 Марта 2010 Жалоба Поделиться Опубликовано 17 Марта 2010 (изменено) Прошу прощения за реанимацию столь давней темы, но нужда заставила.У меня примерно те же проблемы, но знаний намного меньше, а сделать нужноДело в том, что написал фотогалерею для форума (родная не работает уже несколько лет, как и кто бы не пытался ее восстановить). Но вот как получить из базы форума логины и сессии находящихся в данный момент пользователей, не знаю, поскольку с мускулом вообще не знаком. А без этого придется делать еще одну регистрацию, а это нафик никому не нужно.Версия форума 2.2.2Еще накладывается то, что не я хозяин форума и долго отлаживаться не дадут. Поэтому хочу уточнить по поводу кода, что приведен в этой же ветке - код1. Как я понимаю, файл с ним должен находится на том же домене, что и форум.2. Что будет находится в переменной $member_name, если пользователь не будет зареген? Думаю она будет не определена?3. хост - это просто адрес сайта типа http://www.name.ru/? Изменено 17 Марта 2010 пользователем Protva Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Song Опубликовано 17 Марта 2010 Жалоба Поделиться Опубликовано 17 Марта 2010 Данные о пользователе находятся в массиве $ibforums->memberСамому делать авторизацию нет смысла. Если ваша галлерея имеет собственный скрипт, то вставьте форумскую авторизацию в этот скрипт. А лучше, если делать всё через форумский функционал.В частности есть такая вещь как плагины (act=modules), вызывается index.php, соответственно прозрачная авторизация + доступ ко всем библиотекам. А в самом модуле можете реализовать уже свою логику.Пример смотри папку modules. Авторизация берётся из куков, соответственно надо чтобы ваш скрипт (если всё-таки решитесь сделать через свой) мог эти куки форумские читать. Это должен быть либо тот же домен либо поддомен.Вот здесь подробней: Авторизация пользователей в IPB из своих скриптов Проверка на пользователя в своём скрипте. Как? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Protva Опубликовано 17 Марта 2010 Жалоба Поделиться Опубликовано 17 Марта 2010 Прочитал статью, что вы мне рекомендовали. Но, может я бестолково объяснил, мне не нужно делать авторизацию со страницы своего скрипта. Я лишь хочу получить ник пользователя, который зашел на мою страницу из форума.Попробовал на локальном установил форум, поставил код, что приведен в этой ветке, но не получается, т.к. $HTTP_COOKIE_VARS['session_id'] почему-то не работает. Нельзя это все же сделать как-то попроще? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Song Опубликовано 18 Марта 2010 Жалоба Поделиться Опубликовано 18 Марта 2010 Всё что я выше написал всё как раз о "Я лишь хочу получить ник пользователя, который зашел на мою страницу из форума."Я лишь хочу получить ник пользователя, который зашел на мою страницу из форума.Это и есть авторизация. Авторизация - это комплекс мер, направленный на узнавание пользователя форумом. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Вопрос
Elfet
Ссылка на комментарий
Поделиться на других сайтах
26 ответов на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.