Ankündigung

Einklappen
Keine Ankündigung bisher.

Benutzerverwanltung auf Dateibasis ??

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

  • Benutzerverwanltung auf Dateibasis ??

    Hi,

    also ich habe hier mal den Teil der Benutzverwaltung geschrieben, wo man sich einloggen kann. Die Datei, in der die ganzen Usernames und Passwords gespeichert werden, sieht wie folgt aus:

    user1%%pw1
    user2%%pw2
    etc.
    So, nun habe ich halt mal versucht, ein Script zu coden, welches auch auf Funktionen basiert, damit es nicht so viel Quelltext wird. Ich hoffe, jemand kann mir helfen:

    PHP-Code:
    <?php
    session_save_path
    ("./sessionsave/");
    session_start();

    // Variables:
    $pwfile="user_pw.txt";

    // automatischen Admin anlegen:
    if(!file_exists($pwfile)) {
        
    $fp=fopen($pwfile"a+");
        
    fputs($fp"user%%pw");
        
    fclose($fp);
    }    

    function 
    logged() {
        if(!
    $_SESSION['user'] OR !$_SESSION['pw']) {
            return 
    false;
        }
        else {    
            if(
    pruef($_SESSION['pw'], $_SESSION['user'])) {
                return 
    true;
            }
            else { 
                return 
    false;
            }
        }    
    }
    function 
    showform() {
        echo 
    "<form action='admin.php?action=pruef' action='post'>";
        echo 
    "

    USER: <input type='text' name='user'>

    "
    ;
        echo 
    "PW: <input type='text' name='pw'>

    "
    ;
        echo 
    "<input type='submit' value='Log-In'></form>";
    }

    function 
    pruef($postpw$postuser) {
        
    $p_pw strtolower(trim($postpw));
        
    $p_user=strtolower(trim($postuser));
        
        if(!
    $p_pw)   { $f "
    Kein Passwort angegeben
    "
    ; }
        if(!
    $p_user) { $f.= "
    Keinen Username angegeben
    "
    ; }
        
        if(
    $f) { echo "<center>
    "
    .$f."</center>"; }
        else {
            
    $data=file($pwfile);
            foreach (
    $data as $temp) {
                
    $e=explode("%%"$temp);
                if (
    $p_pw==$e[1] AND $p_user=$e[0]) {
                        
    $_SESSION['user']=$e[0];
                        
    $_SESSION['pw']=$e[1];
                        return 
    true;                    
                }    
            }
        }
        if(!
    $_SESSION['user'] OR !$_SESSION['pw']) {
            return 
    false;
        }    
    }

    function 
    logout() {
        foreach(
    $_SESSION as $temp) {
            unset(
    $temp);
            
    $temp=array();
        }
        
    session_destroy();
    }

    // AUSGABE:
    if($_GET["action"]=="pruef") {
        
    pruef($_POST['user'], $_POST['user']);
        echo 
    "<meta HTTP-EQUIV=Refresh content='0, URL=".$PHP_SELF."'>";
    }
    else {
        if (
    logged()) {
            echo 
    "Eingeloggt";
        }
        else {
            
    showform();
        }
    }
    Vielen Dank im Vorraus !!

    Achso, falls das hier nicht ins Fortgeschrittenen Forum gehört, bitte verschieben. Danke


  • #2
    ja .. wobei sollen wir dir denn helfen?
    privater Blog

    Kommentar


    • #3
      ich möchte ja, dass man sich einloggen kann. wenn ich nun auf submit drücke. Eigentlich müsste dann action=pruef ausgeführt werden, wie auch im Form Tag geschrieben, wird es aber nicht. In der URL steht dann:

      admin.php?user=user&pw=pw

      aber es soll doch admin?action=pruef ausgeführt werden, sodass man danach eingeloggt ist, sofern man richtige Login daten eingegeben hat. Siehst Du da irgendwo einen Fehler im Code ??

      Kommentar


      • #4
        ja wird es doch auch .. aber du leitest ja direkt weiter .. warum du das mit einem refresh machst verstehe ich zwar nicht .. wozu gibt es header()?
        privater Blog

        Kommentar


        • #5
          hm ja schon, aber den befehl Header() kann ich doch nur verwenden, wenn davor noch keine Ausgabe passiert ist oder >??
          und in diesem Fall ist ja davor schon eine Ausgabe oder ??

          Kommentar


          • #6
            nein. in deinem script ist keine ausgabe. nur ein echo .. aber das würde ja wegfallen, da der refresh nicht benötigt wird.
            vergiss nicht die leerzeilen vor und nach <?php / ?> wegzumachen.

            grüße ben.
            privater Blog

            Kommentar


            • #7
              ok danke, das werde ich heute abend mal ausprobieren

              Kommentar


              • #8
                so, hab jetzt mal die zeile
                echo "<meta ......>" durch
                HEADER("Location: admin.php");
                ersetzt, leider geht das auch nicht. Ich verstehe nicht, warum dann die URL aussieht, wie schon oben gesagt. ich hänge die Daten doch garnicht an die URL an ??
                weiß jemand rat ?

                Kommentar


                • #9
                  echo "<form action='admin.php?action=pruef' action='post'>";

                  das muss method post heißen nicht action...

                  Kommentar


                  • #10
                    ja ok danke, aber wenn ich nun das script aufrufe, dann bekomme ich immer wieder das formular angezeigt !!!

                    Kommentar


                    • #11
                      Der Beitrag wurde verschoben, wegen...
                      ... Postings im falschen Forum.

                      Bemerkung:
                      Die gestellte Frage entspricht nicht dem Wissensstand eines/einer Fortgeschrittenen.

                      moved to PHP - Anfänger

                      Den Fehler seh ich zwar spontan nicht, aber fürs step-by-step-debugging ist das Fortgeschrittenen-Forum nicht der richtige Ort.
                      mod = master of disaster

                      Kommentar


                      • #12
                        ich habs hinbekommen. der fehler war, dass ic in der Funktion die Variable $pwfile nicht global definiert habe.

                        Kommentar

                        Lädt...
                        X