azok: Sessions?

hi!

ich habe mal wieder ein problem, und zwar sessions. - habe mich mit diesen, außer jetzt etwas dazu gelesen, noch sehr wenig auseinandergesetzt, und bräuchte deshalb hilfe. und zwar bin ich gerade dabei bei meinem weblog einen bereich für den administrator zu scripten. grundsätzlich sieht mein weblog so aus:

switch(true) {
  case isset($_GET['admin']):
  //administrator-bereich, wie löschen, editieren...
  break;

case isset($_GET['comment']):
  //kommentare können gemacht werden
  break;

default:
  //nachrichten werden ausgegeben
}

sollte nun ?admin an der url hängen, wird eben der bereich des administrators aufgerufen. - das problem ist jetzt, wie sich das script "merken" kann, ob der administrator-bereich schon korrekt aufgerufen wurde, also das passwort korrekt eingegeben wurde, damit, solange diese bedingung erfüllt ist verschiedene funktionen nur für den administrator zu verfügung stehen... nun, und ich weiß eigentlich nicht wirklich, wie ich das jetzt angehen soll, zumal zudem vor dem switch eine ausgabe für ein css-stylesheet erfolgt. (sessions wären eigentlich damit gelaufen, oder?)

wäre über hilfe dankbar

lg
azok

--
Murphys Law: "Alles Schöne im Leben ist entweder illegal, ungesetzlich oder es macht dick."
Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:( n4:° ss:| de:] js:| ch:( sh:) mo:) zu:)
  1. hi,

    das problem ist jetzt, wie sich das script "merken" kann, ob der administrator-bereich schon korrekt aufgerufen wurde, also das passwort korrekt eingegeben wurde,

    wenn der login erfolgreich war, setze dir eine entsprechende session-variable - $_SESSION['eingeloggt'] = true; oder ähnliches.

    anschließend fragst du auf den folgeseiten ab, ob diese variable gesetzt und true ist - wenn ja, lasse gewünschte admin-funktionen zu; wenn nicht, leite bspw. auf die login-seite weiter.

    zumal zudem vor dem switch eine ausgabe für ein css-stylesheet erfolgt. (sessions wären eigentlich damit gelaufen, oder?)

    nein, natürlich nicht.

    du musst lediglich session_start() auf jeder seite aufrufen, bevor irgendeine art von ausgabe erfolgt (*) - wann du dann aber anschließend werte in die session einfügst, oder sie abprüfst, ist vollkommen egal.

    (*) wenn man explizit auf cookies verzichten möchte, nicht mal das - dann könnte session_start() an beliebiger stelle aufgerufen werden. aber immer die SID mit rumzuschleppen ist auch nicht immer optimal, cookies sind da idR. die bessere wahl.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi!

      danke! funktioniert alles wunderbar. war eigentlich gar nicht so schwer. - eine frage habe ich da noch, und zwar, wie ich am besten einen "logout"-button mache

      lg
      azok

      --
      Murphys Law: "Alles Schöne im Leben ist entweder illegal, ungesetzlich oder es macht dick."
      Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:( n4:° ss:| de:] js:| ch:( sh:) mo:) zu:)
      1. Hi azok!

        danke! funktioniert alles wunderbar. war eigentlich gar nicht so schwer. - eine frage habe ich da noch, und zwar, wie ich am besten einen "logout"-button mache

        Dies kann entweder über einen Link oder einen Submit-Button geschehen. Daraufhin fragst du eben mit isset() ab, ob der Link angeklickt (bzw. der Button gedrückt) wurde und fährst dann wie folgt fort.

        Grüße,
        Fabian St.

        --
        Meine Website: http://fabis-site.net
        --> XHTML, CSS, PHP-Formmailer, Linux
        ---------------------
        fabi@erde ~# whatis spam
        spam: nothing appropriate
        ---------------------
        Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
        1. hi!

          Dies kann entweder über einen Link oder einen Submit-Button geschehen. Daraufhin fragst du eben mit isset() ab, ob der Link angeklickt (bzw. der Button gedrückt) wurde

          achja, stimmt... - hatte leider ein blackout...

          lg
          azok

          --
          Murphys Law: "Alles Schöne im Leben ist entweder illegal, ungesetzlich oder es macht dick."
          Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:( n4:° ss:| de:] js:| ch:( sh:) mo:) zu:)
  2. Hallo!

    sollte nun ?admin an der url hängen, wird eben der bereich des administrators aufgerufen. - das problem ist jetzt, wie sich das script "merken" kann, ob der administrator-bereich schon korrekt aufgerufen wurde, also das passwort korrekt eingegeben wurde, [...]

    Ich stelle das jetzt mal schematisch dar:

    1.
    Formular: Eingabe des Benutzernamens und Passwort

    2. Checken ob die Eingabe korrekt ist.
    if($_POST['passwort']==$passwort AND $_POST['user']==$user) {
       $_SESSION['login'] = true; // korrekt authentifiziert
       header("Location: http://www.domain.de/admin/admin.php?" . session_name() . "=" . session_id());
    }
    else {
       Fehler, nochmalige Eingabe
    }

    3. Nun wird auf jeder Seite, wo man es für nötig hält, getestet ob man korrekt eingeloggt ist. z.B. auf /admin/admin.php
    if(!isset($_SESSION['login') OR !$_SESSION['login')) {
       -> zum Logout
    }
    Hier folgt jetzt alles was der Admin darf!

    zumal zudem vor dem switch eine ausgabe für ein css-stylesheet erfolgt. (sessions wären eigentlich damit gelaufen, oder?)

    Verstehe ich jetzt nicht ganz.

    André Laugks

    --
    Die Frau geht, die Hilti bleibt!