Benutzerverwaltung auf Dateibasis

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

  • Benutzerverwaltung 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 
    "<br><br>USER: <input type='text' name='user'><br><br>";
        echo 
    "PW: <input type='text' name='pw'><br><br>";
        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 "<br>Kein Passwort angegeben<br>"; }
        if(!
    $p_user) { $f.= "<br>Keinen Username angegeben<br>"; }
        
        if(
    $f) { echo "<center><br>".$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 !!

    Edit: Achso, vllt sollte ich noch mein Problem posten ?? Also:

    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. Seht Ihr da irgendwo einen Fehler im Code ??

  • #2
    PHP-Code:
     pruef($_POST['user'], $_POST['user']);

    // aendern in

     
    pruef($_POST['pw'], $_POST['user']); 
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

    Kommentar


    • #3
      hm, ja danke, schonma en fehler. aber trotzdem geht es noch nicht !!!
      er ruft immer noch die url mit get-anhängen auf

      Kommentar


      • #4
        so, 1 fehler hab eich noch gefunden:

        <form .... method="post"> und nicht action="post", aber dadurch wurde das problem nicht behoben. die URL wird zwar nicht mehr mit angehängten Daten aufgerufen, aber das Formular wird immer angezeigt !!!

        Kommentar


        • #5
          DEBUGGING
          [color=blue]MfG Payne_of_Death[/color]

          [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
          [color=red]Merke:[/color]
          [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

          Murphy`s Importanst LAWS
          Jede Lösung bringt nur neue Probleme
          Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
          In jedem kleinen Problem steckt ein großes, das gern raus moechte.

          Kommentar


          • #6
            @Payne_of_Death:

            error_reporting(E_ALL); oder was meinst du. Wenn ich das an den Anfang schreibe:

            Notice: Undefined index: action in C:\apachefriends\xampp\htdocs\Benutzsystem\admin.php on line 67

            Notice: Undefined index: user in C:\apachefriends\xampp\htdocs\Benutzsystem\admin.php on line 18

            Das wars, auch wenn ich etwas in das Formular eingebe und es abschicke ..

            Kommentar


            • #7
              PHP-Code:
                  echo "<form [B]action='admin.php'[/B] action='post'>";
                  echo 
              "<br><br>USER: <input type='text' name='user'><br><br>";
                  echo 
              "PW: <input type='text' name='pw'><br><br>";
                  echo 
              "<input type='submit' value='Log-In' [B]name='pruef'[/B]></form>"
              Ich hätte es so gemacht und auf $_POST['pruef'] geprüft.
              //Wenig Erfahrung und nicht getestet
              Ich meine irgendwo mal gelesen zu haben, dass es zu Problemen führen kann, wenn man in FORM Get-Variablen anhängt. Oder war das in header(Location)? Keinen Plan mehr. Aber versuchs mal so wie oben.

              Gruß

              Rootkilla

              Kommentar


              • #8
                daran lag das nicht. habe den fehler aber gefunden:

                ich muss natürlich $pwfile in der Funktion pruef als Global definieren ^^

                Kommentar

                Lädt...
                X