1. Dashboard
  2. Artikel
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. HTML - Webmaster Forum
  2. Programmierung - Entwickler Forum
  3. PHP Forum - Apache - CGI - Perl - JavaScript und Co.

Login-Script

  • Donkey
  • 17. März 2009 um 23:55
  • Donkey
    Meister(in)
    Beiträge
    237
    • 17. März 2009 um 23:55
    • #1

    Hallo zusammen :)

    Ich muss eine Seite erstellen mit einem Login.
    Das allein ist ja kein Problem.

    Aber ich möchte überprüfen lassen Ob Username und Passwort auch zusammengehören.

    Mir is irgendwie nichts besseres eingefallen als die Positionen in den Arrays (von Passwörtern und Usernamen) zu vergleichen.
    In etwa so:

    PHP
    <?php
    $pass = array(
    '123',
    '456',
    '789'
    );
    $user = array(
    'Tester1',
    'Tester2',
    'Tester3'
    );
    if (isset ($_POST['submit1'])){
    $usercheck = array_keys($user, $_POST['setname']);
    $passcheck = array_keys($pass, $_POST['setpw']);
      if ($usercheck == $passcheck){
      echo'Sie sind eingeloggt';
      }
      else{
      echo'Das Passwort war nicht korrekt';
      }
    }
    echo'<form method="post" action="l-test.php">
    User: <input type="text" name="setname" size="10"><br>
    Passwort: <input type="text" name="setpw" size="10"><br>
    <input type="submit" name="submit1" value="Login">
    </form>';
    ?>
    Alles anzeigen



    Gibts da noch ne bessere Möglichkeit? Denn besonders sauber (und vor allem sicher) erscheint mir die Lösung nicht.

    Gruß, Donkey

    Oops, da hab ich doch glatt was vergessen :oops:
    So is das Script auf jeden Fall fürn A....

    So is es richtig:

    PHP
    if (isset ($_POST['submit1'])){
    $usercheck = array_keys($user, $_POST['setname']);
    $passcheck = array_keys($pass, $_POST['setpw']);
      if ($usercheck == $passcheck){
          if (in_array($_POST['setpw'], $pass)){
          echo'Sie sind eingeloggt';
          }
          else{
          echo'Das Passwort war nicht korrekt';
          }
      }
      else{
      echo'Das Passwort war nicht korrekt';
      }
    
    }
    Alles anzeigen

    [Blockierte Grafik: http://www.fileden.com/files/2007/10/27/1545031/userb/ub_01.png]

    Einmal editiert, zuletzt von Donkey (18. März 2009 um 01:55)

  • Bandit
    Gast
    • 18. März 2009 um 07:51
    • #2
    Zitat

    Gibts da noch ne bessere Möglichkeit?


    Klar, benutze eine Datenbank. Und wenn schon mit Array's, dann nur ein Array:

    PHP
    $data = array ('Tester1' => 'abc', 
                   'Tester2' => 'xyz',
                   'Tester3' => 'hui'
                  );


    Über Key und Value hast du dann beides zusammen.

  • Donkey
    Meister(in)
    Beiträge
    237
    • 18. März 2009 um 13:46
    • #3

    Ja mittlerweile les ich die Datenbank von dem Forum aus zu dem Diese Seite gehören soll.

    Is aber sicher auch nicht optimal gelösst, weil ich nicht wirklich Ahnung von MySQL hab...

    Ich poste später mal den Quellcode - vielleicht gibts ja Verbesserungsvorschläge :)


    So hier mal der Code in der SQL-Version:
    Erschlagt mich nicht - hab erst vor kurzen angefangen mich mit SQL zu beschäftigen und kann nicht wirklich damit umgehen...

    PHP
    <?php
    mysql_connect("localhost","xdatenbankx","xpasswortx")
    or die ("keine Verbindung möglich. Benutzername oder Passwort sind falsch");
    mysql_select_db("xdatenbankx")
    or die ("Die Datenbank existiert nicht.");
     
    if (isset ($_POST['submit1'])){
      if ($_POST['setname'] == 'DeadKennedy'){$id='2';}
      elseif ($_POST['setname'] == 'Donkey'){$id='39';}
      elseif ($_POST['setname'] == 'Andi'){$id='48';}
      elseif ($_POST['setname'] == 'GoObLoY'){$id='90';}
      elseif ($_POST['setname'] == 'Alex'){$id='110';}
      else{$error = 'Diesen User gibt es hier nicht!';}
        if (!empty ($error)){echo $error;}
        if (empty ($error)){
        $abfrage = 'SELECT user_password FROM orion_users WHERE user_id = "'.$id.'"';
        $ergebnis = mysql_query($abfrage);
        $pw = mysql_fetch_object($ergebnis);
        $pass = "$pw->user_password";
            if (md5($_POST['setpw']) == $pass){
            echo 'Hallo '.$_POST['setname'];
            }
            else{
            echo'Das Passwort war nicht korrekt';
            }
          } 
    }
    echo'<form method="post" action="l-test.php">
    User: <input type="text" name="setname" size="10"><br>
    Passwort: <input type="text" name="setpw" size="10"><br>
    <input type="submit" name="submit1" value="Login">
    </form>';
    ?>
    Alles anzeigen

    [Blockierte Grafik: http://www.fileden.com/files/2007/10/27/1545031/userb/ub_01.png]

    2 Mal editiert, zuletzt von Donkey (18. März 2009 um 14:07)

  • Bandit
    Gast
    • 18. März 2009 um 14:14
    • #4
    Zitat

    Is aber sicher auch nicht optimal gelösst

    Gut erkannt! Du hast doch bestimmt den Usernamen und das Passwort in der Db stehen, was willst du dann noch mit der ID???

    PHP
    <?php
      $query = "Select 
                   count(*) 
                 from
                   orion_users
                 where
                   user_name='" . mysql_real_escape_string($_POST['setname']) . "'
                  AND
                   user_password = '" md5($_POST['setname']) . "'";
    
      $result = mysql_query($query)
         or die ("MySQL-Fehler: " . mysql_error());
    
      $count = mysql_result($result, 0);
    
      if ($count == 0)
         echo "Du kummst hier net rein";
      else
         echo "Alles klar Alter";
    ?>
    Alles anzeigen
  • Donkey
    Meister(in)
    Beiträge
    237
    • 18. März 2009 um 14:59
    • #5

    Jo Danke. Das is gut!

    Das mit der ID hab ich nur gemacht weil nicht alle Member aus dem Board sich dort einloggen dürfen.
    Die Seite soll ein CP für die Moderatoren werden.

    Darum werde ich wohl auch bei Deiner Lösung nicht um ne kleine If-Abfrage rumkommen bevor die Datenbank ausgelesen wird.

    [Blockierte Grafik: http://www.fileden.com/files/2007/10/27/1545031/userb/ub_01.png]

  • Bandit
    Gast
    • 18. März 2009 um 15:02
    • #6

    Dann verpasse der Tabelle noch eine weitere Spalte, in der du den jeweiligen Status speicherst, z.B.:

    1 = User
    2 = Moderator
    4 = Admin

  • Donkey
    Meister(in)
    Beiträge
    237
    • 18. März 2009 um 15:54
    • #7

    Also ich hab jetzt eine zusätzliche Spalte angelegt (team_status):

    Wer da rein darf hat ne 1 in der Spalte, alle anderen nichts:

    Die Datenbank-Abfrage hab ich so angepasst:

    PHP
    $query = "Select 
                   count(*) 
                 from
                   orion_users
                 where
                   user_name='" . mysql_real_escape_string($_POST['setname']) . "'
                  AND
                   user_password = '" md5($_POST['setpw']) . "'
                  AND
                   team_status = '1'";

    [Blockierte Grafik: http://www.fileden.com/files/2007/10/27/1545031/userb/ub_01.png]

  • Bandit
    Gast
    • 18. März 2009 um 17:36
    • #8

    Schön, hast du auch noch eine Frage oder wolltest du uns das nur mitteilen?

  • Donkey
    Meister(in)
    Beiträge
    237
    • 18. März 2009 um 17:43
    • #9

    Im Moment hab ich keine Frage mehr.
    Funzt alles sehr gut.

    Aber zum Thema SQL steh ich bestimmt bald wieder auf der Matte :D

    Spätestens wenn ich beim Download-Bereich angekommen bin, für den ich auch was ins CP einbauen muss.

    Danke

    [Blockierte Grafik: http://www.fileden.com/files/2007/10/27/1545031/userb/ub_01.png]

Tags

  • post
  • problem
  • php
  • fehler
  • tabelle
  • status
  • array
  • passwort
  • datenbank
  • error
  • script
  • bank
  • mysql
  • abc
  • value
  • string
  • login
  • data
  • select
  • md5
  • key
  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
Zitat speichern