Login/Registrierung über PHP mit MySql

    • VB.NET

    Es gibt 117 Antworten in diesem Thema. Der letzte Beitrag () ist von TheGameSiders.

      Login/Registrierung über PHP mit MySql

      Hallo Leute,
      da ich das in letzter Zeit öfters im Forum gelesen hab
      (und die MySqlLib von Dodo leider einen kleinen Fehler hat, den ich nicht finden konnte),
      zeig ich hier meine Lösung (die sehr, sehr, sehr einfach gehalten ist).

      Login

      PHP-Quellcode

      1. <?php
      2. $userpw = mysql_real_escape_string($_POST['pw']);
      3. $userid = mysql_real_escape_string($_POST['u']);
      4. @mysql_connect('localhost', 'root', '') or die (mysql_error());
      5. @mysql_select_db('vb') or die (sqlerror(mysql_errno(), mysql_error()));
      6. $query = "SELECT * FROM `user` WHERE `user`='$userid' AND `passwd`='$userpw'";
      7. $result = mysql_query($query);
      8. $resultcount = mysql_num_rows($result);
      9. if ($resultcount == 0)
      10. {
      11. echo 'Login fehlgeschlagen';
      12. }else {
      13. echo 'Erfolgreich eingeloggt';
      14. }
      15. ?>


      Der dazugehörige VB Code.

      VB.NET-Quellcode

      1. Imports System.Collections.Specialized, System.Net, System.Text, System.Security.Cryptography
      2. Public Class Form1
      3. Dim nv As New NameValueCollection
      4. Dim wc As New WebClient
      5. Private Sub btn_login_Click(sender As System.Object, e As System.EventArgs) Handles btn_login.Click
      6. nv.Clear()
      7. nv.Add("u", log_usr.Text)
      8. nv.Add("pw", MD5StringHash(log_pw.Text))
      9. Dim result() As Byte = wc.UploadValues("http://localhost/login.php", "POST", nv)
      10. Dim resultstring As String = System.Text.Encoding.ASCII.GetString(result)
      11. MessageBox.Show(resultstring)
      12. End Sub
      13. Public Function MD5StringHash(ByVal strString As String) As String
      14. Dim MD5 As New MD5CryptoServiceProvider
      15. Dim Data As Byte()
      16. Dim Result As Byte()
      17. Dim Res As String = ""
      18. Dim Tmp As String = ""
      19. Data = Encoding.ASCII.GetBytes(strString)
      20. Result = MD5.ComputeHash(Data)
      21. For i As Integer = 0 To Result.Length - 1
      22. Tmp = Hex(Result(i))
      23. If Len(Tmp) = 1 Then Tmp = "0" & Tmp
      24. Res += Tmp
      25. Next
      26. Return Res
      27. End Function
      28. End Class


      Registrierung

      VB.NET-Quellcode

      1. Imports System.Collections.Specialized, System.Net
      2. Imports System.Text
      3. Imports System.Security.Cryptography
      4. Public Class Form1
      5. Dim nv As New NameValueCollection
      6. Dim wc As New WebClient
      7. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      8. nv.Clear()
      9. nv.Add("u", TextBox1.Text)
      10. nv.Add("pw", MD5StringHash(TextBox2.Text))
      11. nv.Add("e", TextBox3.Text)
      12. nv.Add("o", "1")
      13. Dim result() As Byte = wc.UploadValues("http://server/register.php", "POST", nv)
      14. Dim resultstring As String = System.Text.Encoding.ASCII.GetString(result)
      15. MessageBox.Show(resultstring)
      16. End Sub
      17. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
      18. nv.Clear()
      19. nv.Add("u", TextBox1.Text)
      20. nv.Add("o", "0")
      21. Dim result() As Byte = wc.UploadValues("http://server/register.php", "POST", nv)
      22. Dim resultstring As String = System.Text.Encoding.ASCII.GetString(result)
      23. MessageBox.Show(resultstring)
      24. End Sub
      25. Public Function MD5StringHash(ByVal strString As String) As String
      26. Dim MD5 As New MD5CryptoServiceProvider
      27. Dim Data As Byte()
      28. Dim Result As Byte()
      29. Dim Res As String = ""
      30. Dim Tmp As String = ""
      31. Data = Encoding.ASCII.GetBytes(strString)
      32. Result = MD5.ComputeHash(Data)
      33. For i As Integer = 0 To Result.Length - 1
      34. Tmp = Hex(Result(i))
      35. If Len(Tmp) = 1 Then Tmp = "0" & Tmp
      36. Res += Tmp
      37. Next
      38. Return Res
      39. End Function
      40. End Class



      PHP-Quellcode

      1. <?php
      2. $username = mysql_real_escape_string($_POST['u']);
      3. $option = $_POST['o'];
      4. $con = mysql_connect('localhost', 'root', '') or die (mysql_error());
      5. mysql_select_db('vb', $con);
      6. $str_query = "SELECT `user` FROM `user` WHERE `user` = '$username'";
      7. $result = mysql_query($str_query, $con) or die (mysql_error());
      8. $resultcount = mysql_num_rows($result);
      9. if ($resultcount > 0 && $option == 0 || $resultcount > 0 && $option == 1)
      10. {
      11. echo 'Username bereits vergeben';
      12. } elseif ($resultcount == 0 && $option == 0)
      13. {
      14. echo "Username verfuegbar";
      15. } elseif ($resultcount == 0 && $option == 1)
      16. {
      17. $ip = $_SERVER['REMOTE_ADDR'];
      18. $ipquery = "SELECT `regip` FROM `user` WHERE `regip`='$ip'";
      19. $ipsql = mysql_query($ipquery);
      20. if (mysql_num_rows($ipsql) == 0)
      21. {
      22. $password = mysql_real_escape_string($_POST['pw']);
      23. $email = mysql_real_escape_string($_POST['e']);
      24. $query = "INSERT INTO `user` (`user`, `passwd`, `email`, `regip`) VALUES (
      25. '$username',
      26. '$password',
      27. '$email',
      28. '$ip')";
      29. $sql = mysql_query($query) or die(mysql_error());
      30. echo 'Erfolgreich registriert';
      31. } else
      32. {
      33. echo 'Mit dieser IP wurde bereits ein Account erstellt';
      34. }
      35. }
      36. ?>



      Falls ihr nicht wisst wie ihr die Tabelle erstellen sollt:
      SQL Query

      SQL-Abfrage

      1. CREATE TABLE IF NOT EXISTS `user` (
      2. `user` text NOT NULL,
      3. `passwd` text NOT NULL,
      4. `email` text NOT NULL,
      5. `regip` text NOT NULL
      6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


      Die PHP Skripte müssen noch entprechend eurer Datenbank angepasst werden.
      Anbei auch ein Sample Projekt mit den PHP Dateien.

      mfg
      Rinecamo
      Dateien

      Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Rinecamo“ ()

      Hallo

      Ich habe dazu mal eine Allg. Frage.

      Wenn ich mit PHP eine Verbindung zu MySQL aufgebaut habe. Kann ich die Verbindung im Programm verwenden? Oder muesste der kommplette austausch ueber PHP erfolgen?

      Wie z.B. Select, insert sowie update?

      Sprich das man einmal vb code benoetigt sowie ein phpcode der es ausfuerht.

      Desweiteren frage ich mich warum das Passwort verschluesselt uebergeben wird. Auf dem Server eines Host (kein eigener Server) wuerde dann das Passwort nochmals verschluesselt oder nicht?

      Dazu wuerde ich dann die Verbindungsdaten (PW) sowieso in der .php Datei speichern.

      Mit freundlichen Gruessen

      Ziller
      1) Nein.
      2) Wo?
      „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

      -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
      Nein, du kannst nicht anschließend per VB direkt zugreifen. Dazu müsstest du dich nochmals per VB dort anmelden.

      Ich nehme an, weil die Passwörter dort gehasht (nicht verschlüsselt!) gespeichert sind. Der Hash wird gebildet und übertragen, um sie abzugleichen.
      „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

      -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
      @Rinecamo

      Beim Login-PHP hast du geschrieben, dass man die Abfrage übergeben kann.
      Ist damit gemeint, dass der Text zum Beispiel im Label angezeigt wird?

      Wenn ja, wäre es nett, wenn du mir das umschreiben könntest. Ich bin totaler PHP-Laie :(
      Ja, aber keiner der beiden Threads hat so richtig was mit diesem Thread zutun.
      Klar die Lib von Dodo ist bestimmt sicherer, allerdings eher was für Fortgeschrittene, die sich schon ein wenig mit MySQL und PHP auskennen.
      Und im 2 Thread wird zwar die Registrierung gezeigt, allerdings mit dem MySQL Connector, was ziemlich unsicher ist, da man das DB Passwort im Programm angeben muss.

      Rinecamo schrieb:

      PHP-Quellcode

      1. //z.B. so:
      2. $query = $_GET['q'];
      3. //Somit kannst du das auch über deinen Browser machen, ansonsten mit der POST Methode, $_POST['q']
      4. $result = mysql_query($query);


      Schwere dieser Sicherheitslücke auf einer Skala von 1-10: 700.
      „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

      -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.