Seite 1 von 1

[Snippet] Externer Login / Logout für phpBB3

Verfasst: 25.04.2008 21:47
von Dr.Death
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:

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>";
}

?>
Nun noch ein wenig HTML um die Login Box nachzubilden:

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 : './';
Das ./ gibt momentan an, das die login.php im gleichen Verzeichnis wie das Forum selbst liegt.

Die Zeile:

Code: Alles auswählen

<form method="POST" action="./login.php">
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

Re: [Snippet] Externer Login / Logout für phpBB3

Verfasst: 03.05.2017 20:34
von Dr.Death
Für phpBB 3.1.x und 3.2.x müssen noch 2 Zeilen in der login.php angepasst werden, da die SUPER GLOBALS deaktiviert wurden.

Zeile 21 und 22:

ALT:

Code: Alles auswählen

$autologin    = (!empty($_POST['autologin'])) ? true : false;
$viewonline = (!empty($_POST['viewonline'])) ? 0 : 1; 
NEU:

Code: Alles auswählen

$autologin    = (isset($_POST['autologin'])) ? true : false;
$viewonline = (isset($_POST['viewonline'])) ? true : false; 

Damit sieht die Beispiel login.php nun so aus:

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    = (isset($_POST['autologin'])) ? true : false;
$viewonline = (isset($_POST['viewonline'])) ? true : false;

$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>";
}

?>