Dzseemy's Blog

Honlap és phpBB integrációja

Szerző: Dzseemy - 2011• Júl•30

Egy honlap készítése során merült fel az a probléma, hogy hogyan lehet megoldani azt, hogy egy honlap használja a fórum adatbázisát a bejelentkezéshez. Ez még viszonylag egyszerűen megoldható, de ha azt is elvárjuk, hogy a fórumról és az oldalról is be tudjunk jelentkezni, és nem szeretnénk átlépéskor ezt megismételni, akkor az integráció kissé bonyolultabb folyamata szükséges.

Több fórum átböngészése során kellet rádöbbennem, hogy ez nem is olyan egyszerű. Nagyon is szükséges a php és az sql ismerete (főleg a php), valamint tudnunk kell értelmezni a phpBB sorait is. Ezért megpróbálom érthetően elmagyarázni az integráció menetét.

Első lépésben csatlakoznunk kell a phpBB-hez, valamint elindítani a Sessiont. Ezt minden oldalban szerepeltetni kell, amelyiken használni szeretnénk a phpBB funkcióit. (Ezek a sorok a phpBB index.php-ban találhatók általában, a verzióváltozások esetén ezek változhatnak és nekünk mindig az aktuális változat a szükséges. Az alábbi példa a phpBB 3.0.8 verzióból való.) A $phpbb_root_path értékeként meg kell adni az oldalunkhoz viszonyítva a fórum könyvtárát (./ az adott könyvtárban a phpbb3/ alkönyvtárban)

<?php
define('IN_PHPBB', true);
$phpbb_root_path = './forum/'; //fórum könyvtár beállítása
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

Második lépésben megvizsgáljuk a felhasználót, majd az eredmény alapján döntjük el a továbbiakat. Első feltételként azt nézzük, hogy regisztrált tag-e, majd másodjára, hogy nem vendég-e. (A vendég felhasználó ID-je általában az 1, az adminisztrátoré a 2, majd ezek után jönnek a kereső motorok ID-jei 53-ig. Az sql adatbázisban ezt le is ellenőrizhetjük a users táblában. A user_id vizsgálati értékét állíthatjuk pl >53-ra is, ekkor csak a keresőmotorok utáni felhasználókat üdvözöljük.)

// Felhasználó vizsgálata
if ($user->data['is_registered'] && !$user->data['is_bot'])
{
// Felhasználó be van jelentkezve
echo'Üdvözöllek ' . $user->data['username'];
echo '<br /><a href="' . append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=logout', true, $user->session_id). '">Kijelentkezés</a>';
}

Ha a felhasználó nincs bejelentkezve, egy beléptető form-post-ot jelenítünk meg. Ne feledjük az action értéknél valamint a regisztrációnál is beállítani a pontos elérési utat! A ”hidden” típusú sorban a value értékének megadhatjuk azt az oldalt, ahova visszatérjen bejelentkezés után (../ a fórumhoz képest egy szinttel feljebb lévő index.php, ha több szinttel feljebb kell lépni, akkor a ../-t meg kell ismételni)

else
// Felhasználó nincs bejelentkezve
{
?>
<div>
<form action="./forum/ucp.php?mode=login" method="post">
<input type="hidden" name="redirect" value="../index.php">
<label for="username">Név:</label><input type="text" name="username" value="">
<label for="password">Jelszó:</label><input type="password" name="password" value="">
<input type="submit" name="login" value="Belépek">
</form>
</div>
<a href="./forum/ucp.php?mode=register">Regisztráció</a>

<?php
}
?>

Ha az oldal tartalmában is szeretnénk olyan részeket is elhelyezni, amiket csak a tagok olvashatnak, akkor a felhasználó ellenőrzése részt ismét behelyezhetjük:

<?php if ($user->data['is_registered'] && !$user->data['is_bot']): ?>
Ide jöhet az a rész, amit csak tagok olvashatnak.
<?php else: ?>
Be kell jelentkezned.
<?php endif; ?>

További kérdéseket is szívesen fogadok.

You can follow any responses to this entry through the RSS 2.0 feed. Hozzászólások és trackback-ek jelenleg le vannak zárva.

Bővebben:
Mi is az a Stylish?

Ha a fenti kérdésre pár szóban kéne válaszolni, akkor csak annyit írnák, hogy a kedvenc oldalunk saját ízlésünk szerinti kinézete....

Bezárás