Loginsystem mit VB.net, PHP und MySQL

  • PHP

Es gibt 93 Antworten in diesem Thema. Der letzte Beitrag () ist von meikel__.

    anmeldeinformationen heißt die Tabelle ich hab es in den Datein auf dem Websapace direkt geändert.

    Meine Datenbank: test
    Benutzer: test
    Paswort: sag ich dir nicht :P
    Tabelle: anmeldeiformationen

    So sieht es zur zeit aus.
    Ich habs mal geändert in der php datei nun mal schaun

    Ich habe es nun mal genau wie hier im Tutorial gemacht also 1 zu 1 und es geht trotzdem nicht.
    Ich bin am verzweifeln

    PHP-Quellcode

    1. $email = $_GET['email'];
    2. $username = $_GET['user'];
    3. $password = $_GET['pw5'];


    Kann es vielleicht daran liegen das

    PHP-Quellcode

    1. $password = $GET['pw5'];
    heisst und es laut Datenbank passwort heissen müsste ? Denn in der Datenbank steht nierenswo was mit pw5

    Bin neu hier, daher erstmal Hallo an alle :) ..

    Folgendes,
    die Variable pw5 stammt aus dem Http Post den du sendest wenn du dich registrierst.
    Im php Skript wird pw5 dann anschließend zur Variable "password".
    Bzw. die Variable "password" nimmt den Wert von "pw5" an.

    Aber ohne groß drum rum zu reden, hier die Lösung bzgl. der leeren Seite:

    diesen Teil ...

    PHP-Quellcode

    1. if ($verb)
    2. {
    3. $sql = "SELECT * FROM loginsystem WHERE username='".$user."'";
    4. $quer = mysql_query($sql) or die(mysql_error());
    5. $num = mysql_num_rows($quer);
    6. if ($num == 0)
    7. {
    8. echo("User does not exist");
    9. exit();
    10. }
    11. else
    12. {
    13. $row = mysql_fetch_object($quer);
    14. $passwort = $row->passwort;
    15. if ($passwort == $pass)
    16. {
    17. echo("success");
    18. }
    19. }
    20. }


    ... ersetzt du mit diesem Teil.

    PHP-Quellcode

    1. if ($verb)
    2. {
    3. $sql = "SELECT * FROM anmeldeinformationen WHERE username='".$user."'"; //Test des Usernames
    4. $quer = mysql_query($sql) or die(mysql_error());
    5. $num = mysql_num_rows($quer);
    6. if ($num == 0)
    7. {
    8. echo("User does not exist");
    9. exit();
    10. }
    11. else
    12. {
    13. $sql = "SELECT * FROM anmeldeinformationen WHERE password='".$pass."'"; //Test des Passwortes
    14. $quer = mysql_query($sql) or die(mysql_error());
    15. $num = mysql_num_rows($quer);
    16. if ($num == 0)
    17. {
    18. echo("Passwort falsch");
    19. }
    20. else
    21. {
    22. echo("Passwort richtig");
    23. }
    24. }
    25. }



    Hab zwar null Ahnung von php, aber probieren ist wohl das Beste. :P :)

    Gruß

    bossert
    Dann schreib und doch mal die Errorcodes

    Schönes Tutorial jedoch könnte man das ein wenig sauberer machen. (Damit mein ich z.B dass du die Contains-Funktion benutzt)
    "I think Microsoft has abused the Windows brand so much that it has lost its cachet."
    Paul Thurrott

    Neo schrieb:


    PHP-Quellcode

    1. <?php
    2. // Skript geschrieben am 01.08.2009 von Neo
    3. // Verbindungsinformationen zur Datenbank
    4. $dbhost = "localhost";
    5. $dbname = "loginsystem";
    6. $dbuser = "root";
    7. $dbpass = "mysql-pw";
    8. // Variablen festlegen
    9. $email = $_GET['email'];
    10. $username = $_GET['user'];
    11. $password = $_GET['pw5'];
    12. // Verbindung zur MySQL Datenbank herstellen und Daten überprüfen und eintragen
    13. mysql_connect($dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error());
    14. $verb = mysql_select_db($dbname);
    15. if ($verb)
    16. {
    17. echo("Verbindung zu Datenbank aufgebaut!");
    18. if ($email == "" or $username == "" or $password == "")
    19. {
    20. if ($email == "")
    21. echo("<br>Errorcode: <b>2</b>");
    22. if ($username == "")
    23. echo("<br>Errorcode: <b>3</b>");
    24. if ($password == "")
    25. echo("<br>Errorcode: <b>4</b>");
    26. }
    27. else
    28. {
    29. $abfragen_email = "SELECT email FROM anmeldeinformationen WHERE email='$email'";
    30. $abfragen_user = "SELECT username FROM anmeldeinformationen WHERE username='$username'";
    31. $ergebnis_email = mysql_query($abfragen_email);
    32. $ergebnis_user = mysql_query($abfragen_user);
    33. if (mysql_num_rows($ergebnis_email) > 0 or mysql_num_rows($ergebnis_user) > 0)
    34. {
    35. echo("<br>Errorcode: <b>1</b><br>Username und/oder E-Mail Adresse existiert bereits");
    36. }
    37. else
    38. {
    39. $sql = "INSERT INTO ".
    40. "anmeldeinformationen (username, pw5, email) ".
    41. "VALUES ('".
    42. $username."', '".
    43. $password."', '".
    44. $email."')";
    45. $eintrag = mysql_query($sql);
    46. if ($eintrag)
    47. {echo('<br>FINISHED');}
    48. else
    49. {die("<br>Errorcode: <b>5</b>");}
    50. }
    51. }
    52. }
    53. else
    54. {
    55. die('<br>Errorcode: <b>6</b>');
    56. }
    57. mysql_close();
    58. ?>



    Also das würde ich persönlich nicht für irgendwelche Projekte verwenden.
    Hau mal in irgend einen deiner GET-Parameter ein ' oder javascript wie z.B.

    Quellcode

    1. <script>alert(1)</script>


    Du filterst deine Paramter nicht. Das ist schon das Hauptproblem.
    In deinem Script wären SQL-Injections möglich und ebenso kann auch Javascript oder HTML in deine Datenbank geposted werden.
    Also entweder filtert man die Sachen mit mysql_real_escape_string und htmlentities oder man benutzt gleich prepared statements und htmlentities.
    Abgesehen davon wozu das die() am ende? Wenn dein Script problemlos ausgeführt wird, kommst du nicht bis zum mysql_close();.

    Also:

    PHP-Quellcode

    1. <?php
    2. // Skript geschrieben am 01.08.2009 von Neo
    3. // Verbindungsinformationen zur Datenbank
    4. $dbhost = "localhost";
    5. $dbname = "loginsystem";
    6. $dbuser = "root";
    7. $dbpass = "mysql-pw";
    8. // Variablen festlegen
    9. $email = $_GET['email'];
    10. $username = $_GET['user'];
    11. $password = $_GET['pw5'];
    12. // Verbindung zur MySQL Datenbank herstellen und Daten überprüfen und eintragen
    13. $pdo = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass) or die("<br>Errorcode: <b>6</b>");
    14. echo("Verbindung zu Datenbank aufgebaut!");
    15. if (empty($email) || empty($username) || empty($password)){
    16. if (empty($email)){
    17. echo("<br>Errorcode: <b>2</b>");
    18. }elseif(empty($username)){
    19. echo("<br>Errorcode: <b>3</b>");
    20. }elseif(empty($password)){
    21. echo("<br>Errorcode: <b>4</b>");
    22. }
    23. }else{
    24. $stmt = $pdo->prepare("SELECT * FROM anmeldeinformationen WHERE email = :email or username = :username");
    25. $stmt->bindParam(":email", $email);
    26. $stmt->bindParam(":username", $username);
    27. $stmt->execute();
    28. if ($stmt->rowCount() > 0){
    29. echo("<br>Errorcode: <b>1</b><br>Username und/oder E-Mail Adresse existiert bereits");
    30. }else{
    31. $stmt = $pdo->prepare("INSERT INTO anmeldeinformationen(username, pw5, email) VALUES( :username, :pw5, :email)");
    32. $stmt->bindParam(":username", htmlentities($username));
    33. $stmt->bindParam(":pw5", htmlentities($password));
    34. $stmt->bindParam(":email", htmlentities($email));
    35. $eintrag = $stmt->execute();
    36. if ($eintrag){
    37. echo('<br>FINISHED');
    38. }else{
    39. echo("<br>Errorcode: <b>5</b>");
    40. }
    41. }
    42. }
    43. ?>[


    ist wesentlich sicherer.

    Dann noch ne kleine Randnotiz zu der Tabellenstruktur. Den einzelnen Attributen den Datentypen TEXT zu geben ist nicht notwendig. Varchar tuts auch.
    Also username z.B. varchar(15), password (jeh nachdem ob md5 oder sha1 für die prüfsummen verwendet wird 32 oder 40), und email warscheinlich nicht mehr als 100 zeichen sprich varchar(100) reicht.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Umbekannt“ ()

    Mach mal das Capslock aus.
    Und beschreibe nochmals deinen Standpunkt.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Also wenn ich zB.
    http://localhost/register.php?email=keineahnung_15@web.de&user=Ablont&pw5=passwort

    eingeb kommt:

    Verbindung zu Datenbank aufgebaut!
    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\register.php on line 41

    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\register.php on line 41

    Errorcode: 5



    Mein PhP-Code:

    PHP-Quellcode

    1. <?php
    2. // Skript geschrieben am 01.08.2009 von Neo
    3. // Verbindungsinformationen zur Datenbank
    4. $dbhost = "localhost";
    5. $dbname = "loginsystem";
    6. $dbuser = "root";
    7. $dbpass = "Test";
    8. // Variablen festlegen
    9. $email = $_GET['email'];
    10. $username = $_GET['user'];
    11. $password = $_GET['pw5'];
    12. // Verbindung zur MySQL Datenbank herstellen und Daten überprüfen und eintragen
    13. mysql_connect($dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error());
    14. $verb = mysql_select_db($dbname);
    15. if ($verb)
    16. {
    17. echo("Verbindung zu Datenbank aufgebaut!");
    18. if ($email == "" or $username == "" or $password == "")
    19. {
    20. if ($email == "")
    21. echo("<br>Errorcode: <b>2</b>");
    22. if ($username == "")
    23. echo("<br>Errorcode: <b>3</b>");
    24. if ($password == "")
    25. echo("<br>Errorcode: <b>4</b>");
    26. }
    27. else
    28. {
    29. $abfragen_email = "SELECT email FROM anmeldeinformationen WHERE email='$email'";
    30. $abfragen_user = "SELECT username FROM anmeldeinformationen WHERE username='$username'";
    31. $ergebnis_email = mysql_query($abfragen_email);
    32. $ergebnis_user = mysql_query($abfragen_user);
    33. if (mysql_num_rows($ergebnis_email) > 0 or mysql_num_rows($ergebnis_user) > 0)
    34. {
    35. echo("<br>Errorcode: <b>1</b><br>Username und/oder E-Mail Adresse existiert bereits");
    36. }
    37. else
    38. {
    39. $sql = "INSERT INTO ".
    40. "anmeldeinformationen (Benutzername, Passwort, E-Mail) ".
    41. "VALUES ('".
    42. $username."', '".
    43. $password."', '".
    44. $email."')";
    45. $eintrag = mysql_query($sql);
    46. if ($eintrag)
    47. {echo('<br>FINISHED');}
    48. else
    49. {die("<br>Errorcode: <b>5</b>");}
    50. }
    51. }
    52. }
    53. else
    54. {
    55. die('<br>Errorcode: <b>6</b>');
    56. }
    57. mysql_close();
    58. ?>



    Also das hier: "if (mysql_num_rows($ergebnis_email) > 0 or mysql_num_rows($ergebnis_user) > 0)" muss iwas nicht stimmen ^^




    PS: Benutze Xampp zum testen, weil ich es gerne auf einem Server haben will :D