ilch Forum » Allgemein » HTML, PHP, SQL,... » Auslesen von Pw für Loggin funtzt nicht

Geschlossen
  1. #1
    User Pic
    sven123 Mitglied
    Registriert seit
    07.07.2004
    Beiträge
    16
    Beitragswertungen
    0 Beitragspunkte
    Also!Ich programmiere noch net sehr lange php,doch ich habe schon eib Problemchen.Ich programmiere ein Registrierungs Progg bei dem mein seinen Namen und ein Pw eingeben muss,der Name wird noch nicht berücksichtigt.Die Daten werden in einer Datei abgelegt,in einer Extrafile jeweils Name und Passwort(PW).Das problem besteht jetzt darin wenn sich mehrer Leute angemeldet haben wird das Pw beim Loggin nicht gefunden warum.Der Code für die Ameldung:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    
    <html>
    <head>
    	<title>form4</title>
    </head>
    
    <body>
    <?
    $ok=$HTTP_POST_VARS["pw"];
    $ok1=$HTTP_POST_VARS["pw1"];
    $nom=$HTTP_POST_VARS["name"];
    if($ok==$ok1)
    {
    $datei=fopen("anmeldungen.txt","a");
    fwrite($datei,$ok."%");
    fclose($datei);
    $datei1=fopen("anmeldungenname.txt","a");
    fwrite($datei1,$nom);
    fclose($datei1);
    }
    else
    {
    echo "Sie müssen ihr Passwort bestätigen!";
    }
    ?>
    </body>
    </html>

    Code für den Loggin:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    	<title>form5</title>
    </head>
    
    <body>
    <?
    $datei=fopen("anmeldungen.txt","r");
    $loginfile=fgets($datei,200);
    $ok=$HTTP_POST_VARS["pw"];
    if($ok==$loginfile)
    {
    echo"eingelogt";
    }
    else
    {
    echo"Error";
    }
    ?>
    
    
    </body>
    </html>






    Zuletzt geändert von sven123 am 07.07.2004 - 22:18
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    manuel ilch-Gründer
    Registriert seit
    22.03.2003
    Beiträge
    4.260
    Beitragswertungen
    4 Beitragspunkte
    hi, also mhhm gibts für sowas denn kein gutes tutorial das glaub ich ja fast nicht zwinker

    also zu deinem code, da sind nen paar denkfehler drin. überleg zum beispiel mal was passiert wenn 2 leute das gleiche password haben?!...

    wie willst du jetzt einem password einen namen zu ordnern oder willst du dann sagen:

    hallo Password

    so wie du die sachen speicherst findest du den namen ja gar nicht raus...

    also erstmal würd ich daher die daten so speichern:

    $datenToSave = $ok.'#'.$nom."\n";
    $datei=fopen("anmeldungen.txt","a");
    fwrite($datei,$datenToSave);
    fclose($datei);


    jetzt wird password + name in der anmedlung.txt gespeichert... das ansich ist ja schon gut, nur wenn jemand das script kennt und die anmeldungen.txt findet auf deinem server dann kann er ja das password raus bekommen dadurch das er die datei einfach anzeigen lässt!! sehr unschön!! zwinker

    also verschlüsseln wir das password noch mit

    md5();

    jetzt sähe der code zum speichern dann so aus:

    $password = md5($_POST['pw']);

    $datenToSave = $password.'#'.$_POST['name']."\n";
    $datei=fopen("anmeldungen.txt","a");
    fwrite($datei,$datenToSave);
    fclose($datei);

    so jetzt ist das password also verschlüsselt gespeichert das ist schonmal viel besser....


    jetzt kommen wir zum anmelden und überprüfen ob das password stimmt:

    erstmal lesen wir die datei 'anmeldungen.txt' in ein array ein damit wir die daten schön zu verfügung haben.

    $daten = file('anmeldungen.txt');

    so jetzt könne wir diese daten ordentlich verwerten. in dem wir mit foreach() das array durchlaufen dann müssen wir ja noch die trennung # weg bekommen durch explode('#',$var);

    und dann können wir das password überprüfen und haben auch direckt den benutzer name....

    $md5Pw = $_POST['pw'];

    foreach($daten as $value )
    {

    $ins = explode('#',$ins);

    if ( $md5Pw == trim($ins[0]) ) {
    $benutzername = trim($ins[1]);
    }



    }
    if ( empty($benutzername) ) {
    echo 'Das password hat zu keinem namen gestimmt';
    } else {
    echo 'Du hast dich eingeloggt';
    }

    also naja jetzt versteh erstmal das alles +g+ ...

    tirm() entfernt leerzeichen am ende und am anfang eines strings und das md5Pw machen wir weil wir die passwörter aus der datei ja mit dem eingegebenen überprüfen wollen, in der datei liegen die passwörter aber nur verschlüsselt vor deshalb müssen wir das eingegebene $_POST['pw'] auch verschlüsseln.

    hoffe es geht alles und ich konnte dir helfen +g+
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    sven123 Mitglied
    Registriert seit
    07.07.2004
    Beiträge
    16
    Beitragswertungen
    0 Beitragspunkte
    Danke ich versuch jetzt mal das alles zu verdauen
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    sven123 Mitglied
    Registriert seit
    07.07.2004
    Beiträge
    16
    Beitragswertungen
    0 Beitragspunkte
    Danke erstmal ilch!Das mit dem auslesen habe ich noch nicht wirklich verstanden und es funtzt auch nicht richtig.
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    
    <html>
    <head>
    	<title>form5</title>
    </head>
    
    <body>
    <?
    $daten = file('anmeldungen.txt');
    $md5Pw = $_POST['pw'];
    
    foreach($daten as $value ) 
    {
    $ins = explode('#',$ins);
    
    if ( $md5Pw == trim($ins[0]) ) {
    $benutzername = trim($ins[1]);
    }
    }
    if ( empty($benutzername) ) {
    echo 'Das password hat zu keinem namen gestimmt';
    } else {
    echo 'Du hast dich eingeloggt';
    }
    ?>
    </body>
    </html>
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    manuel ilch-Gründer
    Registriert seit
    22.03.2003
    Beiträge
    4.260
    Beitragswertungen
    4 Beitragspunkte
    meld dich mal mit ein paar namen an und zeig mir hier dann die anmelden.txt
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    sven123 Mitglied
    Registriert seit
    07.07.2004
    Beiträge
    16
    Beitragswertungen
    0 Beitragspunkte
    Hier ist der Inhalt der Txt Datei:
    2be9bd7a3434f7038ca27d1918de58bd#sveni
    f0282b5ff85e7c9c66200d780bd7e72e#sven
    39ea40e164f970c54b0530436d5a9f7a#ingolf
    e35cf7b66449df565f93c607d5a81d09#sauron
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    manuel ilch-Gründer
    Registriert seit
    22.03.2003
    Beiträge
    4.260
    Beitragswertungen
    4 Beitragspunkte
    a blöder fehler

    $ins = explode('#',$ins);

    diese zeile musste mal in:


    $ins = explode('#',$value);


    ändern sonst kanns gar nicht klappen, ansonsten wären fehlermeldungen cool wenn welche kommen.
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    sven123 Mitglied
    Registriert seit
    07.07.2004
    Beiträge
    16
    Beitragswertungen
    0 Beitragspunkte
    Danke!Es kam aber keine Fehlermeldung
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    manuel ilch-Gründer
    Registriert seit
    22.03.2003
    Beiträge
    4.260
    Beitragswertungen
    4 Beitragspunkte
    ja gehts jetzt oder was?+g+
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    sven123 Mitglied
    Registriert seit
    07.07.2004
    Beiträge
    16
    Beitragswertungen
    0 Beitragspunkte
    Ne geht trotz der änderung noch nicht
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    sven123 Mitglied
    Registriert seit
    07.07.2004
    Beiträge
    16
    Beitragswertungen
    0 Beitragspunkte
    Hier noch mal der ganze Code.
    Das HTML Formular für die Anmeldung:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    
    <html>
    <head>
    	<title>Anmeldung</title>
    </head>
    
    <body>
     <?
      $tage = array("Sonntag","Montag","Dienstag","Mittwoch",
      "Donnerstag","Freitag","Samstag");
     ?>
     
    <?
      $tag = date("w");
      ?>
      
      <?
      $monat = date("n");
      ?>
      
      <?
      $jahr = date("y");
      ?>
      
       <?
      $monate = array(1=>"Januar",
                      2=>"Feber",
                      3=>"M&auml;rz",
                      4=>"April",
                      5=>"Mai",
                      6=>"Juni",
                      7=>"Juli",
                      8=>"August",
                      9=>"September",
                      10=>"Oktober",
                      11=>"November",
                      12=>"Dezember");
    
    ?>
     <?
       echo "$tage[$tag] . $monate[$monat] .  $jahr";
      ?>
      <form action="form4.php" method="post">
      <p1>Dein Name!</p1>
      <br>
      <input type="text" size="17" name="name">
      <br><br>
      <p1>Passwort!</p1>
      <br>
      <input type="text" size="17" name="pw">
      <br><br>
      <p1>Confirm Passwort!</p1>
      <br>
      <input type="text" size="17" name="pw1">
      <br><br>
       <center>
      <input type="submit" value="senden">
      </center>
      </form>
    </body>
    </html>

    Hier das abspeichern der anmelde Daten:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    
    <html>
    <head>
    	<title>form4</title>
    </head>
    
    <body>
    <?
    $ok=$HTTP_POST_VARS["pw"];
    $ok1=$HTTP_POST_VARS["pw1"];
    if($ok==$ok1)
    {
    $password = md5($_POST['pw']);
    $datenToSave = $password.'#'.$_POST['name']."\n";
    $datei=fopen("anmeldungen.txt","a"); 
    fwrite($datei,$datenToSave); 
    fclose($datei);
    }
    else
    {
    echo "Sie müssen ihr Passwort bestätigen!";
    }
    ?>
    </body>
    </html>

    Hier das HTML Formular für den Loggin:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    
    <html>
    <head>
    	<title>Login</title>
    </head>
    
    <body>
     <?
      $tage = array("Sonntag","Montag","Dienstag","Mittwoch",
      "Donnerstag","Freitag","Samstag");
     ?>
     
    <?
      $tag = date("w");
      ?>
      
      <?
      $monat = date("n");
      ?>
      
      <?
      $jahr = date("y");
      ?>
      
       <?
      $monate = array(1=>"Januar",
                      2=>"Feber",
                      3=>"M&auml;rz",
                      4=>"April",
                      5=>"Mai",
                      6=>"Juni",
                      7=>"Juli",
                      8=>"August",
                      9=>"September",
                      10=>"Oktober",
                      11=>"November",
                      12=>"Dezember");
    
    ?>
     <?
       echo "$tage[$tag] . $monate[$monat] .  $jahr";
      ?>
       <form action="form5.php" method="post">
      <p1>Dein Name!</p1>
      <br>
      <input type="text" size="17" name="name">
      <br><br>
      <p1>Passwort!</p1>
      <br>
      <input type="text" size="17" name="pw">
      <center>
      <input type="submit" value="senden">
      </center>
      </form>
    </body>
    </html>

    Hier der Code für das Auslesen:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    
    <html>
    <head>
    	<title>form5</title>
    </head>
    
    <body>
    <?
    $daten = file("anmeldungen.txt");
    $md5Pw = $_POST['pw'];
    
    foreach($daten as $value ) 
    {
    
    $ins = explode('#',$value);
    
    if ( $md5Pw == trim($ins[0]) ) {
    $benutzername = trim($ins[1]);
    }
    
    
    
    }
    if ( empty($benutzername) ) {
    echo 'Das password hat zu keinem namen gestimmt';
    } else {
    echo 'Du hast dich eingeloggt';
    }
    ?>
    </body>
    </html>

    und jetzt die Frage warum geht das nicht,ich habe herum experimentiert mit verschiedenen schreibweisen aber es geht nicht.
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten