One of the many new features in phpBB3 that enhance the user experience is Custom Profile Fields. In the past, users could only fill in information in the common profile fields that were displayed; administrators had to add MODifications to their board to accommodate their individual needs. In phpBB3, however, administrators can comfortably create custom profile fields through the ACP.

To create your custom profile field, login to your ACP. Click on the Users and Groups tab, and then locate the Custom profile fields link in the left-hand menu to click on. You should now be on the proper page. Locate the empty textbox below the custom profile fields headings, which is next to a selection menu and a Create new field button. Type in the empty textbox the name of the new profile field you want to create first. Then, select the field type in the selection menu. Available options are Numbers, Single text field, Textarea, Boolean (Yes / No), Dropdown box, and Date. Click the Create new field button to continue. The following describes each of the three sets of settings that the new custom profile field will have.

Add profile field

    Field type: This is the kind of the field that your new custom profile field is. That means that it can consist of numbers, dates, etc. This should already be set.

    Field identification: This is the name of the profile field. This name will identify the profile field within phpBB3 "s database and templates.

    Display profile field: This setting determines if the new profile field will be displayed at all. The profile field will be shown on topic pages, profiles and the memberlist if this is enabled within the load settings. Only showing within the users profile is enabled by default.

Visibility option

    Display in user control panel: This setting determines if your users will be able to change the profile field within the UCP.

    Display at registration screen: If this option is enabled, the profile field will be displayed on the registration page. Users will be able to be change this field within the UCP.

    Required field: This setting determines if you want to force your users to fill in this profile field. This will display the profile field at registration and within the user control panel.

    Hide profile field: If this option is enabled, this profile field will only show up in users "profiles. Only administrators and moderators will be able to see or fill out this field in this case.

Language specific options

    Field name / title presented to the user: This is the actual name of the profile field that will be displayed to your users.

    Field description: This is a simple description / explanation for your users filling out this field.

When you are done with the above settings, click the Profile type specific options button to continue. Fill out the appropriate settings with what you desire, then click the Next button. If your new custom profile field was created successfully, you should be greeted with a green success message. Congratulations!

У профілі користувачів форумів phpBB є поле "Сайт", де можна поставити активне гіперпосилання на свою домашню сайт. Часто цим користуються спамери тисячами реєструючи нових користувачів виключно заради цього посилання. Сучасні програми для спаму крім автоматичної реєстрації ще й залишають на форумі пару не особливо осмислених повідомлень, щоб профіль (і посилання) швидше проіндексувалася.

З цим можна боротися по-різному. Можна просто в файлі robots.txt закрити всі профілі форуму від індексації директивою noindex. Однак, якщо ваш форум потрапив в спам-базу з десятком тисяч таких же форумів, надії на те, що спамери виключать ваш ресурс з автоматичної реєстрації мало.

Можна просто відключити можливість редагувати поле "Сайт" користувачем. Для цього потрібно знайти файл в шаблоні. зазвичай це ucp_profile_profile_info.html, Що знаходиться в директорії - styles / імя_шаблона / template /

Нам треба знайти код подібний цьому:

Код може відрізнятися, тому орієнтуйтеся на ключові слова "WEBSITE". Можна просто видалити цей шматок коду, а можна поступити хитрішими. Просто замінивши код

ваш сайт

Ви зробите так, що це поле буде Нередагована і крім як посилання на ваш_сайт у нього значень більше бути не зможе)

Як замінити всі посилання в профілях користувачів phpBB

Припустимо, ви відключили користувачам можливість встановлювати поле "Сайт" в профілі. Однак, раніше зареєстровані спам-користувачі будуть відображатися з уже проставленими посиланнями. Можна, звичайно, залізти в базу даних форуму і поміняти там все поля ч / з SQL-запит, але можна зробити простіше.

На цей раз нам потрібен файл memberlist_view.htmlз тієї ж директорії. Знаходимо рядок:

і замінюємо наступну за нею рядок (що виводить посилання) на

Бінго! Тепер в профілях всіх користувачів стоїть посилання на ваш сайт незалежно від того, яку вони вказували в профілі.

А раз немає посилань в профілях, то і спамерам ви не потрібні.

Розглянемо стандартну задачу - на сайт з уже існуючими користувачами потрібно додати форум. При цьому не писати новий модуль самому, але поставити готове популярне рішення типу phpbb3 і синхронізувати реєстрацію / авторизацію / профілі користувачів сайту з форумом. Мінімально потрібно, щоб користувачі сайту стали користувачами форуму, і щоб авторизований користувач сайту автоматично ставав авторизованим користувачем форуму і навпаки, а так само відбувалася синхронізація при зміні профілю.

У мережі є плагіни для синхронізації phpbb і wordpress (WP-United) і універсальні керівництва (,), але останні, як правило, починаються словами «скопіпастіть ці ... дцять функцій з functions.php» і «вставити в ці 3 таблиці ось такі дані ».

Інший метод інтеграції - почати використовувати таблиці користувачів і методи до них з phpbb на іншому сайті, але це зазвичай вимагає значних модифікацій системи.

Розповім про свій спосіб, який гальмівних звичайних, але зате вимагає мінімальних змін файлів сайту і форуму (по 10 рядків на кожному для підключення файлу з класом-синхронізатором в 5Кб).

ідея

Простіше нікуди. Логіном на сайті - у разі успіху робимо відповідний запит до форуму і проставляємо куки з відповіді. Всі. Залишилося підглянути потрібні запити (за допомогою firebug або LiveHTTPHeaders) і знайти місця для інклуд.

Синхронізатор складається з двох файлів: сайт-> форум (інклуд в файли сайту) і форум-> сайт (інклуд в phpbb). Вони містять статичні класи ForumSync і SiteSync відповідно. У кожному класі - 2 паблік-методу: checkToken і sync.

Для мого сайту синхронизатор сайт-> форум - forumsync.class.php, форум-> сайт - functions_sitesync.php. Ці файли, а так же файли, в які потрібно було внести зміни, виклав. Ще використовується клас req для виконання серій запитів, він лежить.

тонкощі

1. До багатьох форми phpbb додає захисні змінні creation_time і form_token. Їх перевірка знаходиться в forum / includes / functions.php-> check_form_key (), і вона повинна бути виключена при запиті синхронізатора. У класі синхронізатора визначимо секретний ключ, у мене це

Md5 ( "lala" .date ( "Ymd"))

І в початок check_form_key додамо перевірку на відповідність йому деякої змінної $ _REQUEST (перевірка робиться в методі SiteSync :: checkToken ()).

2. Щоб уникнути зациклення (логін на сайті запитує логін на форумі, який запитує логін на сайті ітд), до відсилання запиту будемо перевіряти SiteSync :: checkToken (), якщо він є, значить цей запит робить синхронізатор, і запускати синхронізацію знову вже не потрібно.

подробиці

Сайт у кожного свій, тому опишу тільки зміни, які потрібно зробити в файлах phpbb. Це не вичерпне покрокове керівництво, але лише загальний принцип. Класи ForumSync і SiteSync все одно потрібно міняти індивідуально під кожен сайт.

Реєстрація:для простоти вимкнемо реєстрацію користувачів на phpbb (через адмінку). Реєстрація буде тільки на сайті. У разі успіху реєстрації на сайті викличемо ForumSync :: sync ( «signup»). У phpbb дозволимо реєстрацію для синхронізатора, для цього змінимо рядок на початку forum / includes / ucp / ucp_register.php-> ucp_register-> main () (де перевірка на USER_ACTIVATION_DISABLE):

If ($ config [ "require_activation"] == USER_ACTIVATION_DISABLE &&! SiteSync :: checkToken ())
trigger_error ( "UCP_REGISTER_DISABLE");

Крім цього, добре б було отримувати id новому користувачеві. В html-коді сторінки, що віддається в разі успішної реєстрації, id користувача ніде не вказано. Тому нижче рядка $ user_id = user_add (...) додамо

If (SiteSync :: checkToken ()) (echo "\ N ";)

SiteSync :: sync ( "signin", array ( "username" => $ username, "password" => $ password, "autologin" => $ autologin)).

вихід:для синхронізації форум-> сайт в forum / ucp.php case "logout": додати рядок SiteSync :: sync ( "signout").
Зміна пароля і профілю:індивідуально, залежить від того, яка інформація в яких таблицях у профілів користувачів на сайті. І які існують форми редагування профілю. Потрібні екшени знаходяться в forum / includes / ucp / ucp_profile.php-> ucp_profile-> main (), в кінці відповідних кейсів потрібно додати SiteSync :: sync.

Слабкі сторони

Основний мінус - відсутність транзакцій і хоча б примітивного api. Будь-які помилки, що виникають при запитах синхронізатора до phpbb, доводиться шукати в html-коді. Вони залежать від локалізації.

У моїй системі підтримуються транзакції, але в phpbb я не знайшов стандартного механізму. Якщо, наприклад, на сайті мінімальна довжина пароля 6 а на phpbb - 5, і користувач в phpbb вводить 5-ти символьний пароль, phpbb змінює пароль, сайт віддає помилку. Потрібно робити відкат, але це вже не тільки «дописати одну сходинку». Поки що моя система в таких випадках обламується, тому я уважно простежив, щоб вимоги на всі синхронізовані поля збігалися.

Групи користувачів - це спосіб об'єднання користувачів. Групи полегшують установку прав доступу за один раз для безлічі користувачів. phpBB 3.0 містить шість попередньо встановлених груп: адміністратори, боти, Супермодератори, гості, зареєстровані користувачі і зареєстровані користувачі COPPA.


3.6.1. типи груп

Є два типи груп: встановлені і призначені для користувача.

Попередньо групи
Ці групи за замовчуванням встановлюються разом з phpBB 3.0, і їх не можна видалити безпосередньо, оскільки вони потрібні конференції для виконання різних функцій. Але ви можете додавати в ці групи нових користувачів, змінювати атрибути груп (опис, колір, звання, аватару і так далі), і додавати керівників груп. Користувачі, котрі реєструються на конференції, автоматично додаються в групу «Зареєстровані користувачі». Чи не пробуйте видаляти їх вручну через базу даних, інакше ваша конференція більше не буде працювати коректно.


  • адміністратори
    У цій групі знаходяться всі адміністратори конференції. Всі користувачі зі статусом «Засновник» є адміністраторами, але не всі адміністратори є засновниками. За допомогою цієї групи ви можете управляти тим, що можуть робити адміністратори.
  • боти
    Ця група призначена для пошукових роботів. phpBB 3.0 має можливості запобігання загальних проблем, пов'язаних з індексацією пошуковими ботами сторінок конференції. Для отримання більш докладної інформації про ботах, їх управлінні і настройці, дивіться розділ «Павуки та боти».
  • Супермодератори
    Супермодератори - це модератори, які мають модераторські права у всіх доступних їм форумах конференції. Ви можете змінювати права супермодераторів за допомогою цієї групи.
  • гості
    Гості - це незареєстровані відвідувачі конференції. Ви можете обмежувати права гостей за допомогою цієї групи.
  • зареєстровані користувачі
    Зареєстровані користувачі - це основна і найбільша частина конференції. За допомогою цієї групи ви можете управляти тим, що можуть робити зареєстровані користувачі.
  • Зареєстровані користувачі COPPA
    Зареєстровані користувачі COPPA - це ті ж зареєстровані користувачі, за винятком того, що вони підпадають під COPPA (закон про захист особистих відомостей дітей в інтернеті). Цей закон не має відношення до користувачів, які живуть поза США.

призначені для користувача групи
Ці групи створені вами або іншими адміністраторами конференції. Ці групи подібні групам в phpBB 2.0. Ви можете створити їх, скільки захочете, видаляти їх, встановлювати керівників, і змінювати їх атрибути (опис, колір, звання, аватару і так далі).

Сторінка «Управління групами» в панелі адміністрування відображає окремі списки встановлених і призначених для користувача груп.


3.6.2. атрибути груп

Нижче перерахований список атрибутів, які може мати група:

  • Назва групи
    Назва групи.
  • опис групи
    Опис групи, яка відображається у списку груп.
  • Управляється тільки засновником
    Обмежити управління цією групою тільки засновниками. Користувачі, що мають групові права доступу, зможуть бачити цю групу і її учасників.
  • Відображати групу в легенді
    Ця опція включає відображення групи в легенді в списку «Хто зараз на конференції». Примітка: ця опція має сенс, тільки якщо вказано колір групи.
  • Група може отримувати особисті повідомлення
    Ця опція дозволяє використовувати приватні повідомлення користувачам цієї групи. Майте на увазі, що вирішення цієї опції, наприклад, для групи «Зареєстровані користувачі», може бути небезпечним. Немає ніякого права доступу, яке могло б заборонити йому можливість відправлення приватних повідомлень групам користувачів, тому будь-який, хто може відправляти особисті повідомлення, зможе відправити приватне повідомлення цій групі! Примітка: приховані групи не можуть отримувати особистих повідомлень, незалежно від стану даної опції.
  • Ліміт особистих повідомлень в одній папці
    Ця настройка скасує загальний для користувачів ліміт повідомлень. Значення 0 означає, що буде використовуватися для користувача ліміт за замовчуванням. Дивіться розділ налаштувань щодо налаштування особистих повідомлень.
  • колір групи
    Імена користувачів, для яких настроюється група є групою за замовчуванням (дивіться розділ 3.6.3, «Групи за замовчуванням»), будуть відображатися на сторінці форуму зазначеним тут кольором. При включенні опції «Відображати групу в легенді» елемент легенди з цим кольором з'явиться нижче списку «Хто зараз на конференції».
  • звання групи
    Користувачі, для яких ця група є групою за замовчуванням (дивіться розділ 3.6.3, «Групи за замовчуванням») матимуть це звання нижче свого імені. Ви можете змінити звання конкретного користувача на будь-яке інше, яке скасує для нього звання, вказане для групи, яка є для нього групою за замовчуванням. Для отримання більш детальної інформації дивіться розділ «Звання».
  • Аватар групи
    Користувачі, для яких ця група є групою за замовчуванням (дивіться розділ 3.6.3, «Групи за замовчуванням») матимуть цю аватару. Користувач сам зможе змінити свою аватару, якщо має на це необхідні права. Для отримання більш детальної інформації про налаштування аватар дивіться розділ «Аватари».


3.6.3. Групи за замовчуванням

Оскільки з'явилася можливість призначення атрибутів, таких, як кольори або аватари групи (дивіться розділ 3.6.2, «Атрибути груп»), і користувач може бути членом двох і більше груп, що мають різні аватари і інші атрибути. Яка аватара буде застосована до користувача?

Для подолання цієї проблеми ви можете призначити користувачу одну «групу за замовчуванням», і до користувача будуть застосовуватися атрибути цієї групи. Зверніть увагу на те, що немає можливості об'єднувати і змішувати атрибути різних груп: якщо одна група має звання, але не має аватари, а інша група має тільки аватару, то немає можливості відобразити аватару з однієї групи, а звання з іншого.

важливе зауваження
Групи за замовчуванням не мають ніякого впливу на права доступу. Додаткових прав для групи за умовчанням не призначається і не додається. Тому призначені для користувача права залишаться незмінними, незалежно від того, до якої групи за замовчуванням він належить.

Змінити групу за замовчуванням можна двома способами. По-перше, ви можете зробити це за допомогою управління користувачами (дивіться розділ 3.5 «Управління користувачами»), або безпосередньо зі сторінки управління групою. Будьте обережні з другої опцією, змінюючи групу за замовчуванням за допомогою сторінки керування групою, оскільки ця дія може змінити групу за замовчуванням для всіх її членів і перезаписати їхні старі групи за замовчуванням. Так, якщо ви змінюєте групу за замовчуванням для групи «Зареєстровані користувачі» за допомогою посилання «Зробити групою за замовчуванням для кожного її учасника», то всі учасники конференції матимуть цю групу в якості групи за замовчуванням, включаючи адміністраторів та модераторів, оскільки вони також є членами групи «Зареєстровані користувачі».

важливе зауваження
Якщо ви призначаєте групу за замовчуванням, яка має звання і аватару, то стара аватара користувача і звання буде перезаписано атрибутами цієї групи.