[PHP] Nur von bestimmten Seiten, Seitenzugriff zulassen!?



  • Ich würde hier ein Session System (Verfallszeit ziemlich klein ansetzen) mit zusätzlicher Absicherung der IP benutzen. Dann kannst du relativ sicher sagen, ob der Benutzer auf der vorherigen Seite war oder nicht. Ob da jedoch noch ein Schritt dazwischen war, kannst du nicht sagen.

    Wie meinst du das mit der zusätzlichen Absicherung durch die IP? Habe im Bereich der Sessions leider nur sehr rudimentäre Kenntnisse. Werde mir das jetzt mal anlesen. Ach ja, ein kleines Beispiel mit der zusätzlichen Absicherung durch die IP wäre ganz nett!
    Dankeschön!
    MfG

    Tobsen



  • Original erstellt von Tobsen:
    **Wie meinst du das mit der zusätzlichen Absicherung durch die IP? Habe im Bereich der Sessions leider nur sehr rudimentäre Kenntnisse. Werde mir das jetzt mal anlesen. Ach ja, ein kleines Beispiel mit der zusätzlichen Absicherung durch die IP wäre ganz nett!
    Dankeschön!
    MfG

    Tobsen**

    Also Bsp .. !

    User1 geht auf deine Seite kriegt die Session : 3432545525235 <-- die ist gültig bis er die Seite verlässt ... !

    Wenn jetzt User2 auf deine Seite geht und die session 34565656465 durch die obige Ersetzt ist er wie User1 ... sprich er kann ... walten und machen und es geht auf User1 seine Rechnung ...

    Durch ne Ip absicherung wird dann abgesichert .. das User1 den gleichen Rechner(Einzelplatzinetzugang) bzw den gleichen Zugang(multi rechner inet zugang mit router btw proxy) benutzt !

    [ Dieser Beitrag wurde am 20.03.2003 um 10:07 Uhr von 1ntrud0r editiert. ]



  • ok, klingt einleuchtend, danke!



  • Folgender Code funktioniert irgendwie nicht. Ich bekomme das mit den Headern immer nicht so hin. Ich weiß auch immer noch nicht wie ich das technisch mit der ID-Absicherung hinbekomme!? Kann sich vielleicht jemand meinen Probs annehmen? Wäre echt nett!
    Hier mal der Code

    <?php
            include("class/control.cls.php4"); 
            include("class/mysql.cls.php4");
    
     if($_POST['submit'])
     {
    
      $username = $_POST['username'];
      $password = $_POST['password'];
    
      $res = CMysql::query("127.0.0.1", "username","password", "database", "SELECT * FROM users WHERE username = '$username' AND password = '".md5($password)."'");
      if(!$result = mysql_fetch_object($res))
      {
        $error = array("Mit diesem Passwort und/oder Benutzernamen sind Sie nicht berechtigt, diese Seite zu betreten.");
    
        control::createErrorBox("Zutritt verweigert:", $error);
      }
      else{
        session_start();
        session_name(md5($username));
        header("location: index.php4");
        }
     }
    
    ?>
    


  • Wie kann ich das jetzt machen, dass die session z.B. nach 10 Minuten beendet wird? Gibts da 'nen speziellen Befehl oder wie?
    MfG

    Tobsen



  • Dafür gibt es in der php.ini folgende Einstellung: session.gc_maxlifetime
    Allerdings steht in der PHP-Doku dazu auch noch:

    Anmerkung: Falls Sie die standardmäßige dateibasierte Session-Prozedur verwenden, muss Ihr Dateisystem die Zugriffszeiten (atime) verfolgen. Windows FAT tut dies nicht. Sie müssen sich daher einen anderen Weg einfallen lassen, um die 'Müllentsorgung' Ihrer Session zu erledigen, wenn Sie an ein FAT-Dateisystem gebunden sind oder an irgendein anderes Dateisystem, das keine atime-Kontrolle bietet.

    Du könntest also zum Beispiel in der Session auch die Zeit des letzten Zugriffs speichern und dann, falls diese zu lange her ist session_destroy(); aufrufen 🙂



  • Auf meinem offline-server ist das kein ding, glaub aber nicht, dass ich wenn ich mir webspace miete Zugriff auf die php.ini habe. Also muss ich es wohl mit session_destroy machen. Welche Funktion zum Ermitteln der Zeit benutzt du denn dabei? Ich frage mich nämlich wie das funktionieren soll die Zeit zu messen ohne das der Browser 'ne Anfrage an den Server schickt, denn die ganzen php-befehle werden doch schließlich geparst bevor sie im Browser angezeigt werden.


  • Mod

    die meisten websapce anbieten kümmern sich schon um das zerstören der sessions - denn schließlich müllt ihnen das ja die platte zu, da die sessions (defaultmäßig) in einem PHP unterordner gespeichert werden.



  • @shade ja, bei mir ist es aber wichtig, dass die Zeit recht kurz gehalten wird, deswegen würde ich das gerne selber bestimmen könnnen.



  • Du könntest die Funktion ini_set(), mal ausprobieren 🙄
    Falls du viele Zugriffe hast kannst du die Sessions auch in einer DB verwalten. Ansonsten halt mit time() einen Timestamp holen und den halt auf jeder Seite wieder neu setzen. Oben im Script kannst du ja dann überprüfen, wie viele Sekunden der letzte Zugriff her ist und falls er zu lange her ist die Session zerstören 🙂


  • Mod

    Original erstellt von Tobsen:
    @shade ja, bei mir ist es aber wichtig, dass die Zeit recht kurz gehalten wird, deswegen würde ich das gerne selber bestimmen könnnen.

    notfalls der session einfach einen timestamp mitgeben wann sie erstellt wurde - und jeder session die outdated ist wird ignoriert.


Anmelden zum Antworten