phpBB.de - Die deutsche phpBB-Community
Stand: 30.12.2008 04:56
aktuelle Version auf phpBB.de
 
Apache At Work Communities Community Building Informationen und Hinweise Installation/Konfiguration/Update MySQL PHP phpBB-Optimierungen phpBB3 Rechtliches Server & Technik Snippets Templates und Mods
 



Knowledge Base Offline -> Templates und Mods -> Vorlage für in phpBB eingebundene Seiten

Vorlage für in phpBB eingebundene Seiten
Autor: Pyramide
Stand: 30.12.2008 04:56
Neuste Version unter: http://www.phpbb.de/doku/kb/phpbb_seite

Vorlage für in phpBB eingebundene Seiten

Dieses ist eine Vorlage für eine Seite, die man ins phpBB-Verzeichnis legen kann und in der dann automatisch der Header/Footer sowie die Login-Daten verfügbar sind.
Hinweis: Dies ist eine Vorlage für phpBB 2.0.x. Sie funktioniert NICHT mit phpBB 3. Eine phpBB 3 Vorlage findet sich hier.
Code:
<?php
//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);


//Session auslesen und Benutzer-Informationen laden
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);


//Dieser Block kann weggelassen werden, wenn du nur den die Userdaten brauchst und auf den phpBB-Header verzichen möchtest
$page_title = 'Meine Seite';
include($phpbb_root_path . 'includes/page_header.'.$phpEx);



/***** Inhaltsbereich ******/



//Footer - nur dann weglassen, wenn du auch den Header weglässt
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?>


Anmerkungen:
  • $phpbb_root_path: Wenn die Datei in einem anderen Verzeichnis als phpBB liegt, hier den relativen Pfad zu phpBB mit abschliessendem Slash (/) eintragen. Eventuell muss dazu der Cookie-Pfad im ACP auf / gesetzt werden.
    Wenn page_header.php/page_tail.php in diese neue Seite eingebunden werden und sich die Seite nicht im phpBB-Verzeichnis befindet, würden die Linkverweise und Bilderpfade im Header/Footer ins Leere führen, da kein fester Pfad (z.B. http://usw.) in den Dateien angegeben wird, sondern nur ein direkter Verweis auf die Datei (/datei.php) oder das Templateverzeichnis (/templates/usw.). Um das zu umgehen, müsste man diese Verweise in den genutzten Dateien so anpassen, das sie auf http://usw. verweisen.
  • PAGE_INDEX: Wenn du möchtest, daß deine Seite mit Titel und Link in der "Wer ist Online"-Liste aufgeführt wird, musst du wie folgt vorgehen:
    1. In includes/constants.php im Bereich // Page numbers for session handling eine neue Konstante definieren
    2. In viewonline.php ab Zeile 160 einen neuen case-Block einfügen, z.B:
      Code:
      case PAGE_MEINESEITE:
          $location = 'Meine Seite';
          $location_url = "meine_seite.$phpEx";
          break;

    3. In deiner eigenen Seite in diesem Code
      Code:
      $userdata = session_pagestart($user_ip, PAGE_INDEX);
      PAGE_INDEX gegen deine eigene neue Konstante austauschen.
  • $userdata: Dieses assoziative Array enthält alle Felder der Tabellen phpbb_users und phpbb_sessions für den angemeldeten Benutzer (kann auch der Gast-Benutzer sein). Siehe dazu die Datenbank-Beschreibung
  • Inhaltsbereich: Hier kannst du beliebigen PHP-Code oder HTML-Code (nicht vergessen, den PHP-Bereich mit ?> ... <?php zu verlassen) verwenden. Oder du verwendest das phpBB Template-System


Prüfung der Benutzerrechte
  • Soll geprüft werden, ob ein Benutzer angemeldet ist, so ist die Variable $userdata['session_logged_in'] zu prüfen. Also z.B.
    Code:
    if ( $userdata['session_logged_in'] )
    {
        // Code, wenn ein Benutzer angemeldet ist
    }
    else
    {
        // Code, wenn kein Benutzer angemeldet ist
    }

  • Mit diesem Code kannst du nicht eingelogte Benutzer auf die Login-Seite umleiten:
    Code:
    if(!$userdata['session_logged_in']) {
        redirect('login.'.$phpEx);
    }

  • Ähnlich kann geprüft werden, ob ein Benutzer Admin-Rechte hat:
    Code:
    if ( $userdata['user_level'] == ADMIN )
    bzw. ob er Moderator ist:
    Code:
    if ( $userdata['user_level'] == MOD )
    Die Prüfung, ob ein User Moderator ist, gibt für einen Admin immer 'Falsch' zurück - selbst wenn der Admin als Moderator für einzelne Foren eingerichtet ist. Daher ist hier folgende Abfrage vorzuziehen:
    Code:
    if ( $userdata['user_level'] == ADMIN || $userdata['user_level'] == MOD )

  • Wenn nach Gruppen unterschieden werden soll kann dieser Mod verwendet werden:
    Abfrage der Gruppenzugehörigkeit



Weitergabe der Sitzungsdaten
Damit die Sitzungsdaten zwischen den einzelnen Seitenaufrufen erhalten bleiben, speichert phpBB die ID der Sitzung in einem Cookie. Falls kein Cookie verwendet werden kann, wird die ID über die URL (&sid=...) weitergegeben. Damit diese Sitzungs-ID ggf. an die URL angehangen wird, gibt es die Funktion append_sid(), die als Parameter die URL der Seite aufnimmt. So sollte z.B. statt
Code:
<a href="index.php">Zum Forum</a>
besser
Code:
<a href="<?= append_sid('index.php'); ?>">Zum Forum</a>
verwendet werden, wenn von einer Seite mit dieser Vorlage auf eine Foren-Seite oder auf eine andere Seite mit dieser Vorlage verwiesen wird.


Knowledge Base Offline -> Templates und Mods -> Vorlage für in phpBB eingebundene Seiten