Ankündigung

Einklappen
Keine Ankündigung bisher.

Login-Script Folge 387 :-)

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gast-Avatar
    Ein Gast erstellte das Thema Login-Script Folge 387 :-).

    Login-Script Folge 387 :-)

    Hallo,
    ich habe ein LoginScript gebastelt welches auch gut funzt. Wenn ich mich anmelde werde ich automatisch auf die Homepage weitergeleitet.
    Wenn ich nun aber den Browser schliesse und einen neuen öffne, dann über den Verlauf die geschützten Seiten aufrufe (oder einfach die adresse für ne geschützte Seite eingebe) kann ich mich wieder auf der kompletten Website bewegen ohne mich vorher anmelden zu müssen.
    Wie verhindere ich dass???
    Sorry falls die Frage schon einmal gestellt wurde aber ich habe auf anhieb mit der Suchfunktion nichts dergleichen gefunden...

    ThX an alle die mir helfen

    Maggus

  • Gast-Avatar
    Ein Gast antwortete
    Zitat von General Alex
    ...ein Logout programmieren, damit die Session nicht bleibt. Hier gleich meine logout.php:
    Etwas suboptimal.
    1. kannste das HTML weglassen, weil das Script beim exit beendet wird.
    2. solltest Du noch dafür sorgen, daß das Sessionfile garantiert nicht mehr beinhaltet.

    Beim session_write_close() bin ich mir nich ganz sicher, ob es vor oder nach session_destroy() hin gehört.
    Code:
    <?php
    @session_start ();
    $_SESSION = array(); # alle Vars löschgen.
    
    # entweder hier
    session_write_close ();
    ###
    
    session_destroy ();
    
    # oder hier
    session_write_close ();
    ###
    
    header ("Location: http://localhost/login.php");
    exit;
    ?>

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von burner.nst
    ein bisschen eigenartig nach exit; noch htmltags einzufügen@general alex
    Sorry, ich hatte beim programmieren einfach bei jeder Datei die HTML-Code kopiert !

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    ok tHx :P

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    nein der kommt nur wenn einer sich ausgeloggt hat (auf den logout link geklickt hat)

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    und dieser Logout-Schnipsel den häng ich auch über jede Seite?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    ein bisschen eigenartig nach exit; noch htmltags einzufügen@general alex

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von maggus
    Ja hab ich von dir
    Entschuldige die blöde Frage, aber was muss ich jetzt ändern damit es funktioniert???
    Kein Problem , ich freue mich, wenn ich jemandem helfen kann! Du musst noch ein Logout programmieren, damit die Session nicht bleibt. Hier gleich meine logout.php:
    Code:
    <?php
    @session_start ();
    session_destroy ();
    header ("Location: http://localhost/login.php");
    exit;
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html>
    <head><title>Login-System</title></head>
    </html>
    MfG
    Alex

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Du hattest nirgendswo Session Destroy wenn ich das so beim übergesehen gelesen habe, dann wird die Session auch nicht beendet!

    Gruß Garry

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ja hab ich von dir
    Entschuldige die blöde Frage, aber was muss ich jetzt ändern damit es funktioniert???

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von maggus
    Code:
    <?php 
    @session_start (); // Die Session wird gestartet. 
    if ((!isset ($_SESSION["login"])) or (!$_SESSION["login"])) { 
       // Hier wird überprüft, ob die Session überhaupt vorhanden ist und wenn ja, 
       // ob das Login "True" ist. Wenn nicht, wird man wieder auf die Login-Seite 
       // geleitet. 
       header ("Location: http://localhost/login.php"); 
       exit; 
    } 
    ?>
    Dieser da hast du von mir und zwar 100%!
    $_SESSION["login"] ist TRUE, wenn du nicht auf die login.php geleitet wirst.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Also ich hab jetzt mal versucht den script aus diesem Thread :http://www.phpfriend.de/forum/viewto...light=sessions

    an meine Seite anzupassen.

    Meine Login.php
    Code:
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Login</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <? 
    session_start(); 
    include 'sessionhelpers.inc.php'; 
    if (isset($_POST['login'])) 
    { 
        $userid=check_user($_POST['username'], $_POST['userpass']); 
        if ($userid!=false) 
            login($userid); 
    		@session_start (); // ... die Session gestartet und ... 
            $_SESSION["login"] = True; // ... die Sessionsvariable auf "True" gesetzt. 
      
             
    
        else 
            echo 'Ihre Anmeldedaten waren nicht korrekt!';
    		$_SESSION["login"] = False; 
    } 
    if (!logged_in()) 
        echo '<form method="post" action="index.php"> 
            <label>Benutzername:</label><input name="username" type="text">
     
            <label>Passwort: </label><input name="userpass" type="password" id="userpass">
     
            <input name="login" type="submit" id="login" value="Einloggen"> 
        </form>'; 
    else 
        echo 'Ausloggen'; 
    echo '
    
    Check'; 
    ?> 
    </head>
    
    <body>
    
    <?
    ob_end_flush();
    ?>
    </body>
    </html>
    Meine Sessionhelper.inc.php

    Code:
    <? 
    function connect() 
    { 
        $con= mysql_connect('localhost','root','') or die(mysql_error()); 
         mysql_select_db('secu',$con) or die(mysql_error()); 
    } 
    
    function check_user($name, $pass) 
    { 
        $sql="SELECT UserId 
        FROM users 
        WHERE UserName='".$name."' AND UserPass=MD5('".$pass."') 
        LIMIT 1"; 
        $result= mysql_query($sql) or die(mysql_error()); 
        if ( mysql_num_rows($result)==1) 
        { 
            $user=mysql_fetch_assoc($result); 
            return $user['UserId']; 
        } 
        else 
            return false; 
    } 
    
    function login($userid) 
    { 
        $sql="UPDATE users 
        SET UserSession='".session_id()."' 
        WHERE UserId=".$userid; 
         mysql_query($sql); 
    } 
    
    function logged_in() 
    { 
        $sql="SELECT UserId 
        FROM users 
        WHERE UserSession='".session_id()."' 
        LIMIT 1"; 
        $result= mysql_query($sql); 
          return ( mysql_num_rows($result)==1); 
    } 
    
    function logout() 
    { 
        $sql="UPDATE users 
        SET UserSession=NULL 
        WHERE UserSession='".session_id()."'"; 
         mysql_query($sql); 
    } 
    
    connect(); 
    ?>
    Logged_in.php

    Code:
    <?
    session_start(); 
    
    
    ?>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Login ueberpruefen</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <? 
    
    include 'sessionhelpers.inc.php'; 
    echo 'Sie sind '; 
    if (!logged_in()) 
        echo 'nicht '; 
    echo 'eingeloggt.
    
    '; 
    echo 'Start'; 
    ?> 
    <?
    ob_end_flush();
    ?>
    Auf jede meiner Seiten habe ich nun diesen Code oben reingesetzt:

    Code:
    <?php 
    @session_start (); // Die Session wird gestartet. 
    if ((!isset ($_SESSION["login"])) or (!$_SESSION["login"])) { 
       // Hier wird überprüft, ob die Session überhaupt vorhanden ist und wenn ja, 
       // ob das Login "True" ist. Wenn nicht, wird man wieder auf die Login-Seite 
       // geleitet. 
       header ("Location: http://localhost/login.php"); 
       exit; 
    } 
    ?>
    Wenn ich mich jetzt anmelde gehts nicht zur Startseite meiner Website sondern zurück aufs Login.php.
    Dass müsste ja dann heisen, dass die session nicht True ist. Oder?
    Was mache ich falsch???

    ThX für eure Geduld mit einem Anfänger wie mir

    Maggus

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Also, du musst in jeder Datei überprüfen, ob du eingeloggt bist.

    Das geht am besten, wenn du die Daten mit Sessions weitergibst und dann in jeder Datei ausließt und überprüfst, ob die Daten richtig sind.

    Sessions wurden schon 100emal besprochen, such einfach mal danach und modifiziere dein Scripts!

    wilko

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    sessions

    Einen Kommentar schreiben:

Lädt...
X