Keine Weiterleitung nach Login

  • Sonstige

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von noBlubb.

    Keine Weiterleitung nach Login

    Hallo zusammen, ich versteh die Welt nicht mehr, ich verstehe nicht wieso mein Login System nicht Funktioniert, daher hoffe ich das mir hier jemand helfen kann.

    Erst mal der Code:

    Visual Basic-Quellcode

    1. Imports System.Security.Cryptography
    2. Imports System.Text
    3. Public Class Login
    4. Public Function MD5StringHash(ByVal strString As String) As String
    5. Dim MD5 As New MD5CryptoServiceProvider
    6. Dim Data As Byte()
    7. Dim Result As Byte()
    8. Dim Res As String = ""
    9. Dim Tmp As String = ""
    10. Data = Encoding.ASCII.GetBytes(strString)
    11. Result = MD5.ComputeHash(Data)
    12. For i As Integer = 0 To Result.Length - 1
    13. Tmp = Hex(Result(i))
    14. If Len(Tmp) = 1 Then Tmp = "0" & Tmp
    15. Res += Tmp
    16. Next
    17. Return Res
    18. End Function
    19. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    20. Dim webbrowser1 As New WebBrowser
    21. If TextBox1.Text = Nothing Then
    22. MsgBox("Keinen Benutzername eingegeben!")
    23. Else
    24. If TextBox2.Text = Nothing Then
    25. MsgBox("Kein Passwort eingegeben!")
    26. Else
    27. Dim pwstring As String = MD5StringHash(TextBox2.Text)
    28. webbrowser1.Navigate("http://www.domain.de/login.php?username=" & TextBox1.Text & "&password=" & pwstring.ToLower)
    29. Do While webbrowser1.ReadyState <> WebBrowserReadyState.Complete
    30. Application.DoEvents()
    31. Loop
    32. If webbrowser1.DocumentText.Contains("success") Then
    33. UCenter.Show()
    34. Me.Close()
    35. MessageBox.Show("Sie wurden erfolgreich angemeldet.")
    36. Else
    37. MessageBox.Show("Die von Ihnen eingegebenen Anmeldedaten sind ungültig. Bitte überprüfen Sie ihre Eingaben!")
    38. End If
    39. End If
    40. End If
    41. End Sub
    42. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    43. Me.Close()
    44. End Sub
    45. End Class


    Das ist meine Datenbank (MySQL):



    Und das ist die Weiterleitung zur DB:

    PHP-Quellcode

    1. <?
    2. $verbindung = mysql_connect("127.0.0.1", "DB-USER" , "DB-PASS")
    3. or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
    4. mysql_select_db("DB-NAME") or die ("Datenbank konnte nicht ausgewählt werden");
    5. $passwort=$_GET["password"];
    6. $username=$_GET["user"];
    7. $abfrage = "SELECT * FROM login WHERE user LIKE '$username' LIMIT 1";
    8. $ergebnis = mysql_query($abfrage);
    9. $row = mysql_fetch_object($ergebnis);
    10. if($passwort == "" or $username == "" or $row->pwd !== $passwort)
    11. {
    12. echo "Login False;";
    13. }
    14. else
    15. {
    16. echo "Login True;";
    17. }
    18. ?>



    Also das Tool steuert erst die .php an welche auf einem Webspace liegt, in der sind dann die Logindaten für die Datenbank Hinterlegt.
    Dann werden die eingegebenen Userdaten aus dem Tool abgeglichen in der Datenbank, wenn die stimmen geht es weiter und wenn nicht, dann ... (du kommst hier net rein ^^)

    Soweit so gut, das Problem ist das das Tool zwar startet ohne Fehler aber ich nach dem Login nicht weitergeführt werde.
    Was wird denn im Webbrowser angezeigt nachdem du das durchgeführt hast?

    VB.NET-Quellcode

    1. webbrowser1.DocumentText.Contains("success")


    Bei deinem PHP Code sehe ich nicht wo genau das ausgegeben wird?
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:
    Du suchst in deinem Webbrowser nach dem Wort "success"

    Von deiner PHP wird aber was ganz anderes zurückgegeben:

    PHP-Quellcode

    1. if($passwort == "" or $username == "" or $row->pwd !== $passwort)
    2. {
    3. echo "Login False;";
    4. }
    5. else
    6. {
    7. echo "Login True;";
    8. }
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:
    Was wird denn im Webbrowser angezeigt?

    bzw mach mal das hier: (ist nicht schön aber zur Fehlerfindung ;))

    VB.NET-Quellcode

    1. dim wc as new net.webclient
    2. wc.proxy = nothing
    3. messagebox.show(wc.downloadstring("http://www.domain.de/login.php?username=" & TextBox1.Text & "&password=" & pwstring.ToLower))



    #Edit:
    Ich würde es nicht über die GET Methode machen sondern ich würde, wenn schon, auf die POST Methode umsteigen.
    Dazu einfach einen Webclient mit UploadValues erstellen und die Werte die du übergeben willst in einer NameValueCollection.


    ##Edit 2:

    ich glaube ich habe deinen Fehler gefunden. Es liegt an der PHP Datei:

    Wolfman schrieb:

    $abfrage = "SELECT * FROM login WHERE user LIKE '$username' LIMIT 1";


    Deine MySQL Query ist falsch: Verwende statt Like einfach ein "=" und sowohl vor als auch nach der Viariablen $username gehören ein "." punkt.
    also

    PHP-Quellcode

    1. $abfrage = "SELECT * FROM login WHERE user = '".$username."' LIMIT 1";


    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:

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

    Bitte nicht. Dein Script konsumiert sauber jeden Mist den ich einfügen will und damit meine ich wirklich jeden. @see: php.net/manual/de/security.database.sql-injection.php

    Vermutlich willst du nicht gleich ein ganzes Framework aufsetzen, deshalb würde ich dich an ein MySQL ORM verweisen. Eloquent hat sich bei uns in der Produktion bewährt: edzynda.com/use-laravels-eloquent-orm-outside-of-laravel/ . Falls doch ein Framework, könnte Lumen ausreichen lumen.laravel.com/ . Oder du drehst voll auf und beschäftigst dich mit Laravel - das führt aber am eigentlichen Thema vorbei.

    Über die $hidden - Property in Eloquent kannst du hinterher auch ->toJson(); sicher abrufen und das komplette Modell als JSON (per $hidden zum Beispiel das PW-Feld weglassen) an den Client senden. Über Nuget lässt sich ein Paket für JSON sehr schnell installieren, dann läuft es quasi von allein.

    Dein Code lässt sich dann nach dem Eloquent geladen ist etwa so reduzieren:
    $user = User::where('name', $_GET...)->first();
    if( $user->password === ???) {
    echo $user->toJson();
    return;
    }

    Wenn du dich nicht um die Verarbeitung kümmern möchtest, ob das Modell (->Eintrag) vorhanden ist, kannst du auch firstOrFail() verwenden - dann wird einfach ein Error geworden. Sonst gibt's null zurück.

    Besonders magisch wird es bei den Relationen, ich kann mir kaum vorstellen, dass nochmal jemand davon weg will. ( laravel.com/docs/4.2/eloquent )

    Frohes Schaffen ;)