• 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:

    registrieren.php:

    Login.html:

    Login.php:

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

    MFG
    WWKiller?

  • 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!

  • 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

  • Hi, hier diese Versionen müssten gehen:


    und nochmal

    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

  • 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

  • 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

  • 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 :?:

  • 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