phpbb Cookies für Rest der Webseite übernehmen
phpbb Cookies für Rest der Webseite übernehmen
Hi.
Ich möchte einen Teil meiner Homepage nur denen zur Verfügung stellen die auch im Forum angemeldet sind. Dafür gibt es ein Login auf der Hauptseite der die Daten mit der DB abgleicht.....Nun möchte ich aber, falls die eingegebenen Daten richtig sind sie in einem Cookie speichern, damit der User sie beim nächsten mal nicht wieder eingeben muss. Dabei darf es aber keinen Konflikt mit den Daten aus dem Forum geben. Sprich der user sollte beim nächsten Forenlogin auch alle neuen Beiträge sehen können.
Wie mache ich das am besten?
S.
Ich möchte einen Teil meiner Homepage nur denen zur Verfügung stellen die auch im Forum angemeldet sind. Dafür gibt es ein Login auf der Hauptseite der die Daten mit der DB abgleicht.....Nun möchte ich aber, falls die eingegebenen Daten richtig sind sie in einem Cookie speichern, damit der User sie beim nächsten mal nicht wieder eingeben muss. Dabei darf es aber keinen Konflikt mit den Daten aus dem Forum geben. Sprich der user sollte beim nächsten Forenlogin auch alle neuen Beiträge sehen können.
Wie mache ich das am besten?
S.
-
- Mitglied
- Beiträge: 32
- Registriert: 10.08.2003 13:34
- Kontaktdaten:
Ein Auszug aus der SESSION.PHP:
Dieses kannst du übernehmen und in deine Funktionen einbauen.
Zu beachten sind nur, dass die Variabeln für cookienamen gesetzt sind.
Sowie die Daten aus der MYSQL - Datenbank.
Bei mir sieht das so aus:
Somit erhält man die Daten, die das Forum für sich selbst verwaltet.
Man braucht somit keinen eigenen Login/Logout zu haben.
Achja, bevor ich es vergesse:
damit weiss du auch bescheid, ob der jenige eingeloggt sein möchte oder nicht.
Ich hoffe, ich konnte dir damit helfen...
Code: Alles auswählen
if ( isset($HTTP_COOKIE_VARS[$cookiename . '_sid']) || isset($HTTP_COOKIE_VARS[$cookiename . '_data']) )
{
$sessiondata = isset( $HTTP_COOKIE_VARS[$cookiename . '_data'] ) ? unserialize(stripslashes($HTTP_COOKIE_VARS[$cookiename . '_data'])) : array();
$session_id = isset( $HTTP_COOKIE_VARS[$cookiename . '_sid'] ) ? $HTTP_COOKIE_VARS[$cookiename . '_sid'] : '';
$sessionmethod = SESSION_METHOD_COOKIE;
}
else
{
$sessiondata = array();
$session_id = ( isset($HTTP_GET_VARS['sid']) ) ? $HTTP_GET_VARS['sid'] : '';
$sessionmethod = SESSION_METHOD_GET;
}
//
// Does a session exist?
//
if ( !empty($session_id) )
{
//
// session_id exists so go ahead and attempt to grab all
// data in preparation
//
$sql = "SELECT u.*, s.*
FROM " . SESSIONS_TABLE . " s, " . USERS_TABLE . " u
WHERE s.session_id = '$session_id'
AND u.user_id = s.session_user_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Error doing DB query userdata row fetch', '', __LINE__, __FILE__, $sql);
}
$userdata = $db->sql_fetchrow($result);
Zu beachten sind nur, dass die Variabeln für cookienamen gesetzt sind.
Sowie die Daten aus der MYSQL - Datenbank.
Bei mir sieht das so aus:
Code: Alles auswählen
if(isset($HTTP_COOKIE_VARS['clan-sou-forum_sid']) || isset($HTTP_COOKIE_VARS['clan-sou-forum_data']) )
{
$sessiondata = isset( $HTTP_COOKIE_VARS['clan-sou-forum_data'] ) ? unserialize(stripslashes($HTTP_COOKIE_VARS['clan-sou-forum_data'])) : array();
$session_id = isset( $HTTP_COOKIE_VARS['clan-sou-forum_sid'] ) ? $HTTP_COOKIE_VARS['clan-sou-forum_sid'] : '';
}
if (!empty($session_id))
{
// session_id exists so go ahead and attempt to grab all
// data in preparation
$sql = "SELECT u.*, s.*
FROM phpbb_sessions s, phpbb_users u
WHERE s.session_id = '$session_id'
AND u.user_id = s.session_user_id";
if ($objrs = $conn->Execute($sql))
{
echo "<p class='gen'>".$objrs->fields['username']."</p>";
echo "<p class='gen'>".$objrs->fields['user_id']."</p>";
echo "<p class='gen'>".$objrs->fields['user_active']."</p>";
}
}
Man braucht somit keinen eigenen Login/Logout zu haben.
Achja, bevor ich es vergesse:
Code: Alles auswählen
$autologin = ( isset($HTTP_POST_VARS['autologin']) ) ? TRUE : 0;
Ich hoffe, ich konnte dir damit helfen...
Hi
Geht das auch andersherum?
Auf meiner Homepage erscheint eine Loginbox mit Benutzer und Passwort. Diese beiden Formulardaten werden schon erfolgreich mit der phpbb_users-Tabelle abgeglichen (das hab ich noch hingekriegt). Nach erfolgreichem Login soll der Benutzer dann im Mitgliedsbereich sein. Im Mitgliedsbereich kann er dann in unterschiedliche Bereiche gehen: Tipps & Tricks, etc. und dann eben auch in den Bereich Forum.
Wie kriegt man das hin, dass der Benutzer im Mitgliedsbereich ist, dass aber auch schon die Bedingungen (session, cookie, etc.) für das erfolgreiche Aufrufen/"eingeloggt-sein" des Forums erfüllt sind.
Gruß
Matthias
Geht das auch andersherum?

Auf meiner Homepage erscheint eine Loginbox mit Benutzer und Passwort. Diese beiden Formulardaten werden schon erfolgreich mit der phpbb_users-Tabelle abgeglichen (das hab ich noch hingekriegt). Nach erfolgreichem Login soll der Benutzer dann im Mitgliedsbereich sein. Im Mitgliedsbereich kann er dann in unterschiedliche Bereiche gehen: Tipps & Tricks, etc. und dann eben auch in den Bereich Forum.
Wie kriegt man das hin, dass der Benutzer im Mitgliedsbereich ist, dass aber auch schon die Bedingungen (session, cookie, etc.) für das erfolgreiche Aufrufen/"eingeloggt-sein" des Forums erfüllt sind.
Gruß
Matthias
-
- Mitglied
- Beiträge: 32
- Registriert: 10.08.2003 13:34
- Kontaktdaten:
@.Matthias
Eigentlich weisst du ja schon, ob derjenige drin ist oder nicht.
Du brauchst nur noch die Variabeln abfragen.
Meine Lösung ist ja, dass man per Cookie erkannt wird.
Somit sollte das automatische einloggen für die ganze Seite ermöglichen.
Jedoch habe ich gerade noch ein Problem festgestellt.
Das Problem ist bei meiner Lösung, dass man zumindest zuvor einmal im Forum sein musste, um danach automatisch erkannt zu werden. Ansonsten funktioniert die Erkennung trotz Cookie nicht.
Eigentlich weisst du ja schon, ob derjenige drin ist oder nicht.
Du brauchst nur noch die Variabeln abfragen.
Meine Lösung ist ja, dass man per Cookie erkannt wird.
Somit sollte das automatische einloggen für die ganze Seite ermöglichen.
Jedoch habe ich gerade noch ein Problem festgestellt.
Das Problem ist bei meiner Lösung, dass man zumindest zuvor einmal im Forum sein musste, um danach automatisch erkannt zu werden. Ansonsten funktioniert die Erkennung trotz Cookie nicht.
Hi Programmer!
Danke für die Antwort!
Irgendwie hab ich ne Denkblockade. Der User ist in den Mitgliedsbereich vorgedrungen (nachdem das Passwort und der Benutzername durch meine Loginroutine in der phpbb_users-Tabelle erfolgreich gecheckt wurde).
Wenn ich jetzt aber im Mitgliederbereich auf den Link "Forum" klicke, dann weiß ja das Forum noch nichts von dem User und verlangt von Ihm logischerweise wieder einen Login. Diesesmal würde dann ja durch die Forumsloginroutine ne Session in der Datenbank erstellt. Wie krieg ich das aber hin, dass
- entweder das Forum "mitgeteilt" bekommt, dass dieser User bereits ne Session hat
- bzw. das mein Login-Skript, wie das Forum-Login-Script, die gleichen Daten in die Datenbank schreibt.
Ich steh echt vor'm Berg muss ich sagen
Gruß
.Matthias
Danke für die Antwort!
Irgendwie hab ich ne Denkblockade. Der User ist in den Mitgliedsbereich vorgedrungen (nachdem das Passwort und der Benutzername durch meine Loginroutine in der phpbb_users-Tabelle erfolgreich gecheckt wurde).
Wenn ich jetzt aber im Mitgliederbereich auf den Link "Forum" klicke, dann weiß ja das Forum noch nichts von dem User und verlangt von Ihm logischerweise wieder einen Login. Diesesmal würde dann ja durch die Forumsloginroutine ne Session in der Datenbank erstellt. Wie krieg ich das aber hin, dass
- entweder das Forum "mitgeteilt" bekommt, dass dieser User bereits ne Session hat
- bzw. das mein Login-Skript, wie das Forum-Login-Script, die gleichen Daten in die Datenbank schreibt.
Ich steh echt vor'm Berg muss ich sagen

Gruß
.Matthias
-
- Mitglied
- Beiträge: 32
- Registriert: 10.08.2003 13:34
- Kontaktdaten:
-
- Mitglied
- Beiträge: 32
- Registriert: 10.08.2003 13:34
- Kontaktdaten:
Also im Forum habe ich jetzt was gefunden, was 100% funktioniert.
und aus der Variabel $userdata bekommt man alle Informationen:
Auch schlage ich vor, da es solche Fragen ja öfters gibt bzw. geben wird, eine Workshop in die phpbb.de einzubauen.
Dann findet man dort gleich fertige Lösungen...
Code: Alles auswählen
define('IN_PHPBB', true);
$phpbb_root_path = '../forum/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
Code: Alles auswählen
$user->name = $userdata['username'];
$user->forumId = $userdata['user_id'];
$user->forumactive = $userdata['user_active'];
$user->autologin = $userdata['autologin'];
$user->sessionlogin = $userdata['session_logged_in'];
Dann findet man dort gleich fertige Lösungen...
-
- Ehemaliges Teammitglied
- Beiträge: 3005
- Registriert: 13.10.2002 15:15
- Wohnort: Wilhelmshaven
- Kontaktdaten:
Aus dem Array $userdata kann man aber noch wesentlich mehr raushohlen. http://www.phpbb.de/viewtopic.php?p=187876#187876Programmer hat geschrieben:und aus der Variabel $userdata bekommt man alle Informationen:Code: Alles auswählen
$user->name = $userdata['username']; $user->forumId = $userdata['user_id']; $user->forumactive = $userdata['user_active']; $user->autologin = $userdata['autologin']; $user->sessionlogin = $userdata['session_logged_in'];
-
- Ehemaliges Teammitglied
- Beiträge: 3005
- Registriert: 13.10.2002 15:15
- Wohnort: Wilhelmshaven
- Kontaktdaten: