Tutorials

PhpBB 3 Inlogsysteem

Het maken van een PhpBB3 session en inlogsysteem. In deze Tutorial ga ik julle laten zien hoe je de session van phpBB3 in je pagina include en hoe je er gebruik van kan maken.

Pagina 1

Het maken van de session + Pagina's beveiligen.

We beginnen met het oproepen van de phpbb session: (Dit moet je in elke pagina helemaal bovenin zetten.)


<?php
define('IN_PHPBB', true);
$phpbb_root_path = "phpBB3/"; //pad naar PHPBB3
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

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

Uitleg:
In dit gedeelte:

<?php
define('IN_PHPBB', true);
$phpbb_root_path = "phpBB3/"; //pad naar PHPBB3( Dit moet je veranderen)
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

Include hij alle bestanden die hij nodig heeft om de sessions te regelen.


Hier:

$user->session_begin();
$auth->acl($user->data);
$user->setup();

Start hij de session en alle benodigde data.

Nu kan je de session van je phpbb3 forum gebruiken. =)

--------------------------------------------
Pagina's beveiligen(het opvragen van data van de gebruiker):

Om Data (zoals: username, user_rank, etc.etc) op te roepen gebruik je het volgende:

$user->data['rij_naam']

Zo kan je bijvoorbeeld dus ook de user_rank, of username ophalen:

$user->data['user_rank']
$user->data['username']

Dit werkt volgens mij alleen als de rij naam in de tabel phpbb_users zit.
(Dit zal ik nog wel nakijken)
-------------------
Nu het beveiligen van je pagina:
Eerst moet je natuurlijk zorgen dat de session van phpBB3 wordt include
(Dat is die code die aan het begin van deze pagina heb uitgelegt)

Nou om bijvoorbeeld te kijken of je ben ingelogd gebruik je het volgende:

if($user->data['is_registered'])
{
//hier kan je de data zetten, die je normaal niet ziet.
}
else
{
echo "Voor deze pagina moet je ingelogd zijn.";
}

Maar als je het op user_id wilt beveiligen, moet je het volgende veranderen:

if($user->data['is_registered'])
{

in

if($user->data['is_registered'])
{
if($user->data['user_rank']== 1){

Zo laat hij je alleen de pagina zien als jou user_rank 1 is. Mits je bent ingelogd.

Als je bijvoorbeeld de gebruikersnaam wilt laten zien,
Doe je dit:

echo $user->data['username'];


Hier alle informatie die je kan opvragen met $user->data
(Jelmer bedankt voor je idee =):

["user_topic_sortby_type"]=>
["user_topic_sortby_dir"]=> 
["user_post_show_days"]=> 
["user_post_sortby_type"]=> 
["user_post_sortby_dir"]=> 
["user_notify"]=> 
["user_notify_pm"]=> 
["user_notify_type"]=>  
["user_allow_pm"]=> 
["user_allow_viewonline"]=> 
["user_allow_viewemail"]=> 
["user_allow_massemail"]=> 
["user_options"]=> 
["user_avatar"]=> 
["user_avatar_type"]=> 
["user_avatar_width"]=>  
["user_avatar_height"]=>  
["user_sig"]=> 
["user_sig_bbcode_uid"]=> 
["user_sig_bbcode_bitfield"]
["user_from"]=>
["user_icq"]=> je icq
["user_aim"]=> 
["user_yim"]=> 
["user_msnm"]=> je msn
["user_jabber"]=> 
["user_website"]=> je website
["user_occ"]=> 
["user_interests"]=> 
 ["user_actkey"]=> 
["user_newpasswd"]=> 
["user_form_salt"]=> 
["session_id"]=>  
["session_user_id"]=> 
["session_forum_id"]=> 
["session_last_visit"]=> 
["session_start"]=>
["session_time"]=> 
 ["session_ip"]=>  De ip waarmee je bent ingelogd
["session_browser"]=> welke internet browser je hebt. =)
["session_forwarded_for"]=> 
["session_page"]=> de pagina waar je nu op bent...
["session_viewonline"]=>  
["session_autologin"]=> 
["session_admin"]=> of je admin bent
["is_registered"]=> of je ingelogd bent
["is_bot"]=> of je een bot bent
Pagina 2

Het maken van extern loginsysteem

Nu beginnen we met het maken van het extern inlogsysteem die werkt met de sessions van phpbb3.
Zo kan je een loginform op je website zetten, zonder dat je wordt doorgelinkt.
En deze zet je ook gelijk online op je phpBB3 forum.


<?php
if(!$user->data['is_registered'])
{
if($_POST['login'])
{


    $username = request_var('username', '', true);
    $password = request_var('password', '', true);
    $autologin = (!empty($_POST['autologin'])) ? true : false;

    $result = $auth->login($username, $password, $autologin);

    if ($result['status'] == LOGIN_SUCCESS)
    {
        
        $redirect = request_var('redirect', "index.$phpEx");
    $url = redirect($redirect, true);
    $time = 3;    //Seconden redirect

    echo '<meta http-equiv="refresh" content="' . $time . ';url=' . str_replace('&', '&amp;', $url) . '" />';
    echo "<div class=\"news_title\"><h3> &raquo; Ingelogd!.</h3></div>";
    echo "<p align=\"center\">Je bent ingelogd.</p>";
    }
    else
    {
        echo"FOUT! er is wat mis gegaan met het invullen van de gegevens. probeer het opnieuw";
    }

}
else
{
?>
<form method="post" action="<?php $_SERVER['PHP_SELF'];?>"><!-- ?mode=login -->

<p>Username: <input name="username" type="text" id="username" /></p>

<p>Password: <input name="password" type="password" id="password" /></p>

<p><input name="login" class="mainoption" value="Log in" type="submit"></p>

</form>
<?
}
}
else  //je bent dus ingelogd...
{
echo "<div class=\"news_title\"><h3> &raquo; User Menu.</h3></div>";
echo('<p align="center">Welcome '.$user->data['username'].'!</p>');
echo "<p align=\"center\"><a href=\"logout.php\">Log Out.</a></p>";
}
?>


Uitleg:


<?php
if(!$user->data['is_registered'])
{
if($_POST['login'])
{


    $username = request_var('username', '', true);
    $password = request_var('password', '', true);
    $autologin = (!empty($_POST['autologin'])) ? true : false;

    $result = $auth->login($username, $password, $autologin);
?>


Met if(!$user->data['is_registered'])
Kijk hij of je niet bent inlogd.
Zoja.. Dan kijk hij of je het formulier hebt verstuurd.
Zoja.. haalt hij de data die jij hebt ingevuld, en trekt de gegevens na met de database.
($result = $auth->login($username, $password, $autologin);)

Nu het volgende stukje:

    if ($result['status'] == LOGIN_SUCCESS)
    
        $redirect = request_var('redirect', "index.$phpEx");
    $url = redirect($redirect, true);
    $time = 3;    //Seconden redirect

    echo '<meta http-equiv="refresh" content="' . $time . ';url=' . str_replace('&', '&amp;', $url) . '" />';
    echo "<div class=\"news_title\"><h3> &raquo; Ingelogd!.</h3></div>";
    echo "<p align=\"center\">Je bent ingelogd.</p>";
    }
    else
    {
        echo"FOUT! er is wat mis gegaan met het invullen van de gegevens. probeer het opnieuw";
    }

}

Hier kijkt hij of de gegevens goed zijn...
zo ja,
Stuurd hij je door naar de index.php..
Zo nee,
Geeft hij een foutmelding. ;-)


Het laatste stukje:

else
{
?>
<form method="post" action="<?php $_SERVER['PHP_SELF'];?>"><!-- ?mode=login -->

<p>Username: <input name="username" type="text" id="username" /></p>

<p>Password: <input name="password" type="password" id="password" /></p>

<p><input name="login" class="mainoption" value="Log in" type="submit"></p>

</form>
<?
}
}
else  //je bent dus ingelogd...
{
echo "Hallo, ".$user->data['username'];
}
?>


In het laatste stukje laat hij het formulier zien. (als je niet verstuurd hebt)
En als je al ingelogd bent laat hij een tekst zien met: welkom, jounaam.
($user->data['username'])


Gefeliciteerd! Je hebt nu een inlogsysteem dat met jou eigen phpbb3 Forum werkt. =)

Edit:
Het uitloggen:

    <?php
    define('IN_PHPBB', true);
    $phpbb_root_path = './';    //Path to forum
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.' . $phpEx);

   
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();

    if($user->data['is_registered'])
    {
        $user->session_kill();
        $user->session_begin();
    }
    else
    {
        //gebruiker is al uitgelogd
    }
    ?>


Pagina 3

Einde

Dit was mijn Tutorial "phpBB3 inlogsystem met sessions".

Het was mijn eerste Tutorial.

Bedankt voor het lezen,
En hoop dat je er wat aan hebt. =)

Superwauwie

Reacties

0
Nog geen reacties.