Login

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

  • Login

    So hab mal ein news Login Script gemacht was md5() etc. hat

    Nur will ich jetzt wissen ob ich mit dem Script auf dem richtige weg bin oder nicht. Außerdem würde ich gerne wissen wie ich die gespeicherte $_Session['id'] weitergebe. Dort ist die Id des eingeloggten Users gespeichert.

    PHP-Code:
    include('config.php');

    if(
    $ac == logout){
    session_destroy();
    echo 
    "Vielen Dank für deinen Besuch<br><br>Du bist nun ausgeloggt";

    }if(
    $ac == checklogin){

    if(empty(
    $_POST['id']) OR empty($_POST['passwort'])){
    echo 
    "Die Login Formulare wurden nicht korrekt asgefüllt";
    }
        else{
        
    session_start();
        
    //Das Passwort wird in MD5() geschrieben
        
    $pass=md5($_POST[passwort]);
            
        
    //Auslesen
        
    $sql=mysql_query("Select id,pass from newshoster_user where id='$id' and pass='$pass'");
            if (
    mysql_num_rows ($sql) > 0) {
            
            
    $_SESSION['ID'] = $_POST['id'];    
            echo 
    "Willkommen im Club ".$_SESSION['ID']."";
            
            echo 
    "<meta http-equiv=\"refresh\" content=\"4;URL=login2.php?ac=news&sessid=".session_id()."\">";
            }
                else{
                echo 
    "Daten waren Falsch";
                }
        
        
        }
        
    }if(
    $ac == news){





    Danke

  • #2
    Dein session_start() gehört ganz an den Anfang deines Scripts.

    if($ac == logout){ ??? ist logout eine konstante oder ein String???
    Konstanten sollten großgeschrieben sein Strings gehören in " oder '

    $id ist nicht definiert...
    Die sessid würde ich als SID weitergeben

    Du kannst das md5 im sql machen:
    Select id,pass from newshoster_user where id='$id' and pass=MD5('$pass')

    Aber ich würde Dir raten immer so zu schreiben:
    PHP-Code:
    $sql "Select id,pass from newshoster_user where id='$id' and pass=MD5('$pass')";
    mysql_query($sql) or die(mysql_error()); 
    achja und benutz die mysql_escape_string() Funktion
    Zuletzt geändert von MelloPie; 24.07.2003, 23:30.
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Hi

      es gibt ein paar Fehler in deiner Schreibweise, aber sonst finde ich keine Fehler (vor allem keine schwerwiegende)...

      PHP-Code:

      if ($ac == "logout"// würde ich immer so schreiben

      $pass=md5($_POST['passwort']);

      $sql=mysql_query("Select id,pass from newshoster_user where id=$id and pass='$pass'"); // Zahlen muss man nicht in ' ' setzen

      echo "Willkommen im Club ".$_SESSION['ID'].""//redest du deine Mitglieder immer mit Nummern an?? ;) 
      Sessionvars gibst du automatisch weiter wenn du eine Session auf einer Seite (!!!sofern sie die gleiche ist!!!) mit session_start(); startest.


      cya CrazyPip

      Kommentar


      • #4
        Danke euch beiden. Das mit dem mysql_error ist echt ne feine sache. Und ich dachte immer das ich sowas nicht brauche

        So nun hab ich alles nochmal verbessert. Allerdings brauche ich die lange Session ID nicht übergeben da ich sie doch garnicht brauche. Das was in der Session gespeichert ist, ist die ID die ich in der Session speicher lasse.
        Wenn ich die Session übergebe, kann es ja noch zu problemen kommen, da manche User die URL weitergeben. Oder ist da ein denkfehler?

        Außerdem würde ich gerne wissen wie man die ständige Überprüfung der $_SESSION['id'] reduzieren kann.

        Hier nochmal der Quellcode, mit verbesserten Version und Musternote


        PHP-Code:
        session_start(); //Session wird gestartet
        include('config.php');

        if(
        $ac == "logout"){
        session_destroy();
        echo 
        "Vielen Dank für deinen Besuch<br><br>Du bist nun ausgeloggt";

        }if(
        $ac == "checklogin"){

        if(empty(
        $_POST['id']) OR empty($_POST['passwort'])){
        echo 
        "Die Login Formulare wurden nicht korrekt asgefüllt";
        }
            else{        
            
        //Überprüfen und Auslesen
            
        $sql=mysql_query("Select id,pass from newshoster_user where id=$id and pass=MD5('$passwort')") or die(mysql_error());
                if (
        mysql_num_rows ($sql) > 0) {
                
                
        $_SESSION['ID'] = $_POST['id'];            
                echo 
        "<meta http-equiv=\"refresh\" content=\"0;URL=login2.php?ac=news\">";
                }
                    else{
                    echo 
        "Daten waren Falsch";
                    }
            
            
            }
            
        }if(
        $ac == "news"){

        //Überprüfen ob überhaupt die Session exestiert
        if(isset($_SESSION['ID'])){
        //Vergabe eines einfacheren Namens
        $id="".$_SESSION['ID']."";

        //Auslesen des Namens
        $sql=mysql_query("Select * from newshoster_user where id=$id") or die(mysql_error());
        $userdaten mysql_fetch_array($sql);
        echo 
        "Herzlich Willkommen $userdaten[vorname] $userdaten[nachname]";

        }

            else{
            echo 
        "<meta http-equiv=\"refresh\" content=\"4;URL=login2.php?ac=logout\">";
            }



        Zuletzt geändert von Gehirndoktor; 25.07.2003, 02:47.

        Kommentar

        Lädt...
        X