michi262
Goto Top

Will Variable in Cookie schreiben und auslesen

Hi

ich hab wieder ne frage und zwar ich will ein Admincenter schreiben. Da es hierbei 3 verschiedene Adminklassen geben soll wollte ich via jedes mal abfrage wenn er eine Seite aufruft ob in dem Cookie seine Berechtigung für diese Seite vorhanden ist.

Doch leider gibt es shcon Probleme bie der erstelllung des Cookies. Kann mir bitte einer helfen? Bin am verzweifeln.

Hier meine zeile wie ich den Cookei erstelle

<code="php">
setcookie("d-d_admincenter", $adminlevel, time()+(24*60*60));

das Adminlevel ist entweder 1, 2 oder 3.

Wäre nett wenn mir wer schreiben könnte iwe ich den Cookie richtig erstellt und wie ich das adminlevel auch wieder abfragen kann.

Gruß
Michi262

Content-ID: 94444

Url: https://administrator.de/contentid/94444

Ausgedruckt am: 16.11.2024 um 09:11 Uhr

Fritzchen
Fritzchen 14.08.2008 um 13:53:28 Uhr
Goto Top
Hallo Michi262

Also solche Adminsachen über Cockies zu regeln halte ich immer zu riskant. Es ist ja nicht immer davon auszugehen das jeder auch Cockies zuläßt.
Ich verwende hierfür immer eine Sessionverwaltung.

Tschau Fritzchen.
Arano
Arano 14.08.2008 um 14:34:01 Uhr
Goto Top
Ich rate auch zu der Sessionvariante aber nicht weil die Möglichkeit besteht das die Benutzer sie nicht akzeptieren sondern weil die Cookies Clientseitig gespeichert werden.
Und weil sie Clientseitig gespeichert werden, könnte man sie ganz einfach mit einem Texteditor bearbeiten, den Adminlevel hochsetzen und schon hast du Benutzer in deinem Adminbereich die dort nicht zu suchen haben.

Die Sessions werden Serverseitig gespeichert, das heist also das der Benutzer keinen Zugriff auf die Datei hat, demnach kann der Adminlevel auch nicht geändert werden.

!! Um eine Session jedoch einem Benutzer zuzuordnen, wird dem Client die Session-ID übergeben, die er bei jedem neuem Request mitsendet.
Entweder wird die Session-ID als Seitenparameter übertragen oder, sofern aktiviert, per Cookie !!

Zu den Cookies in PHP: PHP-Cookies
Zu den Sessions in PHP PHP-Sessions

~Arano
Michi262
Michi262 14.08.2008 um 20:37:43 Uhr
Goto Top
ok. danke ich werd mir das mal anschaun

Gruß
Michi26206
Michi262
Michi262 15.08.2008 um 17:02:29 Uhr
Goto Top
sry wegen doppelpost aber sonst ließts keiner.

ich hab mir das mit den Sessions mal angeschaut (weil ich es so machen will) bin abe rnicht shclau daraus geworden kann mir da evtl. wer helfen?

Gruß
Michi262
Arano
Arano 15.08.2008 um 19:34:10 Uhr
Goto Top
Wo hängt es denn ?

Vielleicht hilft dir dies hier ja etwas weiter:
<?php

// sessionmanagement aktivieren
// (muss vor der ersten ausgabe an den browser geschehen !)
session_start();


// wenn die session geloescht werden soll
if(isset($_GET['logout'])){  
      $_SESSION['name'] = NULL;  
      session_destroy();
}


// wenn das formular abgeschickt wurde, speichere "name" in eine Sessionvariable 
if(isset($_POST['name']) && trim($_POST['name'])!=''){  
      $_SESSION['name'] = trim($_POST['name']);  
}


// pruefen ob eine sessionvariable namens "name" existiert... 
if(isset($_SESSION['name'])){  
      // ...sessionvariable "name" exitier, gebe sie aus: 
      echo 'Ihr Name lautet: <b>'.$_SESSION['name'].'</b><br><br>  
            <a href="'.$_SERVER['PHP_SELF'].'?logout">l&ouml;schen</a><br>';  
} else{
      // ...sessionvariable existiert nicht, zeige formular:
      echo 'Keine Sessionvariable names "name" vorhanden !<br>  
            <form action="'.$_SERVER['PHP_SELF'].'" method="POST">  
              <input type="text" name="name" value=""><br>  
              <input type="submit" value="&Uuml;bernehmen">  
            </form><br>';  
}
?>

..oder dies hier: PHP-Quake.net-Tutorials - Sessions

Gruß Arano
Michi262
Michi262 16.08.2008 um 15:08:25 Uhr
Goto Top
Hi

danke für die Anleitung funktioniert nun bestens.

Noch ne frage: Wie lang gilt die Session und ist es möglich Sie für 24h gültig zumachen?

Gruß
Michi262
Arano
Arano 16.08.2008 um 18:32:35 Uhr
Goto Top
Gern geschehen.

Theoretisch schon.
Aber nur über Einstellungen in oder an der PHP.ini (ini_set()).
Und nur wenn der Browser in dieser Zeit nicht geschlossen wird, den eine Session ist nur innerhalb der Session (Seite aufrufen bis BROWSER geschlossen) gültig.

Zu der PHP.ini.
PHP hat eine Session Garbage Collection 1
  • "session.gc_probability"
  • "session.gc_divisor"
  • "session.gc_maxlifetime"
Aus den ersten beiden Direktiven wird ein wahrscheinlichkeitswert berchnet mit dem der GC beim aufrufen einer Seite ausgeführt wird.
Wenn der GC ausgeführt wird, werden die Session die älter als "gc_maxlifetime" sind gelöscht !

Eine andere Möglichkeit wäre in einem Cookie einen "Schlüssel" beim Besucher zu speichern über den du einen Besucher einmalig wiedererkennen kannst, worauf eine neue Session erstellt wird. Dieser Schlüssel wird natürlich mit der Neuerstellung der Session geändert.
(Diese Methode erfordert eine zusätzlich DB-Tabelle in der die Schlüssel und z.B. die ID des entsprechenden Benutzers stehen um ihn wieder einzuloggen).

Gruß Arano
Michi262
Michi262 16.08.2008 um 20:32:42 Uhr
Goto Top
Hi

danke für die Antowrt. Wärst du so lieb und könntest mir da auch noch ne Anleitung schreiben?

Gruß
Michi26206
Arano
Arano 16.08.2008 um 23:47:15 Uhr
Goto Top
Nein sorry, da muss ich passen....

...so komisch es klingen mag, aber das habe ich selber noch nicht gemacht :D
Solange "Relogins" habe ich bis jetzt nicht gebraucht, schließlich steigt auch das Risiko je länger die Zeitspanne ist in der man sich nicht wieder Authentifizieren muss.
(Kommt natürlich auch auf den Verwendungszweck an)

~Tobias
Michi262
Michi262 17.08.2008 um 17:58:20 Uhr
Goto Top
Hi

macht nix habes andes hinbekommen.

Ich hab noch ne frage normal muss er mir doch so das datum in ne Session speichern oder?

$time = date("y.m.d H:i:s ", time());  
$_SESSION['d-d_admincenter_login_time'] = trim($time);  

Gruß
Michi26206
Arano
Arano 17.08.2008 um 18:06:43 Uhr
Goto Top
Jap, normal schon, vorausgesetzt, am Anfang der Datei wird das Sessionmanagement gestartet !
( "session_start()" siehe erste Zeilen meines Beispiels weiter oben)

~Tobias
Michi262
Michi262 21.08.2008 um 00:23:15 Uhr
Goto Top
Hi

ja es steht am anfang. Geht jetzt auch ka warum es davor nicht ging.
Gruß
Michi262