Eigene Cookies nach anmeldung?

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
kiew
Mitglied
Beiträge: 7
Registriert: 13.04.2009 15:34

Eigene Cookies nach anmeldung?

Beitrag von kiew »

Hallo,

hab mir vor kurzem das phpBB3 Forum auf meinem Server installiert und so eingerichtet das der Login auf meinem Index ist (nicht der forum index, sondern meine eigene startseite), man darüber im forum einloggt und wieder danach wieder auf meinen index zurückkehrt. (externer login) Soweit so gut :) Nun hätte ich gerne noch Daten in cookies festgehalten, die dann auf dem index verwendet werden sollen. Diese cookies sollen erstellt werden sobald der phpBB login erfolgreich war. Nun die Frage: wo muss ich den befehl setcookie einfügen, damit dieser nach erfolgreichem login erstellt wird? Er soll immer erstellt werden auch wenn der haken bei Remember me nicht gesetzt wurde :grin:

Ich hoffe es kann mir jemand helfen :P

Edit: habs schon selbst gefunden *juhu* :D
Falls es noch jemand benötigt ich habe es in der ucp.php eingebunden:

Code: Alles auswählen

case 'login':
		if ($user->data['is_registered'])
		{
       
     
			redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
      
		}
      setcookie('login', $_POST['username'], time()+60*60*24*70);
		login_box(request_var('redirect', "index.$phpEx"));
    
	break;
Man kann auch die Formulardaten aus dem Forum mit z.B. $_POST['username'] verwenden :)
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17473
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: Eigene Cookies nach anmeldung?

Beitrag von Dr.Death »

Hallo,

auch hier gilt:

Wenn du einen eigenen Cookie setzen möchtest, dann mache das vor dem redirect.... ansonsten kommt der gerade angemeldete User nie an Deinem Code vorbei ;-)
kiew
Mitglied
Beiträge: 7
Registriert: 13.04.2009 15:34

Re: Eigene Cookies nach anmeldung?

Beitrag von kiew »

dann gehts ja nicht mehr ^^ Sprich die Cookies werden nicht gesetzt.
Ninos
Mitglied
Beiträge: 32
Registriert: 31.12.2008 18:18

Re: Eigene Cookies nach anmeldung?

Beitrag von Ninos »

jepp, so ist es, siehe meinen Beitrag ;)
Wäre nett, wenn uns da mal jemand helfen könnte, bin schon seit nem Monat am verzweifeln^^
piero
Mitglied
Beiträge: 476
Registriert: 10.11.2008 17:15
Wohnort: Schweiz

Re: Eigene Cookies nach anmeldung?

Beitrag von piero »

Pflanzt doch das ganze direkt in die Funktion ein, die den User einloggt...?
Die Funktion heisst auth::login() und ist in der Datei includes/auth.php ;)

@kiew: Dir empfehl ich, wie Ninos mit Session-Variablen zu arbeiten, weil dieses Cookie kann sich jeder selbst setzen und ist dann beim index eingeloggt ;)
Ninos
Mitglied
Beiträge: 32
Registriert: 31.12.2008 18:18

Re: Eigene Cookies nach anmeldung?

Beitrag von Ninos »

also du meinst, dass ich die auth.php Datei umändern sollte und nicht die ucp.php?
Ninos
Mitglied
Beiträge: 32
Registriert: 31.12.2008 18:18

Re: Eigene Cookies nach anmeldung?

Beitrag von Ninos »

ich weis jetzt ned, nach welchem Befehl oder php-Code ich mein Code einfügen soll, wäre nett, wenn mir da jemand helfen könnte :)

Danke schonmals im Vorraus,
Ninos
piero
Mitglied
Beiträge: 476
Registriert: 10.11.2008 17:15
Wohnort: Schweiz

Re: Eigene Cookies nach anmeldung?

Beitrag von piero »

Such doch ein wenig danach^^ Der phpBB-Code ist super lesbar ;)

Aber füg mal deinen Code mal nach diesen Zeilen ein:

Code: Alles auswählen

                // Successful session creation
                if ($result === true)
                { 
Ninos
Mitglied
Beiträge: 32
Registriert: 31.12.2008 18:18

Re: Eigene Cookies nach anmeldung?

Beitrag von Ninos »

und wo mach ich dann den start sesson managment?
Ich muss ja die Variable $user wie abfragen.
Hab die ganz an den Anfang eingebaut, dann kommt aber ne Fehlermeldung:
Fatal error: Call to a member function session_begin() on a non-object in /mnt/web7/33/25/51806325/htdocs/includes/auth.php on line 20
Ach ja, und schon beim ersten

Code: Alles auswählen

                    // Successful session creation
                    if ($result === true)
                    { 
 
einbauen, gell?
piero
Mitglied
Beiträge: 476
Registriert: 10.11.2008 17:15
Wohnort: Schweiz

Re: Eigene Cookies nach anmeldung?

Beitrag von piero »

Ninos hat geschrieben:Ach ja, und schon beim ersten
Also bei mir gibts die Stelle nur einmal...^^
Ninos hat geschrieben:und wo mach ich dann den start sesson managment?
Ich muss ja die Variable $user wie abfragen.
Hab die ganz an den Anfang eingebaut, dann kommt aber ne Fehlermeldung:
Stimmt, da ist dann ja immernoch der Gast-Account geladen... und an dieser Stelle nochmals alles neuzuladen bringts irgendwie nicht...^^
Vergiss, die Stelle^^

Sattdessen kannst du deinen Code in eine Funktion packen und diese Funktion bei erfolgreichem einloggen aufrufen.
Und zwar folgendermassen: (Habs zwar nicht getestet, sollte aber so funktionieren)

öffne: common.php
finde: Davor einfügen:

Code: Alles auswählen

$logio = request_var('logio', '');
if ($logio)
{
    log_login_logout($logio);
} 
öffne: includes/constants.php
finde:

Code: Alles auswählen

// Additional tables     
Danach einfügen:

Code: Alles auswählen

define('LOGIN_LOGOUT_TABLE',        $table_prefix . 'login_logouthistory'); 
öffne: includes/functions.php
finde:

Code: Alles auswählen

        if ($result['status'] == LOGIN_SUCCESS)
        {
            $redirect = request_var('redirect', "{$phpbb_root_path}index.$phpEx");
            $message = ($l_success) ? $l_success : $user->lang['LOGIN_REDIRECT'];
            $l_redirect = ($admin) ? $user->lang['PROCEED_TO_ACP'] : (($redirect === "{$phpbb_root_path}index.$phpEx" || $redirect === "index.$phpEx") ? $user->lang['RETURN_INDEX'] : $user->lang['RETURN_PAGE']);

            // append/replace SID (may change during the session for AOL users)
            $redirect = reapply_sid($redirect); 
Danach einfügen:

Code: Alles auswählen

            // set special cookie on the next page
            $redirect = $redirect . '&logio=login'; 
Finde: Davor einfügen:

Code: Alles auswählen

function log_login_logout($mode)
{
    if ($mode != 'login' AND $mode != 'logout')
        // evtl Sicherheitsmassnahmen gegen Missbrauch?
    {
        return false;
    }
     == 
    
    global $db, $user;
    
    $username; // was ist, wenn der Username sich ändert?
    $userid;   // Mit der Userid kanst du den Usernamen immer finden ;)
    $timestamp;
    $logindatum; // dasselbe wie $timestamp
    $ip;
    $from_site; // das wird immer ucp.php?mode=login sein
    $browser;
    $hoster; // <<---- Was ist das?^^
    
    $sql = 'INSERT INTO ' . LOGIN_LOGOUT_TABLE . 
        "(username, user_id, timestamp, datum, ip, from_site, browser, hoster, login_logout)
        VALUES
        ('$username', '$userid', '$timestamp', '$logindatum', '$ip', '$from_site', '$browser', '$hoster', '$mode')";
    $db->sql_query($sql);
} 
Du solltest noch deine Tabellenstruktur etwas überdenken, aber ansonsten sollte das ganze so funktionieren...
An der Funktion selbst musst du nicht mehr gross was verändern... Sie ist auch schon gerüstet fürs protokollieren des ausloggens ;)
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“