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 mit Mysql

  • WWKiller
  • 7. Februar 2007 um 22:10
  • WWKiller
    Prinz(essin)
    Beiträge
    570
    • 7. Februar 2007 um 22:10
    • #1

    Hi
    Ich lerne grad MySQL.
    Nun möchte ich mein Login Script, das ich früher immer mit txt Dateien benutzt habe für Mysql umschreiben.
    Da treten ein paar Fehler auf:

    Registrieren.html:

    Code
    <form action="registrieren.php" method="post">
    Dein Username:
    
    
    <input type="text" size="24" maxlength="50"
    name="username">
    
    
    
    
    
    
    Dein Passwort:
    
    
    <input type="password" size="24" maxlength="50"
    name="passwort">
    
    
    
    
    Passwort wiederholen:
    
    
    <input type="password" size="24" maxlength="50"
    name="passwort2">
    
    
    
    
    <input type="submit" value="Abschicken">
    </form>
    Alles anzeigen

    registrieren.php:

    PHP
    <?php
    $username = $_POST["username"];
    $password = $_POST["passwort"];
    $password2 = $_POST["passwort2"];
    
    
    $verbindung = mysql_connect("localhost","nickname","password")
    or die ("verdindung nicht möglich");
    
    
    mysql_select_db("homepage")
    or die ("nicht da");
    
    
    if ($password == $password2)
       {
       $passwort = md5($password);
    
    
    $eintragen = "INSERT INTO `login` ( `id` , `nick` , `pass` )
    VALUES (
    NULL , '$username', '$passwort'
    )";
     echo "$username, deine Anmeldung war erfolgreich
    
    <a href=\"login.html\">zum Login</a>";
       }
    ?>
    Alles anzeigen

    Login.html:

    Code
    <form action="login.php" method="post">
    Dein Username:
    
    
    <input type="text" size="24" maxlength="50"
    name="username">
    
    
    
    
    
    
    Dein Passwort:
    
    
    <input type="password" size="24" maxlength="50"
    name="password">
    
    
    
    
    <input type="submit" value="Login">
    </form>
    Alles anzeigen

    Login.php:

    PHP
    <?php
    $username = $_POST["username"];
    $passwort = $_POST["password"];
    $passwort = md5($passwort);
    
    
    
    
    $verbindung = mysql_connect("localhost","nick","passwort")
    or die ("verdindung nicht möglich");
    
    
    mysql_select_db("homepage")
    or die ("nicht da");
    
    
    $abfrage1 = "SELECT nick, pass FROM login";
    $ergebnis = mysql_query($abfrage1);
    while($row = mysql_fetch_object($ergebnis))
     {
     $ich = "$row->nick 
    ";
      $du = "$row->pass 
    ";
     }
    
    
    if($username == $ich and $passwort == $du)
     {
     echo "Hallo $username";
     }
     else
     {
     echo "etwas ist falsch";
     }
    
    
    ?>
    Alles anzeigen

    Also ich vermute es liegt an login.php naja schaut einfach mal selbst.
    Also höchstwarscheinleich an der if anweisung oder?

    MFG
    WWKiller?

  • BendOr
    Kaiser(in)
    Beiträge
    2.496
    • 7. Februar 2007 um 22:26
    • #2

    1. poste was für fehler auftreten !
    2. schau dir noch mal genau an, wie das mit mysql funzt, anscheinend hast du ein paar grundlegende dinge übersehen, denn damit machst du GAR NICHTS ausser die variable zu definieren
    $eintragen = "INSERT INTO `login` ( `id` , `nick` , `pass` )
    VALUES (
    NULL , '$username', '$passwort'
    )";
    du solltest den befehl schon aufrufen :P
    und zwar so:

    Code
    mydql_query("INSERT INTO `login` (`nick` , `pass` ) 
    VALUES ( '".$username."', '".$passwort."' )");


    3. bau die verbindung zur datenbank mal so auf (ich weiss nich ob man bei mysql_selebt_db die connection sozusagen einfach weglassen kann ?!)

    $dbh=mysql_connect($db_host,$db_user,$db_pw);
    mysql_select_db($db_db,$dbh);

    (5.) was ist schneller btw mysql_fetch_object oder mysql_fecth_assoc ? naja ka, geht auf jeden fall beides

    mfg

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • area-one
    Anfänger
    Beiträge
    3
    • 17. Juni 2007 um 00:33
    • #3

    also, ich hab den code der login.php an meiner datenbank ausprobiert und etwas umgeschrieben, so würde das Grundgerüst funktionieren.
    ABER: leider wird nur der Benutzername angezeigt und nicht überprüft.... Vom Passwort gar nicht erst zu sprechen.....

    Hier der Code.... leider gibts wie gesagt noch probleme:

    <?php
    $user = $_POST['user'];
    $pw = md5($pw);

    error_reporting(E_ALL); //Damit sagen wir PHP das es uns die Fehler
    //Berichten soll, die auftreten, falls etwas nicht
    // Klapt

    define('MYSQL_HOST', 'localhost'); // Der host, standartmaessig
    // immer Localhost
    define('MYSQL_USER', 'DB-Benutzer'); //Der Benutzername, bei z.b. ohost
    // waere es der Angegebene
    //Benutzername
    define('MYSQL_PASS', 'DB-Passwort'); //Das normale mysql PAsswort
    define('MYSQL_DATABASE', 'DB-NAME'); //Der Name der Datenbank


    $abfrage1 = "select user, pw FROM db"; //HIER: "db" ist mir NICHT der Name der Datenbank, sondern die Tabelle in der Datenbank, "user" und "pw" sind Tabellen in der Tabelle "db"....

    $abfrage2 = "SELECT pw, pw FROM db"; //Sollte hier nicht eigentlich "check" statt "SELECT" stehen, oder wäre das php?

    if($user == $user)
    if($pw == $pw)
    {
    echo "Hallo $user";
    }
    else
    {
    echo "etwas ist falsch";
    }

    ?>


    ///////////////// jetzt stellt sich natürlich die Frage, wo der/die Fehler ist/sind....
    und warum

  • K.Y.L.T.
    König(in)
    Beiträge
    1.015
    • 17. Juni 2007 um 02:11
    • #4

    Hi, hier diese Versionen müssten gehen:

    PHP
    Registrierung:
    
    
    
    
    
    
    <?php
    $username = $_POST["username"];
    $password = $_POST["passwort"];
    $password2 = $_POST["passwort2"];
    
    
    $verbindung = mysql_connect("localhost","nickname","password")
    or die ("verdindung nicht möglich");
    
    
    mysql_select_db("homepage")
    or die ("nicht da");
    
    
    if ($password == $password2)
       {
       $passwort = md5($password);
    
    
    $eintragen = "INSERT INTO login (nick , pass ) VALUES ( '$username', '$passwort')";
    mysql_query($eintragen); 
    
    
    echo "$username, deine Anmeldung war erfolgreich
    
    <a href=\"login.html\">zum Login</a>";
       }
    ?>
    Alles anzeigen


    und nochmal

    PHP
    Login.php
    
    
    
    
    <?php
    $username = $_POST["username"];
    $passwort = $_POST["password"];
    $passwort = md5($passwort);
    
    
    
    
    $verbindung = mysql_connect("localhost","nick","passwort")
    or die ("verdindung nicht möglich");
    
    
    mysql_select_db("homepage")
    or die ("nicht da");
    
    
    $abfrage1 = "SELECT nick FROM login WHERE nick = '$username' AND pass ='$passwort' ";
    $ergebnis = mysql_query($abfrage1);
    
    
    $row = mysql_fetch_row($ergebnis);
    
    
    if($row!=NULL) // Es wurde ein passender Nick mit zutreffendem Passwort in der DB gefunden 
     {
     echo "Hallo $row[0] ";
     }
     else
     {
     echo "etwas ist falsch";
     }
    
    
    ?>
    Alles anzeigen

    Ich habe einfach mal deine Arbeitsweise leicht verändert, wenn du ein Passwort , sei es md5 gesichert sei oder nicht zu irgend einer Zeit aus der DB rausliest kann jeder an die Daten ran und mit entsprechendem Probieren auch kurze Passwörter erknobeln... Davon mal abgesehen, warum 30 Bücher erst raussuchen, wenn du vorher angibst, was für ein Buch du haben willst - also spart das aufwand ^^.

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

  • area-one
    Anfänger
    Beiträge
    3
    • 17. Juni 2007 um 02:20
    • #5

    Danke schön!
    Aber hab grad festgelstellt, dass der code auch nicht aus der richtigen tabelle lädt. hab mir aber etwas ähnliches zusammengebastelt, was noch einfacher ist, aber einwandfrei funktioniert...
    Ist viel einfacher:

    <html>

    <head>
    <title> Login check </title>
    </head>

    <body>

    <?php
    include('config.php');

    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
    define('MYSQL_TABLE', 'db');

    $list = fopen("list.txt", "r");
    $listing = fgets($list, 50);
    $ulist = explode("|", $listing);

    if($_POST['user']=$user && $_POST['pw']=$pw)
    {
    print("Login succeded!");

    }else{
    print("Login denied!");
    }

    fclose($list);

    ?>

    </body>

    </html>


    ////////////Das einzige Problem an diesem Code ist, dass die Seite bei "Login suceed" stehenbleibt und ich eigentlich überhaupt nicht weiß, wie ich den user auf die entsprechende seite weiterleite.......

    Bitte um Hilfe.
    Danke

  • area-one
    Anfänger
    Beiträge
    3
    • 17. Juni 2007 um 02:23
    • #6

    Die Adresse ist übrigens

    http://www.area-one.net

    REINSCHAUEN LOHNT SICH!

  • K.Y.L.T.
    König(in)
    Beiträge
    1.015
    • 17. Juni 2007 um 15:43
    • #7

    du hast noch ein Problem, aber dazu gleich,

    also , du kannst entweder eine unschöne Variante nehmen, indem du einfach einen Link zu der entsprechenden Seite unter "Login successful" setzt zur seite,

    oder du schreibst statt "Login..." einfach Location("die Ziel URL"); und auf der Seite dann "login successfull"

    aber nun zu deinem Problem , wo prüfst du dann denn, ob ein User eingeloggt ist, wenn du nur am Anfang auf einer einzelnen Php testet, ob der User eingeloggt ist oder nicht, dann kann jeder, der die Zielurl kennt einfach die eingeben und ist drin :-/ wie ärgerlich...

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

  • area-one.net
    Gast
    • 18. Juni 2007 um 23:02
    • #8

    Habe leider noch ein Problem mit dem Code! Wenn ich einfach irgendwas eingebe und dann auf Login klicke, steht da plötzlich trotzdem "Login Succeed" woran kanns liegen?? ich meine, heißt:
    if($_POST['user']=$user && $_POST['pw']=$pw)
    nich einfach nur, dass die beiden werte übereinstimmen und nicht, dass sie aus der DB geprüft werden??? also irgendwie komm ich gar nicht mehr klar mit dem code....

    ich fax jetz einfach mal nochmal den komplette code rüber, dann sieht ja vielleicht jemand den fehler.
    Das Problem ist, wie schon gesagt, dass für einen erfolgreichen Login einfach nur beide Felder (USER,PW) ausgefüllt sein müssen. egal was drinsteht, man wird eingeloggt.
    die tabellen für die Felder heißen übrigens "user" und "pw" wobei pw natürlich das Passwort ist und user der Username. Wer kann mir da weiterhelfen?
    --------------------------------------------------------------

    <html>

    <head>
    <title> Login check </title>
    </head>

    <body>

    <?php
    include('config.php');

    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
    define('MYSQL_TABLE', 'db');


    $list = fopen("list.txt", "r");
    $listing = fgets($list, 50);
    $ulist = explode("|", $listing);

    if($_POST['user']=$user && $_POST['pw']=$pw)
    {
    print("Login succeded!");

    }else{
    print("Login denied!");
    }

    fclose($list);

    ?>

    </body>

    </html>

    -----------------------------------------
    Das ist die komplette db_login.php

    ja, zum vorigen eintrag noch was dazu. bei erfolgreichem Login, wird lediglich der Username (user) an die nächste php-seite geschickt, die dann selbstständig alle informationen aus der zeile dieses Users lädt. es wird noch ein Datenank-basiertes Messagingsystem geben, dass eigentlich bereits fertig ist und vieles mehr.
    kleine werbung nebenbei:
    Ab Fertigstellung kann man den Service sofort nutzen, da die Server und alles andere eigentlich bereits eingerichtet sind. es fehlen halt nur noch die Verbindungen zwischem dem User und der Datenbank, bzw. Datenbank(en!). Wer es noch nicht gesehen hat, es ist ne weltweite community, die aber noch im aufbau ist.
    Wenn Ihr Vorschläge habt, was ich noch in die seite reinnehmen sollte, einfach unter KONTAKT mitteilen oder e-mail an info@area-one.net .
    Freu mich über jedes Statement.

    http://www.area-one.net

    Ansonsten hoffe ich, dass mir hier wirklich jemand weiterhelfen könnte, da ich schon seit nem Monat an der scheiß db sitze und immernoch nicht allzuweit gekommen bin. HAB EINFACH KEINE AHNUNG VON DER MATERIE!
    Dafür kann ich euch technische Hilfe im Bereich KfZ anbieten. war mal bei AUDI Service /Overboost.

    Gruß,
    Da Artem G :?:

  • K.Y.L.T.
    König(in)
    Beiträge
    1.015
    • 18. Juni 2007 um 23:32
    • #9

    Fehldenken

    $i = 5; <- weist der Variabel $i nen wert zu

    $i == 5; <--- $i soll 5 sein (vergleich)

    du musst die zweite variante nehmen

    EDIT: und du musst bei php auch nicht && schreiben, sondern AND genauso für || wird OR verwendet.

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

Tags

  • hilfe
  • html
  • server
  • email
  • post
  • werbung
  • problem
  • code
  • biete
  • php
  • fehler
  • tabelle
  • tabellen
  • passwort
  • datenbank
  • mysql
  • variable
  • login
  • select

Benutzer online in diesem Thema

  • 1 Besucher
  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
Zitat speichern