Übergabe der Benutzeranmeldung an phpBB (für eingenen Login)

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

Dann wäre es am einfachsten du bennenst deine Felder um so wie sind phpbb_users sind um und änderst dann in der constants.php den Tabellennamen.
Oder halt auch anders rum.
Jan88
Mitglied
Beiträge: 278
Registriert: 04.10.2005 15:02
Kontaktdaten:

Beitrag von Jan88 »

ich möchte meinen eigenen login benutzen. aber den onlinestatus an phpbb weitergeben.
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Das von mir gepostete Query liest die Benutzerdaten aller drei Tabellen aus, wenn eine entsprechenden Session-ID übergeben wird. Nötig ist dazu nur, dass es in deiner zweiten User-Tabelle ein Feld session_id gibt, denn sonst kann man die Einstellungen ja nicht mit den Sessions in Verbindung bringen.

Um eine neue Session anzulegen, müsstest du also so vorgehen:
  • Session-ID generieren
  • Session in Sessions-Tabelle einfügen
  • Cookie fürs Forum und für die Homepage setzen
  • Benutzerdaten auslesen (mit meinem Query)
Oder du verwendest die von fanrpg vorgeschlagene Lösung, die User-Tabelle von phpBB zu verwenden, einen großen Unterschied macht das letztendlich aber auch nicht... (was den Login angeht)
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
Indiana Horschd
Mitglied
Beiträge: 5
Registriert: 01.03.2004 16:34

Beitrag von Indiana Horschd »

Hallo,

ich weiß nicht, ob es jemand weiterhilft, aber ich habe das Problem folgendermaßen gelöst:

1. In die phpbb_users-Tabelle eine weitere Spalte (win_login) angefügt, die meine Loginnamen der ürsprünglichen Anmeldung enthält. (Da es sich bei mir um eine Intranet-Seite handelt, benutze ich den Windows-Login-Namen und authentifiziere die Benutzer über mod_auth_sspi am Apache Server)

2. Auf der Startseite fügte ich folgenden Code hinzu

Code: Alles auswählen

// Verbindung zum phpbb
define('IN_PHPBB', true);
$phpbb_root_path = '__wo_auch_immer_der_Pfad_ist__';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path . 'includes/bbcode.'.$phpEx);

// Auslesen der Anmeldeinformationen
list ($dom, $logname) = split('[\]', $_SERVER["REMOTE_USER"]);
$win_name = strtolower($logname);

// Auslesen der IP-Adresse
$ip=$_SERVER["REMOTE_ADDR"];

// Verbinden mit der phpbb-Datenbank
mysql_connect($dbhost,$dbuser,$dbpasswd);
mysql_select_db($dbname);

// Abfrage der Benutzer-ID des angemeldeten Benutzers
$name = mysql_fetch_array(mysql_query("SELECT user_id FROM phpbb_users WHERE win_login= '$win_name'"));

// Schließen der Datenbank
mysql_close;

// Übergabe der Informationen an die Funktion "session_begin" in der Datei "includes/sessions.php"
// unter der Voraussetzung, dass der angemeldete Benutzer auch als phpbb-Benutzer existiert
if ($name <> "") {
$session_id = session_begin($name[0], $ip, 0, FALSE, TRUE);
}
Durch die Funktion "session_begin" wird dann die Anmeldung automatisch durchgeführt, und auch ein Cookie gesetzt.

Bei mir funktioniert das einwandfrei :)

CU
Indiana Horschd
Jan88
Mitglied
Beiträge: 278
Registriert: 04.10.2005 15:02
Kontaktdaten:

Beitrag von Jan88 »

ich verstehe nicht genau was du damit wo machst.
Wo steht der code?
Wie muss ich meinen Logincode anpassen?
PHPbb erkennt dann den Nutzer automatisch als eingeloggt?
und wie bzw wo füge ich die Daten die ich haben will der Session hinzu?
hier mal mein Logincode. wie muss ich den jetzt verändern? der Code wir über ein Formular aufgerufen.

Code: Alles auswählen

<?php
    session_start();
    // Überprüfen, ob das Formular abgeschickt wurde und ob beide Angaben gemacht wurden.
    if( isset($_POST['username'], $_POST['password'])
        AND
        strcmp(trim($_POST['username']),'') != 0
        AND
        strcmp(trim($_POST['username']),'') != 0 ) 
{          // Einbinden der Konfigurationsdateien
          include_once 'config/config.php';
          include_once 'config/config.frame.php';
          // SQL-Anweisung an die Datenbank senden, um erstens herauszufinden, ob
          // diese Kombination von Usernamen und Passwort überhaupt existiert und
          // zweitens bei Existenz Userinformationen auszulesen

          $sql = "SELECT
                           level,
                           status,
			   name
                      FROM
                           user
                      WHERE
                           name = '" . trim($_POST['username']) . "'
                      AND
                           password = '" . md5(trim($_POST['password'])) . "'";

          $res = mysql_query($sql) or die( 'Error[SELECT|User]: <br />
                                                           <pre>' . $sql . '</pre>
                                                           <br />
                                                           MySQL-Error: ' . mysql_error() );
          // Nur wenn genau ein Datensatz selektiert wurde wird der User eingeloggt.
          // In allen anderen Fällen wird er zurück zum Loginformular geleitet.
          if( mysql_num_rows($res) != 1 ) {
              header( 'Location: index.php?section=loginfehler' );
              exit();
          }
          else {
             // Der Schlüssel 'loggedIn' erhält den Wert 'true'. So kann überprüft später werden,
             // ob der User eingeloggt ist oder nicht.
             $_SESSION['loggedIn'] = true;
			 // Der Status des Users wird auf "1"
			 $sql = 'UPDATE
                              user
                         SET
                              status = status 1
                         WHERE
                              name = ' . $user->name;
             // Die userspezifischen Daten werden ausgelesen und der Session hinzugefügt
             $user = mysql_fetch_object($res);
             $_SESSION['status'] = $user->status;
             $_SESSION['level'] = $user->level;
	     $_SESSION['name'] = $user->name;
        
            // Der Login war erfolgreich und der User wird zur Startseite des
             // passwortgeschützen Bereichs weitergeleitet
             header( 'Location: intern/index.php');
             exit();
          }
    }
    else {
          header( 'Location: index.php?section=login' );
          exit();
    }
?>
flo18
Mitglied
Beiträge: 11
Registriert: 04.01.2006 00:02

Beitrag von flo18 »

Hallo,

als Newbie in diesen Dingen halte ich mich gerne an ausführliche Tutorials:
http://aktuell.de.selfhtml.org/tippstri ... m#beispiel

Ist natürlich nicht auf PHPBB2 angepasst..
Wie könnte man dies ändern, um Mietgliederseiten zu schützen und gleichzeitig im Forum eingeloggt zu sein - also so wie Jan88 es wohl auch ganz gerne hätte.
Was muss ich, auch in den hier diskutierten Ansätzen in MySQL anpassen und wie mache ich das überhaupt?

Hoffentlich kann ich am Ende dieses Threads die Lösung auch als Newbie bei mir einbauen.
Jan88
Mitglied
Beiträge: 278
Registriert: 04.10.2005 15:02
Kontaktdaten:

Beitrag von Jan88 »

Schon das ich nicht der einzige bin der das problem hat.
Leider versuche ich schon länger dieses problem zu lösen. leider bisher ohne erfolg :cry:

Aber jetzt sind wir schon zwei die das problem haben.

WIR WERDEN DAS SCHON NOCH SCHAFFEN :wink:
Antworten

Zurück zu „Coding & Technik“