Eerst en vooral deze code voor al de rest plaatsen (aanpassen waar nodig):
Code:
// Session management
define('IN_PHPBB', true);
$site_root_path = 'www.noordlandbredene.be'; //www.jouwsite.be
$phpbb_root_path = '../forum/'; //phpbb-root relatief tov de file vanwaar je deze code aanroept
include_once( $phpbb_root_path . 'extension.inc' );
include_once( $phpbb_root_path . 'common.php' );
include_once( $phpbb_root_path . 'config.php' );
include_once( $phpbb_root_path . 'module_groups.inc' ); //moet je apart aanmaken
$userdata = session_pagestart( $user_ip, PAGE_SITE ); //voor het gebruik van PAGE_SITE moet je ook enkele wijzigingen aanbrengen
init_userprefs($userdata);
Nu kan je alle phpbb-variabelen, -functies, -classes, ... gebruiken (ik maak gebruik van de $db- en $template-class en natuurlijk de $userdata)
Vb.: echo $userdata['username']; // eigen username weergeven
module_groups.incCode:
<?php
function get_User_Memberships($id=0)
{
global $db, $userdata,$table_prefix;
$sql = "SELECT g.* FROM phpbb_groups g , phpbb_user_group u WHERE u.user_id ='". $userdata['user_id'] ."' AND u.group_id = g.group_id ";
if(!$result = $db->sql_query($sql))
{
$userdata = array("error" => "1");
}
if(!$myrow = $db->sql_fetchrowset($result))
{
$usergroups = array("error" => "1");
}
$usergroups = $myrow;
for($i=0; $i<count($usergroups); $i++)
{
if( $id == 1 )
{
$groups[$i] = $usergroups[$i]['group_id'];
}
else
{
$groups[$i] = $usergroups[$i]['group_name'];
}
}
return $groups;
}
function check_Membership($needed_group)
{
if( is_numeric( $needed_group ) )
{
$groups = get_User_Memberships(1);
}
else
{
$groups = get_User_Memberships();
}
$status = false;
if (in_array($needed_group, $groups))
{
$status = true;
}
return $status;
}
?>
Hiermee kan je vb.: check_Membership( 'Leiding' ) of check_Membership( 9 ), waar 'Leiding' de naam is van een phpbb-group of 9 het id van die group.
Om te kunnen werken met PAGE_SITE:
viewtopic.php?p=8217#8217Dit houdt bij welke gebruiker zich waar bevindt op de site (via viewonline.php of in het admin-paneel). Zo kan je elke pagina apart definiëren. Vb.: PAGE_DOWNLOADS, PAGE_LINKS, PAGE_KALENDER, ... . Zorg wel dat je niet dezelfde namen of id's gebruikt als phpbb !
Login:Code:
if( !( $userdata['session_logged_in'] ) )
{
<form action='".$phpbb_root_path."login.php' method='post'> //locatie van login.php eventueel aanpassen
<input type='text' name='username' size='14' maxlength='40' value='username' /> //username
<input type='password' name='password' size='14' maxlength='40' value='paswoord' /> //passwoord
<input id='autologin' type='checkbox' name='autologin' checked='checked' value='' /><label for='autologin'> Auto-login</label> //autologin aan/uit
<input type='hidden' name='redirect' value='../index.php'/> //naar welke pagina wil je na het inloggen ?
<input type='submit' name='login' value='Login'/> //GO !!
</form>
}
Logout:Code:
else
{
<form action='".$phpbb_root_path."login.php?logout=true&sid=".$sid."' method='post'> //locatie van login.php eventueel aanpassen, $sid (session-id) kan je toevoegen met de phpbb-functie append_sid( $link )
<input type='hidden' name='redirect' value='../index.php'/> // redirect na uitloggen
<input type='submit' name='logout' value='Uitloggen' /> // GO !!
</form>
}
Registreren: Code:
<form action='../forum/profile.php' method='post'> // aanpassen indien nodig
<fieldset>
<legend>Registratie informatie </legend><br />
<table>
<tr>
<td colspan='2'><b>Alle onderdelen zijn verplicht</b></td>
</tr>
<tr>
<td colspan='2'> </td>
</tr>
<tr>
<td>Gebruikersnaam:</td>
<td><input type='text' name='username' size='25' maxlength='25' value='' /></td>
</tr>
<tr>
<td>Email adres:</td>
<td><input type='text' name='email' size='25' maxlength='25' value='' /></td>
</tr>
<tr>
<td>Wachtwoord:</td>
<td><input type='password' name='new_password' size='25' maxlength='25' value='' /></td>
</tr>
<tr>
<td>Bevestig wachtwoord:</td>
<td><input type='password' name='password_confirm' size='25' maxlength='25' value='' /></td>
</tr>
<tr>
<td colspan='2'> </td>
</tr>
<tr>
<td class='c' colspan='2'>
<input type='submit' name='submit' value='Registreer' />
<input type='reset' name='reset' value='Wis' />
</td>
</tr>
</table>
</fieldset>
// volgende waardes zet ik op standaard-instelling, maar je kunt de gebruiker bij registratie ook al toelaten deze te wijzigen door gewone velden ipv hidden fields te begruiken
<input type='hidden' name='icq' value='' />
<input type='hidden' name='aim' value='' />
<input type='hidden' name='msn' value='' />
<input type='hidden' name='yim' value='' />
<input type='hidden' name='website' value='' />
<input type='hidden' name='location' value='' />
<input type='hidden' name='occupation' value='' />
<input type='hidden' name='interests' value='' />
<input type='hidden' name='signature' value='' />
<input type='hidden' name='viewemail' value='0' />
<input type='hidden' name='hideonline' value='0' />
<input type='hidden' name='notifyreply' value='0' />
<input type='hidden' name='notifypm' value='0' />
<input type='hidden' name='popup_pm' value='0' />
<input type='hidden' name='attachsig' value='1' />
<input type='hidden' name='allowbbcode' value='1' />
<input type='hidden' name='allowhtml' value='1' />
<input type='hidden' name='allowsmilies' value='1' />
<input type='hidden' name='language' value='dutch' />
<input type='hidden' name='style' value='1' />
<input type='hidden' name='timezone' value='+1' />
<input type='hidden' name='dateformat' value='D M d, Y g:i a' />
<input type='hidden' name='mode' value='register' />
<input type='hidden' name='aKkOoRd' value='true' /> // trukje om bots tegen te houden *
<input type='hidden' name='coppa' value='0' />
</form>
*: in admin/admin_users.php, includes/usercp_avatar.php en includes/usercp_register.php moet je alle voorkomens van 'agreed' vervangen door iets anders (bij mij is dat 'aKkOoRd' geworden, let op: hoofdlettergevoelig !)
Uitleg:
http://www.phpbb.com/phpBB/viewtopic.php?t=257755
Interessante phpBB-functies:
http://www.phpbb.com/kb/article.php?article_id=60
Hoe werken met de template-class:
http://www.phpbb.com/kb/article.php?article_id=200
Meer over het integreren:
http://www.phpbb.com/kb/article.php?article_id=143
Append-sid:
http://www.phpbb.com/kb/article.php?article_id=58
Over het gebruik van de $db-class (om met je database te werken):
$sql = "SELECT * FROM table";
$result = $db->sql_query($sql);
of
if ( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not select something', '', __LINE__, __FILE__, $sql);
}
indien je een error wil laten genereren (vb voor debuggen)
$result is true als de query geen fouten gaf.
Bij een SELECT:
voor 1 result: $foto = $db->sql_fetchrow($result);
$foto is dan gelijk aan array( 'KEY' => 'VAL', 'KEY' => 'VAL', ... )
voor meerdere results: $fotos = $db->sql_fetchrowset($result);
$fotos is dan gelijk aan array van arrays zoals deze: array( 0 => array( 'KEY' => 'VAL', 'KEY' => 'VAL', ... ), 1 => array( 'KEY' => 'VAL', 'KEY' => 'VAL', ... ), ... )
wat soms ook handig is:
while( $foto = $db->sql_fetchrow($result) )
{
//doe iets
}
binnen de while loop je dan alle elementen af uit de query
voila, bij nader inzien is dit een goed stukje om te tutorializen
probeer vooral veel te experimenteren, regelmatig je error-log bekijken en veel echo/print_r gebruiken om te kunnen volgen wat er gebeurt
en nu aan de slag !!