C# - Register und Login | POST

    • C#

    Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von MarvinKleinMusic.

      C# - Register und Login | POST

      Hey :)

      Ich wollte mit euch meinen derzeitigen Code teilen mit welchem ich die Registrierung sowie die Anmeldung von Usern auf meinem Webspace abwickle.

      Hier die UserHandler.cs

      C#-Quellcode

      1. using System.Windows.Forms;
      2. using System;
      3. using System.Linq;
      4. namespace secureLogin.Klassen
      5. {
      6. /**
      7. * Die UserHandler-Klasse
      8. * stellt Methoden zur verfügung mit der sich
      9. * Benutzer Registrieren und Anmelden können
      10. *
      11. * @auhtor Johannes aka codey
      12. * @version 1.0
      13. */
      14. class UserHandler
      15. {
      16. /** Host auf welchem sich die Login Scripts befinden */
      17. string host = "http://www.deinhost.com/handler.php?action=";
      18. /** Random für den token */
      19. Random tokenGenerator = new Random();
      20. /** Objektverweis für die Hashklasse anlegen */
      21. Klassen.HashHandler Hash = new HashHandler();
      22. Klassen.Nachrichten Nachrichten = new Nachrichten();
      23. /**
      24. * Mit dieser Methode können sich
      25. * Benutzer des Programmes in der
      26. * Datenbank registrieren
      27. *
      28. * @param username Nutzername mit dem sich der Benutzer später anmeldet
      29. * @param password Passwort mit dem sich der Benutzer später anmeldet
      30. * @param hwid Hardware-ID welche genutzt wird um die sicherheit des Accounts zu gewährleisten
      31. */
      32. public void Registrieren(string username, string password, string hwid)
      33. {
      34. WebBrowser wb = new WebBrowser();
      35. wb.ScriptErrorsSuppressed = false;
      36. string postData = "username=" + username + "&password=" + password + "&hwid=" + hwid;
      37. System.Text.Encoding encoding = System.Text.Encoding.UTF8;
      38. byte[] bytes = encoding.GetBytes(postData);
      39. wb.Navigate(host + "register&", string.Empty, bytes, "Content-Type: application/x-www-form-urlencoded");
      40. /** Webbrowser laden lassen bis die Website vollständig geladen wurde */
      41. while ( wb.ReadyState != WebBrowserReadyState.Complete)
      42. {
      43. Application.DoEvents();
      44. }
      45. if (wb.DocumentText == "#success_user_registered")
      46. {
      47. Nachrichten.MeldungsAusgabe(Nachrichten.Meldungen.ErfolgreichRegistriert);
      48. }
      49. else { Nachrichten.MeldungsAusgabe(Nachrichten.Meldungen.FehlerBeimRegistrieren); }
      50. }
      51. /**
      52. * Mit dieser Methode können sich
      53. * Benutzer des Programmes in der
      54. * Datenbank anmelden
      55. *
      56. * @param username Nutzername mit dem sich der Benutzer anmeldet
      57. * @param password Passwort mit dem sich der Benutzer anmeldet
      58. * @param hwid Hardware-ID welche genutzt wird um die sicherheit des Accounts zu gewährleisten
      59. */
      60. public void Anmelden(string username, string password, string hwid)
      61. {
      62. string token = Token();
      63. WebBrowser wb = new WebBrowser();
      64. wb.ScriptErrorsSuppressed = false;
      65. string postData = "username=" + username + "&password=" + password + "&hwid=" + hwid + "&token=" + token;
      66. System.Text.Encoding encoding = System.Text.Encoding.UTF8;
      67. byte[] bytes = encoding.GetBytes(postData);
      68. wb.Navigate(host + "login&", string.Empty, bytes, "Content-Type: application/x-www-form-urlencoded");
      69. /** Webbrowser laden lassen bis die Website vollständig geladen wurde */
      70. while (wb.ReadyState != WebBrowserReadyState.Complete)
      71. {
      72. Application.DoEvents();
      73. }
      74. if (wb.DocumentText == Hash.CreateMD5(token).ToLower())
      75. {
      76. Nachrichten.MeldungsAusgabe(Nachrichten.Meldungen.ErfolgreichAngemeldet);
      77. }
      78. else
      79. {
      80. Nachrichten.MeldungsAusgabe(Nachrichten.Meldungen.FehlerBeimAnmelden);
      81. }
      82. }
      83. /**
      84. * Generiert einen Token für den Login
      85. *
      86. * @param sender Stellt einen Verweis auf das Objekt, das das Ereignis ausgelöst hat
      87. * @param e Übergibt ein spezifisches Objekt an das Ereignis, das behandelt wird
      88. */
      89. public string Token()
      90. {
      91. const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
      92. return new string(Enumerable.Repeat(chars, 12)
      93. .Select(s => s[tokenGenerator.Next(s.Length)]).ToArray());
      94. }
      95. }
      96. }


      Wenn ihr Verbesserungsvorschläge habt oder Kritik einfach rein damit :)
      Anbei ein kleiner Verbesserungsvorschlag. Verwende doch die internen Features zur Dokumentation. Dies hat den Vorteil, dass Intellisense dir auch noch zeigt was Methoden und Klassen machen.

      Hier mal ein Beispiel:

      C#-Quellcode

      1. /// <summary>
      2. /// Mit dieser Methode können sich Benutzer des Programmes in der Datenbank anmelden.
      3. /// </summary>
      4. /// <param name="username">Nutzername mit dem sich der Benutzer anmeldet</param>
      5. /// <param name="password">Passwort mit dem sich der Benutzer anmeldet</param>
      6. /// <param name="hwid">Hardware-ID welche genutzt wird um die sicherheit des Accounts zu gewährleisten</param>
      7. public void Anmelden(string username, string password, string hwid)
      8. {
      9. string token = Token();
      10. WebBrowser wb = new WebBrowser();
      11. wb.ScriptErrorsSuppressed = false;
      12. string postData = "username=" + username + "&password=" + password + "&hwid=" + hwid + "&token=" + token;
      13. System.Text.Encoding encoding = System.Text.Encoding.UTF8;
      14. byte[] bytes = encoding.GetBytes(postData);
      15. wb.Navigate(host + "login&", string.Empty, bytes, "Content-Type: application/x-www-form-urlencoded");
      16. /** Webbrowser laden lassen bis die Website vollständig geladen wurde */
      17. while (wb.ReadyState != WebBrowserReadyState.Complete)
      18. {
      19. Application.DoEvents();
      20. }
      21. if (wb.DocumentText == Hash.CreateMD5(token).ToLower())
      22. {
      23. Nachrichten.MeldungsAusgabe(Nachrichten.Meldungen.ErfolgreichAngemeldet);
      24. }
      25. else
      26. {
      27. Nachrichten.MeldungsAusgabe(Nachrichten.Meldungen.FehlerBeimAnmelden);
      28. }
      29. }