Login.php über sockets aufrufen



  • hi,
    ich schreibe gerade ein programm, das über sockets ein login-script aufruft. Die Variablen werden mit GET übergeben.

    short upper(char user[30], char password[30])
      {
        SOCKET s;
        SOCKADDR_IN addr;
        WSADATA wsa;
        HOSTENT* hent;
        char send_buf[150] = "GET login.php?USER=";
        strcat(send_buf, user);
        strcat(send_buf, "&PW=");
        strcat(send_buf, password);
        strcat(send_buf, "HTTP/1.1\r\nHost: www.beispiel.de\r\nConnection: close\r\n\r\n");
    
        //Starte WinSock 
        if(startWinsock() != 0)
          {
            return 1;
          }
        //Öffne den Socket
        s = socket(AF_INET, SOCK_STREAM, 0);
        if(s==INVALID_SOCKET)
          {
            return 2;
          }
    
        //Definiere die Verbindung
        memset(&addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten 
        addr.sin_family = AF_INET;
        addr.sin_port = htons(80); // verwende port 80(http)
        addr.sin_addr.s_addr = inet_addr(/*hier stände die IP vom Server als string);
    
        //Verbinde
        if( connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR)))
          {
            return 3;
          }
        //Sende
        if( (send(s, send_buf, strlen(send_buf), 0)) < strlen(send_buf) ) 
          {
            return 4;
          }
        //Empfängt
        char antwort[1000];
        antwort[0] = '\0';
        while(true)
        {
        recv(s, antwort, 1024,0);
        if(antwort[0] != '\0') cout<<"Antwort:"<<antwort<<endl;
        antwort[0] = '\0';
        }
        //Killt die verbindung
        closesocket(s);
        //alles Erfolgreich
        return 0;
      }
    
    //Funktion zum Starten der Sockets
    int startWinsock(void)
    {
      WSADATA wsa;
      return WSAStartup(MAKEWORD(2,0),&wsa);
    }
    

    Die Ausgabe:

    Antwort:<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>400 Bad Request</title>
    </head><body>
    <h1>Bad Request</h1>
    <p>Your browser sent a request that this server could not understand.<br />
    </p>
    <hr>
    <address>Apache/2.2.16 (Debian) mod_perl/2.0.4 Perl/v5.10.1 Server at ***.***.***.*** Port 80</address>
    </body></html>
    


  • Da fehlt ein Leerzeichen vor dem HTTP/1.1 .

    Außerdem solltest du vielleicht eine Frage formulieren, wenn du willst, dass dir jemand antwortet und nicht nur einfach schreiben "Ja ich habe hier was, ratet mal, was das Problem ist"... 😉



  • Ja, und?

    Edit:
    Bezogen auf den orginal Post.



  • also die Ausgabe funzt nicht. Eigentlich sollte da irgendwas mit erfolgreich eingeloggt oder so kommen und nicht ne Fehlermeldung, in der steht, dass der Server mit der Anfrage nix anfangen kann. Aber irgendwie ist das doch logisch, oder???

    Das mit dem Leerzeichen war gut. Jetzt kommt:

    Antwort:"http://track.funpic.de/piwik.php?idsite=1" style="border:0" alt="" /></p></noscript>
    </body></html>e
    
    Server: Apache/2.2.16 (Debian) mod_perl/2.0.4 Perl/v5.10.1
    
    Content-Type: text/html; charset=iso-8859-1
    
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>400 Bad Request</title>
    </head><body>
    <h1>Bad Request</h1>
    <p>Your browser sent a request that this server could not understand.<br />
    </p>
    <hr>
    <address>Apache/2.2.16 (Debian) mod_perl/2.0.4 Perl/v5.10.1 Server at www.beispiel.de Port 80</address>
    <script type="text/javascript">
    var pkBaseURL = (("https:" == document.location.protocol) ? "https://track.funpic.de/" : "http://track.funpic.de/");
    document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
    </script><script type="text/javascript">
    try {
    var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 1);
    piwikTracker.trackPageView();
    piwikTracker.enableLinkTracking();
    } catch( err ) {}
    </script><noscript><p><img src=login.php?USER=usernamenhjy&PW=passwortbhj HTTP/1.1
    
    Host: www.beispiel.de
    
    Connection: close
    


  • Benutzt du SSL? Wenn ja, dann muss dein Programm auch verschlüsselt senden.
    Besteht dein Passwort, Username aus Leerzeichen oder anderen speziellen Zeichen? Wenn ja, dann musst du diese entsprechend kodieren.

    Ansonsten lass dir auch mal send_buf ausgeben. Vielleicht läuft noch etwas was beim Zusammensetzen schief.



  • Nein
    Nein
    send_buf ist ok, habs schon früher ausprobiert



  • 1337shaddow schrieb:

    also die Ausgabe funzt nicht. Eigentlich sollte da irgendwas mit erfolgreich eingeloggt oder so kommen und nicht ne Fehlermeldung, in der steht, dass der Server mit der Anfrage nix anfangen kann. Aber irgendwie ist das doch logisch, oder???

    ProgChild schrieb:

    Da fehlt ein Leerzeichen vor dem HTTP/1.1 .

    Hast du das schon korrigiert?



  • Das mit dem Leerzeichen war gut. Jetzt kommt:

    ...



  • Habs jetzt geschafft!!!
    vor dem Login.php hat en slash gefehlt!!!! 🤡 🤡 🤡



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ (auch C++0x) in das Forum Webzeugs verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten