Frage bezüglich VB und PHP.

  • VB6

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

    Frage bezüglich VB und PHP.

    Hallo Leute,
    ich habe mit einem Tutorial ein Login-System gemacht, dass über PHP und MySQL läuft. Jetzt wollte Ich, dass wenn der Login fehlgeschlagen ist sich nicht das nächste Fenster öffnet (in dem Fall das Hauptmenü), denn immer wenn man auf Login klickt, öffnet er das Hauptmenü auch wenn der Login fehlgeschlagen ist. Es sollte so funktionieren ---> User loggt sich ein -> Login erfolgreich -> Weiterleitung zum Hauptmenü || Und so funktioniert es gerade ---> User loggt sich ein -> Login fehlgeschlagen -> Weiterleitung zum Hauptmenü. Es kommt zwar eine MessageBox mit Login fehlgeschlagen aber er leitet trotzdem zum Hauptmenü.


    PHP-Quellcode

    1. <?php
    2. @mysql_connect('localhost', 'name', 'pw') or die (mysql_error());
    3. @mysql_select_db('db') or die (sqlerror(mysql_errno(), mysql_error()));
    4. $userpw = mysql_real_escape_string($_POST['pw']);
    5. $userid = mysql_real_escape_string($_POST['u']);
    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. echo 'Login fehlgeschlagen';
    11. }else {
    12. echo 'Erfolgreich eingeloggt';
    13. }
    14. ?>


    Visual Basic-Quellcode

    1. Private Sub btn_login_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_login.Click
    2. nv.Clear()
    3. nv.Add("u", log_usr.Text)
    4. nv.Add("pw", MD5StringHash(log_pw.Text))
    5. Dim result() As Byte = wc.UploadValues("webspace/login.php", "POST", nv)
    6. Dim resultstring As String = System.Text.Encoding.ASCII.GetString(result)
    7. MessageBox.Show(resultstring)
    8. Form2.Show()
    9. End Sub


    Was muss ich ändern? Vielen Dank im voraus.
    Moin,

    nutze doch lieber PDO oder am Besten Prepared Statements, dann sparst Du Dir das Escapen und das wäre mit der 2. Methode dann auch objektorientiertes PHP und nicht der sonstige Ranzcode. ^^
    Wenn es zu arg schmerzt, dann nimm' allerwenigstens MySQLi.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    AliveDevil schrieb:

    Gib im PHP-Skript true/false bzw. 0/1 zurück und prüfe in deiner Anwendung, ob der Login erfolgreich war.
    Dann kannst du entsprechend der Abfrage die zweite Form öffnen.


    Hey erstmal vielen Dank für die schnelle Antwort! Wärst du vielleicht so lieb, und würdest mir das ändern bzw. in mein PHP-Skript einfügen? Bin leider noch nicht so fortgeschritten.
    Die Posts haben sich wohl überschnitten.
    Frage bezüglich VB und PHP.

    Ansonsten wärst Du doch wohl in der Lage aus einem String einen Boolean zu machen bzw. das zu ändern. ;)

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Trade schrieb:

    Die Posts haben sich wohl überschnitten.
    Frage bezüglich VB und PHP.

    Ansonsten wärst Du doch wohl in der Lage aus einem String einen Boolean zu machen bzw. das zu ändern. ;)

    Grüße


    Das stimmt, da hat sich wohl was überschnitten :) Aber Du musst bedenken, dass Ich erst ziemlich neu in der Szene bin und noch nicht viel Erfahrungen habe. Mit viel Glück und wenig verstehen habe ich bereits ein Login-System geschafft (mit Tutorial natürlich).

    MfG
    Hm ok. Aber hoffentlich nicht YouTube? :P
    Auf jeden Fall ist halt das mit Prepared Statements performanter und objektorientiert. Sieht halt schlimmer aus. Kann ja mal was schreiben.

    Zum Thema Sicherheit: Das Passwort muss nat. gehasht sein (am Besten gesalzenes u. gepfeffertes SHA256) und die Hashes müssen verglichen werden.
    Hast Du außerdem ein SSl-Zertifikat? Wenn nicht, ist es so oder so eig. alles hinfällig, weil es dann aushebelbar ist.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Trade schrieb:

    Hm ok. Aber hoffentlich nicht YouTube? :P
    Auf jeden Fall ist halt das mit Prepared Statements performanter und objektorientiert. Sieht halt schlimmer aus. Kann ja mal was schreiben.

    Zum Thema Sicherheit: Das Passwort muss nat. gehasht sein (am Besten gesalzenes u. gepfeffertes SHA256) und die Hashes müssen verglichen werden.
    Hast Du außerdem ein SSl-Zertifikat? Wenn nicht, ist es so oder so eig. alles hinfällig, weil es dann aushebelbar ist.

    Grüße


    Also gehasht sind die.
    Geld sparen, kaufen und aufschalten. Ohne das ist das halt sonst manipulierbar.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Präventiv diesen Post und Post #19 durchlesen.
    Du hast zwar VB6 angegeben, aber der von Dir gepostete Code sieht sehr stark nach VB.Net aus. Und in .Net geschriebene Lizenzsysteme sind unsicher, wenn sich der zu schützende Code auf dem Computer des Clients befindet (was hier der Fall ist).
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils