[Snippet] Externer Login / Logout für phpBB3
Verfasst: 25.04.2008 21:47
Dies ist nur ein (funktionierender) Beispiel Code für ein externes Login / Logout.
Zur besseren Übersicht habe ich den PHP Code vom HTML Code getrennt.
Beide Dateien müssen für dieses Beispiel im gleichen Verzeichnis liegen.
Als Beispielverzeichnis habe ich das Forumsverzeichnis selbst genommen.
Neue Datei erstellen: login.php ( oder in bestehende Webseite einbauen )
Datei Inhalt:
Nun noch ein wenig HTML um die Login Box nachzubilden:
Neue Datei: login.html
Datei Inhalt:
Wenn man nun die login.html aufruft erscheint eine Anmeldemaske.
Was ggf. angepasst werden muss ist das phpBB3 Forums Root Verzeichnis.
Passt dazu diese Zeile an:
Das ./ gibt momentan an, das die login.php im gleichen Verzeichnis wie das Forum selbst liegt.
Die Zeile:
gibt an, was beim anklicken des Buttons "Absenden" aufgerufen werden soll.
Ihr könnt das ganze hier testen, wenn Ihr einen Account für dieses Forum besitzt.
Die Testseite für das externe ein- und ausloggen lautet: login.php
Zur besseren Übersicht habe ich den PHP Code vom HTML Code getrennt.
Beide Dateien müssen für dieses Beispiel im gleichen Verzeichnis liegen.
Als Beispielverzeichnis habe ich das Forumsverzeichnis selbst genommen.
Neue Datei erstellen: login.php ( oder in bestehende Webseite einbauen )
Datei Inhalt:
Code: Alles auswählen
<?php
/**
*
* externes Login script fuer phpBB3
* Kann zur WebSite Authentifizierung benutzt werden
*
*/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
require($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
//Abfragen von ggf. uebermittelten Parametern
$username = request_var('username', '', true);
$password = request_var('password', '', true);
$autologin = (!empty($_POST['autologin'])) ? true : false;
$viewonline = (!empty($_POST['viewonline'])) ? 0 : 1;
$logout = request_var('mode', '');
//Wenn username und passwort uebergeben worden sind, starte einen Anmeldeversuch
if (isset($username) && isset($password))
{
$auth->login($username, $password, $autologin, $viewonline);
}
//Wenn ueber einen Link der mode=logout lautet und eine SID uebergeben wurde, starte das ausloggen des Users
if ($logout == 'logout')
{
$user->session_kill();
}
/**
*
* Optionaler Code
* Prüfe ob User eingeloggt ist oder nicht
*
*/
if ($user->data['is_registered'])
{
// Hier steht der Code für ein erfolgreich eingeloggter User
echo "Du bist angemeldet.<br /><br />";
//Optionaler Code zum Ausloggen.
//Es ist wichtig, das die Session ID mit der Funktion append_sid() uebergeben wird.
echo 'Zum Abmelden <a href="'. append_sid("{$phpbb_root_path}login.$phpEx", "mode=logout") . '">hier</a> klicken';
}
else
{
//Wenn Du hier landest bist Du nicht eingeloggt.
echo "Du bist abgemeldet<br /><br />";
echo "<a href="login.html">Nochmal versuchen?</a>";
}
?>
Neue Datei: login.html
Datei Inhalt:
Code: Alles auswählen
<html>
<body>
Bitte anmelden:<br />
<form method="POST" action="./login.php">
<p>Benutzername: <input type="text" name="username" size="40"><br />
Passwort: <input type="password" name="password" size="40"><br />
<br />
Mich bei jedem Besuch automatisch anmelden? : <input type="checkbox" name="autologin"><br />
<br />
Online Status verstecken? : <input type="checkbox" name="viewonline"><br />
<br />
<input type="submit" value="Absenden" name="login"></p>
</form>
</body>
</html>
Wenn man nun die login.html aufruft erscheint eine Anmeldemaske.
Was ggf. angepasst werden muss ist das phpBB3 Forums Root Verzeichnis.
Passt dazu diese Zeile an:
Code: Alles auswählen
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
Die Zeile:
Code: Alles auswählen
<form method="POST" action="./login.php">
Ihr könnt das ganze hier testen, wenn Ihr einen Account für dieses Forum besitzt.
Die Testseite für das externe ein- und ausloggen lautet: login.php