Anfänger: Anfängerfragen zu einem Passwortschutz

Hallo!
Ich würde gerne einen Passwortschutz für eine Seite erstellen. Dieser muss nicht besonders sicher sein. Das ist mit PHP für mich kein Problem. Aber bis jetzt habe ich es so gemacht:
<?php
$user_name = "test";
$user_pass = "123456";
elseif ($user == $user_name AND $pw == $user_pass)
?>
Das ist natürlich nicht der ganze Code, sondern er soll nur verdeutlichen, dass es nur _ein_ Passwort gibt. Ich würde aber gerne für jeden User ein eigenes Passwort haben.
Und dieses Problem würde ich mit Hilfe einer Datenbank lösen. Bin ich damit total falsch?
Ich würde in etwa so vorgehen:
User gibt Name und Passwort ein -> PHP sucht nach der Tabelle mit dem Usernamen -> Wenn es diese Tabelle gibt, dann vergleicht er das Passwort mit dem Passwort, das in der Spalte "passwort" eingetragen ist -> Wenn beides stimmt, dann kann sich der User einloggen.

Bin ich auf dem total falschen Weg? Kann man das anders besser machen? Wenn die Idee ok ist, dann würde ich gerne wissen, wie ich das in etwa lösen könnte. Mir fehlen die Ideen und Lösungswege.
Wie kann ich z.B. überprüfen, ob es die Tabelle "username xy" gibt? Und ob das Passwort stimmt? Was für MySQL-Befehle muss ich dafür nehmen?
Ich danke euch für eure Antworten!
Danke, bis bald!

  1. Hi.

    Du stellst soviele Fragen das du dich anscheinend bisher kein einziges mal mit MySQL beschäftigt hast.

    http://selfphp.de/praxisbuch/index.php

    Geh da auf den Liknk runter zu Datenbankprogrammierung und lies dir alles durch.

    mfg

    Phil Z.

  2. Hi,

    naja, du brauchst nicht für jeden User eine seperate Tabelle. Mach einfach eine Tabelle, in der du in der ersten Spalte alle User hast und in der zweiten Spalte jeweils das Passwort.
    Wenn jetzt jemand seinen Username und sein Passwort eingibst, dann suchst du in der Tabelle nach dem Username und vergleichst dann anschließend das eingegebene Passwort mit dem aus der Tabelle.

    Wenn die beiden gleich sind, dann ist ok, ansonsten nicht.

    Hast du dich schon mal mit PHP und MySql beschäftigt? Wenn nein, dann würde ich mir dazu mal ein Tutorial durchlesen. Diese gibt es im Netz reichlich.

    Zu den MySql-Abfragen: siehe Tutorial
    1. Du brauchst ersten eine Abfrage, ob es den User gibt:
    Select username, passwort from tabellen_name where name='eingebener Username';

    Mit dieser Abfrage hast du dann das Passwort und den Username.
    Damit musst du dann weiterarbeiten. Doch dazu, wie gesagt, erstmal ein bißchen im Netz schlau machen.

    Grüße,
    Thorsten F.

  3. n'abend,

    Ich würde in etwa so vorgehen:
    User gibt Name und Passwort ein -> PHP sucht nach der Tabelle mit dem Usernamen -> Wenn es diese Tabelle gibt, dann vergleicht er das Passwort mit dem Passwort, das in der Spalte "passwort" eingetragen ist -> Wenn beides stimmt, dann kann sich der User einloggen.

    du willst eine Tabelle "Benutzer", welche über die Felder "Benutzername" und "Passwort" verfügt (und nach belieben mehr, BenutzerID, E-Mail-Adresse, etc.)

    Wie kann ich z.B. überprüfen, ob es die Tabelle "username xy" gibt? Und ob das Passwort stimmt? Was für MySQL-Befehle muss ich dafür nehmen?

    Du willst nicht für jeden Benutzer eine eigene Tabelle anlegen! Eine Tabelle, welche die ganzen Benutzer enthält reicht völlig aus.

    <?php  
    // Verbindungskram [...]  
    $res = mysql_query('SELECT Benutzername FROM Benutzer WHERE Benutzername = \'Alfred\' AND Passwort = \'test123\'');  
    if( !mysql_num_rows($res) )  
    {  
      // Benutzer-Passwort-Kombination konnte nicht gefunden werden  
      // agiere entsprechend.  
    }  
    ?>
    

    Das obige Beispiel zeigt dir lediglich, wie man prüfen kann ob ein Datensatz gefunden wurde, oder nicht. Schau dir die Funktionen an, die PHP für die Kommunikation mit MySQL zur Verfügung stellt.

    weiterhin schönen abend...

    --
    wer braucht schon großbuchstaben?
    sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|
    1. Hallo!
      Vielen Dank für eure Hilfe!
      Ich habe mir jetzt einiges durchgelesen und bin jetzt so weit gekommen:

        
      <?php  
        $server = "localhost";  
        $user   = "root";  
        $pass   = "";  
        
      if ($verbindung = mysql_connect ($server, $user, $pass)) {  
        echo "Die Verbindung mit der Datenbank <b>$server</b> wurde aufgebaut!<br>";  
      } else {  
        echo "Der Verbindungsversuch zum Server <b>$server</b> ist fehlgeschlagen!" . mysql_error();  
        exit();  
      }  
        
      $datenbank = "benutzer";  
        
      if(!mysql_select_db ($datenbank)) {  
        echo "Die Datenbank konnte nicht ausgew&auml;hlt werden: " . mysql_error();  
        exit();  
      } else {  
        echo "Die Datenbank <b>$datenbank</b> wurde ausgew&auml;hlt! <br>";  
      }  
        
      $sql = "INSERT INTO benutzer  
          (benutzer, passwort)  
      VALUES  
          ('test',  
           '123456');";  
          $result = mysql_query($sql) OR die(mysql_error());  
          if(mysql_num_rows($result)) {  
              echo"Alles gut";  
          } else {  
              echo"Nichts ist gut!";  
          }  
      ?>  
      
      

      Dabei kommt dann folgende Fehlermeldung:

      Die Verbindung mit der Datenbank localhost wurde aufgebaut!
      Die Datenbank benutzer wurde ausgewählt!
      Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\xampp\xampp\htdocs\login2.php on line 22

      Was ist denn falsch?
      Vielen Dank für euer Bemühen!

      1. n'abend,

        Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\xampp\xampp\htdocs\login2.php on line 22

        mysql_num_rows() ist nur bei Abfragen zu gebrauchen, die dir irgendwelche Datensätze liefern sollten (lesen).

        Du versuchst aber Daten zu manipulieren / einzufügen (schreiben). Um herauszufinden wie viele Datensätze von deiner Query beeinflusst wurde, kannst du mysql_affected_rows() benutzen.

        Für lesende Queries benutzen wir also mysql_num_rows();
        Für schreibende Queries hingegen mysql_affected_rows();

        weiterhin schönen abend...

        --
        wer braucht schon großbuchstaben?
        sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|