Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Login to a website
QtWS25 Last Chance

Login to a website

Scheduled Pinned Locked Moved General and Desktop
loginwebsitewebki
10 Posts 3 Posters 6.8k Views
  • 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 Offline
    A Offline
    AliReza Beytari
    wrote on last edited by
    #1

    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
    0
    • L Offline
      L Offline
      LuGRU
      wrote on last edited by
      #2

      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
      0
      • A Offline
        A Offline
        AliReza Beytari
        wrote on last edited by
        #3

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

        JKSHJ 1 Reply Last reply
        0
        • A AliReza Beytari

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

          JKSHJ Offline
          JKSHJ Offline
          JKSH
          Moderators
          wrote on last edited by
          #4

          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
          0
          • L Offline
            L Offline
            LuGRU
            wrote on last edited by
            #5

            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
            1
            • A Offline
              A Offline
              AliReza Beytari
              wrote on last edited by AliReza Beytari
              #6

              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 !!!

              JKSHJ 1 Reply Last reply
              0
              • A Offline
                A Offline
                AliReza Beytari
                wrote on last edited by
                #7

                Nothing ?!!

                1 Reply Last reply
                0
                • A 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 !!!

                  JKSHJ Offline
                  JKSHJ Offline
                  JKSH
                  Moderators
                  wrote on last edited by
                  #8

                  @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
                  0
                  • A Offline
                    A Offline
                    AliReza Beytari
                    wrote on last edited by
                    #9

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

                    JKSHJ 1 Reply Last reply
                    0
                    • A AliReza Beytari

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

                      JKSHJ Offline
                      JKSHJ Offline
                      JKSH
                      Moderators
                      wrote on last edited by
                      #10

                      @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
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved