How can I use curl to log in multiple users from one PHP script

Here is the scenario: I configured several users with login names aa1, aa2 .. zz99, all with the same password, now I want to log in to the php server with these login IDs. I have a working script that registers with one user with a username and password, and using curl, looks at the landing page:

// Assume php, since somehow the php encapsulation quotes were giving me trouble

$ sHost = $ argv [2];
$ sStart = $ argv [3];
$ sReqId = $ argv [4];
$ sPage = $ argv [5];
$ sReqLogFile = $ argv [6];
$ sRespLogFile = $ argv [7];
$ sUserName = $ argv [8];
$ sPassword = $ argv [9];
$ sExecDelay = $ argv [10];
// optional args:
if ($ argc> 11)

{
  $ sCommonSID = $ argv [11];
}
// $ sXhprofLogFile = "";
$ sSysStatsLogFile = "";
$ sBaseUrl = 'https: //'.$sHost.'/';
$ nExecTime = 0;
$ sCookieFileName = 'cookiejar /'. genRandomString (). '. txt';
touch ($ sCookieFileName);


// Set the execution delay:
$ sStart + = $ sExecDelay;


// Get the PHP Session Id:
if (isset ($ sCommonSID))
{
  $ sSID = $ sCommonSID;
} else {
  $ sSID = getSID ($ sHost, $ sBaseUrl, $ sUserName, $ sPassword);
}


// Sleep for 100us intervals until we reach the stated execution time:
do
{
  usleep (100);
} while (getFullMicrotime () $ sPage, 
                         "pageUrl" => $ sBaseUrl, 
    "execStart" => $ nExecStart,
                         "execEnd" => $ nExecEnd, 
                         "respTime" => $ nExecTime,
                         "xhprofToken" => $ sXhpToken,
                         "xhprofLink" => $ sXhpLink,
                         "fiveMinLoad" => $ nFiveMinLoad);
  } else {
    $ nExecStart = 0;
    $ sUrl = "*** ERROR ***";
    $ aReturn = null;
  }
  writeReqLog ($ sReqId, $ nExecStart, $ sSID, $ sUrl, $ sReqLogFile);
  return $ aReturn;
}


function getFullMicrotime ()
{
  $ fMtime = microtime (true);
  if (strpos ($ fMtime, '')! == false)
  {
    list ($ nUsec, $ nSec) = explode ('', $ fMtime);
    return $ nSec + $ nUsec;
  }
  return $ fMtime;
}


function writeRespLog ($ nReqId, $ sHost, $ sPage, $ sSID = "*** ERROR ***", $ nExecStart = 0, $ nExecEnd = 0, $ nRespTime = 0, $ sXhpToken = "", $ sXhpLink = " ", $ nFiveMinLoad = 0, $ sRespLogFile)
{
  $ sMsg = $ nReqId;
  $ sMsg. = "\ t". $ sHost;
  $ sMsg. = "/".$sPage;
  $ sMsg. = "\ t". $ sSID;
  $ sMsg. = "\ t". $ nExecStart;
  $ sMsg. = "\ t". $ nExecEnd;
  $ sMsg. = "\ t". $ nRespTime;
  $ sMsg. = "\ t". $ sXhpToken;
  $ sMsg. = "\ t". $ nFiveMinLoad;
  error_log ($ sMsg. "\ n", 3, $ sRespLogFile);
}


function writeReqLog ($ nReqId, $ nExecStart, $ sSID, $ sUrl, $ sReqLogFile)
{
  $ sMsg = $ nReqId;
  $ sMsg. = "\ t". $ sUrl;
  $ sMsg. = "\ t". $ sSID;
  $ sMsg. = "\ t". $ nExecStart;
  error_log ($ sMsg. "\ n", 3, $ sReqLogFile);
}


function parseSIDValue ($ sText)
{
  $ sSID = "";
  preg_match ('/ SID: (. *) /', $ sText, $ aSID);
  if (count ($ aSID))
  {
    $ sSID = $ aSID [1];
  }
  return $ sSID;
}


function parseFiveMinLoad ($ sText)
{
  $ nLoad = 0;
  $ aMatch = array ();
  preg_match ('/ - 5-MIN-LOAD: (. *) - /', $ sText, $ aMatch);
  if (count ($ aMatch))
  {
    $ nLoad = $ aMatch [1];
  }
  return $ nLoad;
}


function curlRequest ($ sUrl, $ sSID = "")
{
  global $ sCookieFileName;
  $ ch = curl_init (); 
  curl_setopt ($ ch, CURLOPT_URL, $ sUrl); 
  curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
  curl_setopt ($ ch, CURLOPT_SSL_VERIFYHOST, 2); 
  curl_setopt ($ ch, CURLOPT_HEADER, 1); 
  curl_setopt ($ ch, CURLOPT_USERAGENT, "Mozilla / 4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); 
  curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); 
  if ($ sSID == "")
  {
    curl_setopt ($ ch, CURLOPT_COOKIEJAR, $ sCookieFileName);
  }
  else
  {
    curl_setopt ($ ch, CURLOPT_COOKIEFILE, $ sCookieFileName);
  }
  $ result = curl_exec ($ ch); 
  curl_close ($ ch); 
  return $ result;
}


function parseXHProfToken ($ sPageContent)
{
  //https://ktest.server.net/xhprof/xhprof_html/index.php?run=4d004b280a990&source=mybox
  $ sToken = "";
  $ sRelLink = "";
  $ aMatch = array ();
  $ aResp = array ();
  preg_match ('/ $ sToken, "relLink" => $ sRelLink);
  return $ aResp;
}


function genRandomString () {
  $ length = 10;
  $ characters = '0123456789abcdefghijklmnopqrstuvwxyz';
  $ string = '';    
  for ($ p = 0; $ p 
+3
source share
1 answer

It seems that the snippet code you found is a command line script. To log in with multiple accounts, you need to regroup the execution code (everything from the beginning to the while loop) into a function, for example:

function login($sHost, $sStart,$sReqId, $sPage, $sReqLogFile,
               $sRespLogFile, $sUserName, $sPassword, $sExecDelay) {

:

foreach ($users as $sUserName=>$sPassword) {
    login($sStupidArgNames...);
0

Source: https://habr.com/ru/post/1782337/


All Articles