Qt Post



  • Hallo Leute,

    ich wollt jetzt ein Simmuliertes Login + Userbereich bewegen.

    Simmulierstes Login hab ich schon, was ich noch brauch ich im Userbereich
    bewegen, so ich weiß jetzt das man dafür ein Session ID braucht, ich hab jetzt
    mit HttpLiveHeader und Wireshark nachgeschaut, aber nur vergeblich. Da wird leider keine Session ID mitgegeben nur eine Chat Session und die PHPSESSID. Ich weiß grad nicht womit ich es machen soll, was könnte ich noch außer die Session ID mitgeben damit ich mit Authentifizieren kann?

    hier mal was von Client:

    das wird geschickt:

    http://de1.mechrage.de/game/login_looki.php 
    
    POST /game/login_looki.php HTTP/1.1 
    Host: de1.mechrage.de 
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729) 
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
    Accept-Language: en-US 
    Accept-Encoding: gzip,deflate 
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
    Keep-Alive: 115 
    Connection: keep-alive 
    Cookie: chat_on_off=1; base_ID=28122; chat_switch=2; bnd_chat_aktiv=585; Chat_Session=be33ae11eb; PHPSESSID=d5cb76b81f44aba966ddc24446823885 
    Content-Type: application/x-www-form-urlencoded 
    Content-Length: 41
    

    das kommt an:

    HTTP/1.1 302 Found 
    Date: Sat, 17 Apr 2010 16:31:44 GMT 
    Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny3 with Suhosin-Patch 
    X-Powered-By: PHP/5.2.6-1+lenny3 
    Expires: Thu, 19 Nov 1981 08:52:00 GMT 
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
    Pragma: no-cache 
    Set-Cookie: Key=c1d2519a92d99009228c6a4ba783c; expires=Tue, 12-Apr-2011 16:31:44 GMT 
    Set-Cookie: chat_on_off=1; expires=Tue, 12-Apr-2011 16:31:44 GMT 
    Location: http://de1.mechrage.de/game/index.php?main=mess&sub=news 
    Vary: Accept-Encoding 
    Content-Encoding: gzip 
    Content-Length: 20 
    Connection: close 
    Content-Type: text/html
    


  • und wo ist deine Frage bezüglich Qt?

    Wie genau stellst du die Anfragen? Welche Qt-Version setzt du ein?



  • meine frage war ja, was ich noch außer die Session ID mitgeben kann damit ich mich im Userbereich bewegen kann.

    so simmuliere ich den Login:

    QNetworkAccessManager *nwam = new QNetworkAccessManager(this);
    
        QNetworkRequest request(QUrl("http://de1.mechrage.de/game/login_looki.php"));
            //request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
            request.setRawHeader("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)");
            request.setRawHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
            request.setRawHeader("Accept-Language","en-US");
            request.setRawHeader("Accept-Encoding","gzip,deflate");
            request.setRawHeader("Accept-Charset","ISO-8859-1,utf-8;q=0.7,*;q=0.7");
            request.setRawHeader("Keep-Alive","115");
            request.setRawHeader("Connection","keep-alive");
            request.setRawHeader("Cookie","bnd_chat_aktiv=585; chat_on_off=1; base_ID=14008; Chat_Session=b57d9ca8f5; PHPSESSID=474c3c92e92fdcedaab3203f9a86157b");
            request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
            request.setHeader(QNetworkRequest::ContentLengthHeader,"44");
    
            QByteArray data;
            QUrl params;
            params.addQueryItem("form","login");
            params.addQueryItem("name","test");
            params.addQueryItem("passwort","123456");
    
            data.append(params.toString());
            data.remove(0,1);
    
            //QNetworkReply *reply = nwam.Post(request,data);
            nwam->post(request,data);
    

    das klappt auch wunderbar die anmeldung, aber wenn ich ein weiteres request schicken will scheiter ich.

    ich benutze die Qt Version: 4.6.2

    also damit man sich im Userbereich bewegen kann braucht man ja
    1 Request. Login

    2 Request. im Userbreich

    beim 2 Request muss man sich Identifizieren können, dass kann man mit der Session ID machen, da die seite in mein Quelltext nicht mit Sessions Arbeitet frag ich mich was ich noch zur identifikation mitschicken könnte.



  • du bekommst vom Server ein Cookie. Das speichert der QNetworkAccessManager in seinem cookieJar (einfach mal in die Doku gucken).

    Ich hab noch nicht mit Cookies gearbeitet, gehe aber eigentlich davon aus, dass er sie automatisch mitschickt, wenn du einen request startest.

    Alternativ kannst du mal nachsehen, ob und welche Cookies er bekommt, das passende rausfiltern und mittels toRawForm() selbst in den Header schreiben

    Die Session-ID dürfte sich übrigens hinter PHPSESSID verstecken


Anmelden zum Antworten