Интеграция на Phpbb3 с всеки уебсайт.

уебсайт

Не много отдавна, по време на работа, трябваше да интегрирам съществуващ сайт с форум в системата phpBB от третата версия. След преглед на полетите и ръководствата на форума беше организирана много интересна и проста система. Ако говорим за предимствата му, то той е напълно независим от форума, така че когато двигателят е нулиран, сме сигурни, че няма да загубим файловете, които сме редактирали по-рано и че нищо няма да се счупи. За да разбера защо и как да направя това, първо ще се опитам да обясня логиката на работата. От готовите промени трябва да добавим допълнително поле към базата данни на сайта, например - 'user_f_id', в което ще запишем информация за картографирането на потребителските профили на сайта към потребителските профили на форума (приема се цифров идентификатор, user_id от базата данни на форума е% префикс таблица% _users).

    1. Потребителят попълва полетата за вход и парола
    2. Проверете дали очакваният потребител е попълнил полето user_f_id

Ако е попълнено, тогава:

1. Скриптът създава стандартни функции за проверка на паролата
2. Ако паролата не се побира, излезте, ако е така, тогава стартираме функциите за настройка на картографирането
3. Създайте запис в базата данни на форума за потребителя (таблица% префикс% _users)
4. Създайте запис в базата данни на форума за потребителските права (таблица% префикс% _user_group)
5. Попълнете полето user_f_id в базата данни на нашия сайт

Списък на функции, които проверяват паролата от базата данни на форума:

// phpbb_hash ($ парола) - Създаване на парола
// phpbb_check_hash ($ парола, $ хеш) - Проверка на паролата

функция unique_id ()
връщане на substr (md5 (rand (). '_'. microtime (). '_'. rand ()), rand (0, 15), 16);
>

функция _hash_gensalt_private ($ input, & amp; $ itoa64, $ iteration_count_log2 = 6)
ако ($ iteration_count_log2 31)
$ iteration_count_log2 = 8;
>
$ изход = '$ H $';
$ изход. = $ itoa64 [мин ($ iteration_count_log2 + ((PHP_VERSION> = 5)? 5: 3), 30)];
$ изход. = $ _hash_encode64 ($ вход, 6, $ itoa64); върнете $ изход;
>

функция _hash_encode64 ($ input, $ count, & amp; $ itoa64)
$ изход = ";
$ i = 0;

направете
$ value = ord ($ input [$ i ++]);
$ изход. = $ itoa64 [$ стойност & amp; 0x3f];

ако ($ i> 6) & amp; 0x3f];

ако ($ i> 12) & amp; 0x3f];

$ изход. = $ itoa64 [($ стойност >> 18) & amp; 0x3f];
>
докато ($ 30)
върнете $ изход;
>
$ count = 1 = 5)
$ хеш = md5 ($ сол. $ парола, вярно);
направете
$ hash = md5 ($ hash. $ парола, вярно);
>
while (- брой $);
>
друго
$ hash = пакет ('H *', md5 ($ сол. $ парола));
направете
$ hash = пакет ('H *', md5 ($ hash. $ парола));
>
while (- брой $);
>
$ output = substr ($ setting, 0, 12);
$ изход. = $ _hash_encode64 ($ хеш, 16, $ itoa64);
върнете $ изход;
>

публична функция phpbb_hash ($ парола)
$ itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
$ random_state = $ unique_id ();
$ random = ";
$ брой = 6;
ако (($ fh = @ fopen ('/ dev/urandom', 'rb')))
$ random = fread ($ fh, $ count);
fclose ($ fh);
>
if (strlen ($ произволно)

Масив за добавяне на запис на сесия към базата данни на форума.