Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Update: Forum Guidelines & Code of Conduct

    Login to a website

    General and Desktop
    login website webki
    3
    10
    5870
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      AliReza Beytari last edited by

      Hey everyone.
      I'm gonna create a new program that can login to a website with keeping cookies and sessions. Please help me how can I do that ??!!!

      Thanks !!

      1 Reply Last reply Reply Quote 0
      • L
        LuGRU last edited by

        Use i.e. QNetworkAccessManager class. Prepare request with loging URL, authentication, etc. and use either GET or POST to send to the WWW "login request".
        This all depends what authentication mechanism WWW that You want login into uses.

        1 Reply Last reply Reply Quote 0
        • A
          AliReza Beytari last edited by

          We have to keep the cookies !!!
          How to do that ??!!

          JKSH 1 Reply Last reply Reply Quote 0
          • JKSH
            JKSH Moderators @AliReza Beytari last edited by

            Hi,

            @AliReza-Beytari said:

            We have to keep the cookies !!!
            How to do that ??!!

            Search Google for "Qt cookies"

            Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

            1 Reply Last reply Reply Quote 0
            • L
              LuGRU last edited by

              QNetworkAccessManager + QNetworkCookieJar = QNetworkCookieJar * QNetworkAccessManager::cookieJar() const
              http://doc.qt.io/qt-5/qnetworkaccessmanager.html#cookieJar
              You can write application that will store (when app is closed), reuse, delete and edit cookies if You like.

              1 Reply Last reply Reply Quote 1
              • A
                AliReza Beytari last edited by AliReza Beytari

                I use it like this :

                void MainWindow::on_pushButton_clicked()
                {
                // http://test.com/login.php --------> Login page
                // http://test.com/usercp.php --------> User control page [that need the cookies]

                QUrl serviceUrl = QUrl("http://test.com/login.php");
                QNetworkAccessManager *networkManager = new QNetworkAccessManager(this);
                connect(networkManager, SIGNAL(finished(QNetworkReply*)),
                        this, SLOT(serviceRequestFinished(QNetworkReply*)));
                
                QUrlQuery postData;
                postData.addQueryItem("username", "my_username");
                postData.addQueryItem("password", "my_password");
                
                QNetworkRequest request(serviceUrl);
                request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
                networkManager->post(request, postData.toString(QUrl::FullyEncoded).toUtf8());
                
                QNetworkCookieJar *cookies = networkManager->cookieJar();
                
                QEventLoop eventLoop;
                
                QNetworkAccessManager mgr;
                mgr.setCookieJar(cookies);
                QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
                
                QNetworkRequest req(QUrl("http://test.com/usercp.php"));
                QNetworkReply *reply = mgr.get(req);
                eventLoop.exec();
                
                if (reply->error() == QNetworkReply::NoError)
                {
                    QMessageBox::information(this, "Result", QString(reply->readAll()));
                }
                

                }

                void MainWindow::serviceRequestFinished(QNetworkReply *reply)
                {
                QMessageBox::information(this, "Result", QString(reply->readAll()));
                }

                But I couldn't send cookies !!!
                Please help !!!

                JKSH 1 Reply Last reply Reply Quote 0
                • A
                  AliReza Beytari last edited by

                  Nothing ?!!

                  1 Reply Last reply Reply Quote 0
                  • JKSH
                    JKSH Moderators @AliReza Beytari last edited by

                    @AliReza-Beytari:
                    Your main problem is: You did not wait for login.php to finish replying, before you sent your request to usercp.php.

                    Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

                    1 Reply Last reply Reply Quote 0
                    • A
                      AliReza Beytari last edited by

                      So, how can I wait for login.php to finish replying ??!!

                      JKSH 1 Reply Last reply Reply Quote 0
                      • JKSH
                        JKSH Moderators @AliReza Beytari last edited by

                        @AliReza-Beytari said:

                        So, how can I wait for login.php to finish replying ??!!

                        Wait for the QNetworkAccessManager::finished() or QNetworkReply::finished() signals. These signals are emitted when the reply has finished.

                        Do you know how to use signals and slots? http://doc.qt.io/qt-5/signalsandslots.html

                        Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post