Seite 1 von 1

Cookies setzen und löschen

Verfasst: 24.02.2010 10:59
von schumiel
Hallo,

ich möchte gern mit Einloggen/Ausloggen Cookies setzen/entfernen. Jedoch nicht die üblichen Forum-Cookies, sondern andere, die auf weitere Seiten der Domain wichtig sind.

Ich suchte dafür die Funktionen und setzte das hier einfach ein, das aber kein Setzen/Löschen durchführte.
setcookie("test","test", time()+(3600), "/", "domain.de", 0, true);
Ich bin für jeden Tipp dankbar. :)

Re: Cookies setzen und löschen

Verfasst: 03.03.2010 11:08
von schumiel
Weis keiner Rat? :(

Re: Cookies setzen und löschen

Verfasst: 03.03.2010 12:14
von Dr.Death
Hi,

nimmt Dein Browser überhaupt Cookies an ?
Wann werden Cookies gesendet ? ( Vor HTML ? )
http://php.net/manual/de/function.setcookie.php
setcookie() definiert ein mit den HTTP Header-Informationen zu übertragendes Cookie. Wie andere Header auch, müssen Cookies vor jeglicher Ausgabe Ihres Skriptes gesendet werden (dies ist eine Einschränkung des Protokolls). Das bedeutet, dass Sie diese Funktion aufrufen müssen, bevor Sie eine Ausgabe, dazu zählen auch <html>- oder <head>-Tags sowie jede Art von Whitespaces, übermitteln.

Re: Cookies setzen und löschen

Verfasst: 03.03.2010 14:04
von schumiel
Hm, ich merke, meine Frage/Anliegen war etwas schwammig formuliert - sorry.

Wie Cookies gesetzt werden, weiß ich - zeigt ja das Beispiel - und angenommen werden sie auch. Mir ging es darum, wenn man im Forum auf Ausloggen klickt, wird ja die Auslogg-Funktion technisch herangezogen. Dort möchte ich gern eigene nicht phpbb3-Forum-Cookies löschen lassen. Ich weiß nicht, ob ich dazu die falsche Funktion gewählt habe. Und das gleiche ist beim Einloggen. Logge ich mich über das Loginformular ein, möcht ich gern eigene Cookies, siehe Test-Cookie erstellen lassen. Nur eben wo muss ich das jeweils einfügen?

Re: Cookies setzen und löschen

Verfasst: 24.03.2010 16:59
von schumiel
Das Problem besteht immer noch. :(

Re: Cookies setzen und löschen

Verfasst: 16.04.2010 16:30
von schumiel
Habe ich mein Problem nicht verständlich beschreiben können?
Ich habe nachwievor noch keine Lösung gefunden. :(

Re: Cookies setzen und löschen

Verfasst: 17.04.2010 08:38
von StarWolf3000
Um Cookies zu erstellen/aktualisieren, setze das Datum in die Zukunft:

Code: Alles auswählen

setcookie("test", "test", time()+3600, "/", "domain.de", 0, true);
bzw. wenn httponly nicht unterstützt wird/werden soll, dann den letzten Parameter weglassen
Um Cookies zu löschen, setze das Datum in die Vergangenheit, bspw. aktuelle Zeit - 1 Stunde:

Code: Alles auswählen

setcookie("test", "", time() - 3600, "/", "domain.de", 0, true);

Re: Cookies setzen und löschen

Verfasst: 19.04.2010 18:20
von schumiel
Das weiß ich alles und nutze ich bereits selbst, siehe oben.

-> Es geht mir aber darum, wo ich das beim Login und beim Logout in welche Funktion reinpacken muss.

Re: Cookies setzen und löschen

Verfasst: 20.04.2010 07:24
von Dr.Death
Moin,

die phpBB3 Funktion zum ein/ausloggen und dem setzen/entfernen der Cookies befindet sich in der Datei: ucp.php

Suche dort nach:

Code: Alles auswählen

    case 'login':
        if ($user->data['is_registered'])
        {
            redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
        }

        login_box(request_var('redirect', "index.$phpEx"));
    break;

    case 'logout':
        if ($user->data['user_id'] != ANONYMOUS && isset($_GET['sid']) && !is_array($_GET['sid']) && $_GET['sid'] === $user->session_id)
        {
            $user->session_kill();
            $user->session_begin();
            $message = $user->lang['LOGOUT_REDIRECT'];
        }
        else
        {
            $message = ($user->data['user_id'] == ANONYMOUS) ? $user->lang['LOGOUT_REDIRECT'] : $user->lang['LOGOUT_FAILED'];
        }
        meta_refresh(3, append_sid("{$phpbb_root_path}index.$phpEx"));

        $message = $message . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a> ');
        trigger_error($message);

    break; 
Die Cookies selbst werden in der Datei includes/session.php gesetzt und entfernt.

Suche dort nach:

Code: Alles auswählen

        if (!$bot)
        {
            $cookie_expire = $this->time_now + (($config['max_autologin_time']) ? 86400 * (int) $config['max_autologin_time'] : 31536000);

            $this->set_cookie('u', $this->cookie_data['u'], $cookie_expire);
            $this->set_cookie('k', $this->cookie_data['k'], $cookie_expire);
            $this->set_cookie('sid', $this->session_id, $cookie_expire);

            unset($cookie_expire); 
...und weiter...

Code: Alles auswählen

	/**
	* Kills a session
	*
	* This method does what it says on the tin. It will delete a pre-existing session.
	* It resets cookie information (destroying any autologin key within that cookie data)
	* and update the users information from the relevant session data. It will then
	* grab guest user information.
	*/
	function session_kill($new_session = true)