2009-03-10 3 views
3

В настоящее время я использую форум PHPBB2 для раздела одного из моих сайтов, и я хотел бы расширить этот сайт (добавить новые страницы, скрипты и т. Д.). Я хотел бы ограничить доступ к этим страницам пользователям, уже зарегистрированным на форуме PHPBB2.Использовать учетные данные для входа на PHPBB2 на моем сайте

Фактически, если бы только члены определенной членской группы могли получить доступ к этим страницам, это было бы здорово.

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

Благодаря

(кстати, эти страницы в PHP) пользовательская таблица

ответ

1

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

В этом случае, вы хотите, чтобы сломать крохи ниже печенья:

$_COOKIE["phpbb2mysql_data"] 

Давайте использовать пример и взорвать его, чтобы найти данные, необходимые для запроса к базе данных. Ниже приведен фрагмент найден в вышеуказанном печенье:

a:2:{s:11:"autologinid";s:0:"";s:6:"userid";s:1:"3";} 

Для этого, вы хотите, чтобы пойти и извлечь, что «3», что происходит, чтобы соответствовать вошедшему пользователю PHPBB.

Unserialize that data дергать, что user_id из:

$goo = unserialize($_COOKIE["phpbb2mysql_data"]); 
$extracted_id = $goo["userid"]; 

(благодаря epochwolf на указывая вышеуказанную сериализованную форму этого печенья)

Это число будет хорошо работать с базой данных, чтобы проверить к которой принадлежит член. И вы проверили бы таблицу с таблицей phpbb_user_group (если у вас был phpbb_ в качестве префикса ваших таблиц форума.)

Если вы не хотели отслеживать идентификаторы групп из базы данных, вам нужно будет сделайте какое-то соединение и испытание против имени. Может быть, что-то вроде этого:

SELECT pug.user_id FROM phpbb_user_group pug 
LEFT JOIN phpbb_groups g 
ON pug.group_id=g.group_id 
WHERE pug.user_id='$extracted_id' 
AND g.group_name='Foo'; 

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

+0

-1 для неправильной обработки сериализованных данных. – epochwolf

+0

Если вы не знали, этот файл cookie содержит сериализованный массив. Вы должны использовать функцию unserialize() php для извлечения данных. http://www.php.net/unserialize – epochwolf

+0

Спасибо за указатель на сериализованные данные, отредактированный ответ, чтобы облегчить жизнь. – random

1

Используйте PHPbb2 и это Логин и разрешения кода в других страницах. Это грязно, но это работает.

С помощью кода PHPbb2, я имею в виду:

Dig в код PHPbb2, в численном выражении как PHPbb2 аутентификацию пользователей и скопировать соответствующие куски кода. Если PHPBB2 имеет приличную структуру, вы можете просто добавить несколько файлов из PHPBB2 и использовать их без серьезного взлома. Если он не будет хорошо структурирован, он будет грязным и уродливым.

Не забудьте проверить свои новые защищенные дополнения на свой сайт! Убедитесь, что вы правильно взламываете.

+0

Я не помню, имеет ли phpBB2 это, но phpBB3 имеет документированный API для входа в систему и выполнения связанных задач. – Powerlord

0

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

Этот трюк больше не работает в phpBB3, так как пароль (наконец) солен.

Смежные вопросы