Wo liegt der Fehler in diesem Code ?

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

  • Wo liegt der Fehler in diesem Code ?

    Hi,

    ich habe gerade mal ein einfaches Script zur Überprüfung eines Passwortes mit einem in einer Datenbank gespeicherten Passwort (das mit MD5 verschlüsselt ist) geschrieben. Wenn ich das Script ausführe bekomme ich nur eine leere Seite. Sieht jemand, den Fehler ?

    Code:

    PHP-Code:

    <? 
        // Verbindung zum MySQL Server und Auswahl der Datenbank 
         @mysql_connect("localhost", "root", "") 
                or die("Verbindung zum MySQL server kann nicht aufgebaut werden"); 
         @mysql_select_db("usr_netsh224_1") 
                or die("Datenbank konnte nicht ausgewählt werden"); 

    $dbpass = "SELECT password FROM ibf_members WHERE name = '$benutzername'"; 


    $pass =md5($eingabe) 
    if ($pass = $dbpass) 
    print "Passwort korrekt. Willkommen im Benutzerbereich"; 

    else 

    print "Passwort nicht korrekt. Bitte erneut versuchen !"; 
    ?>

    Zur Übergabe des Passwortes verwende ich eine HTML-Datei mi folgendem Code:

    PHP-Code:
    <form method="POST" action="login.php"

      <
    div align="center"
        <
    center
        <
    table border="0" width="49%"
          <
    tr
            <
    td width="31%"><font face="Arial">Benutzername:</font></td
            <
    td width="69%"><input type="text" name="benutzername" size="20"></td
          </
    tr
          <
    tr
            <
    td width="31%"><font face="Arial">Passwort:</font></td
            <
    td width="69%"><input type="password" name="eingabe" size="20"></td
          </
    tr
        </
    table
        </
    center
      </
    div
      <
    p align="center">&nbsp;<input type="submit" value="Abschicken" name="B1"></p
    </
    form> [list][/list] 

  • #2
    mache es lieber so ..

    das ist auch etwas sicher....

    EDIT:
    nochmal überarbeitet und die tabelle dazu



    PHP-Code:
    function CheckUserLogin ($un$pw,$session) {
      
    $result mysql_query("SELECT UserId,Name,Vorname,UserName,UserPasswd FROM UserTabelle WHERE UserName='$un' AND UserPasswd=MD5('$pw')") or mysql_error();
      
    $zeile mysql_fetch_array($result);

      if ( 
    $zeile["UserId"] == "" )
      {
        
    // fehler.
        
    header ("Location: index.php");
      }
      else
      {
        
    // alles korrekt -> willkommen.
        
    $result mysql_query("UPDATE UserTabelle SET UserSession = '".$session."',UserLogin = NOW() WHERE UserId = '".$zeile["UserId"]."'") or mysql_error();
        
    header ("Location: admin.php");
      }

    Code:
    CREATE TABLE UserTabelle (
      UserId int(11) NOT NULL auto_increment,
      Name varchar(25) NOT NULL default 'Name',
      Vorname varchar(25) NOT NULL default 'Vorname',
      UserName varchar(12) NOT NULL default '',
      UserPasswd varchar(32) NOT NULL default '',
      UserLogin datetime default NULL,
      PRIMARY KEY  (UserId),
      UNIQUE KEY UserName (UserName)
    ) TYPE=MyISAM;
    Zuletzt geändert von Abraxax; 19.01.2003, 21:49.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      - du hast kein mysql_query drin

      - du solltest $_POST["eingabe"] nehmen statt $eingabe

      - du hast ein = vergessen bei der prüfung
      if ($pass==$dbpass)

      - mach mal die @ vore den mysql-befehlen weg
      und hintendran ein
      PHP-Code:
      echo "Folgende Fehler sind aufgetreten:<br/>".mysql-error(); 
      btw: bist du bei net-build? dann hättest du nämlich die falschen logindaten (oder absichtlich fürs forum)?
      EDIT:
      Oder so wie Abraxax geschrieben hat. Is wirklich bessererererererer
      Zuletzt geändert von mrhappiness; 19.01.2003, 21:21.
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        Hi,

        danke für die Tipps. Ich werde es gleich mal ausprobieren. Ich fange erst gerade mit PHP und hab noch so meine Probleme

        @mrhappiness

        Ich bin nicht bei net-build, sonern bei vc-server - aber die Logindaten gelten so nur für meine lokal installierte MySQl Datenbank. Bei meinem Provider habe ich natürlich auch ein Passwort

        Bist Du denn bei net-build ? Ich hatte mir nämlich schon überlegt dorthin zu wechseln, wenn mein Hosting-Vertrag ausläuft.

        Kommentar


        • #5
          OffTopic:
          Ja, ich bin bei net-build und zufrieden


          @Abraxax
          $session is die session-id oder?
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Original geschrieben von mrhappiness
            @Abraxax
            $session is die session-id oder?
            jepp. hatte vorhin die fkt nur vereinfacht und dann vergessen den para wieder zu übergeben.

            der aufruf erfolgt dann mit

            PHP-Code:
            CheckUserLogin ($un$pwsession_id()); 
            $un und $pw kommen aus einen login-formular.... ist ja logisch ...

            im admin.php habe ich am anfang immer einen check drin, ob alles ok ist...

            PHP-Code:
            $userinfo CheckUserSession(session_id()); 
            ist alles ok, bekomme ich sogar ein array über den user ..

            PHP-Code:
            /***
              * Prüfen, ob die Session in Ordnung ist.
              */

            function CheckUserSession ($session) {
              
            $result mysql_query("SELECT UserId,Name,Vorname,UserName,UserPasswd,UserLogin FROM UserTabelle WHERE UserSession = '".$session."'") or mysql_error();
              if ( 
            mysql_num_rows($result) == ) {
                
            $zeile mysql_fetch_array($result);
                
            $sessarr[UserId]    = $zeile["UserId"];
                
            $sessarr[Name]      = $zeile["Name"];
                
            $sessarr[Vorname]   = $zeile["Vorname"];
                
            $sessarr[UserLogin] = $zeile["UserLogin"];
                return 
            $sessarr;
              }
              else {
                
            header ("Location: index.php");
                return 
            false;
              }

            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              OffTopic:
              Ich bin so stolz auf dich!
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                vielen dank ...

                heir noch mal schön zum nachlesen.
                http://www.php-resource.de/forum/sho...threadid=15290
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar

                Lädt...
                X