2010-12-27 4 views
3

Hier ist das Szenario: Ich habe mehrere Benutzer mit Login-Namen aa1, aa2 .. zz99, alle mit dem gleichen Passwort konfiguriert, jetzt möchte ich mich an einem anmelden PHP-basierter Server mit diesen Login-IDs. Ich habe ein funktionierendes Skript, das mit einem Benutzernamen und Passwort in ein Benutzer anmeldet, und mit curl, blättert auf eine Zielseite:Wie kann ich curl verwenden, um mehrere Benutzer von einem PHP-Skript anmelden

 

// 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 = 'abcdefghijklmnopqrstuvwxyz'; 
    $string = '';  
    for ($p = 0; $p 
+0

Was ist Ihre Frage? –

Antwort

0

Es scheint, den Code „Schnipsel“ Sie gefunden haben, ist ein Kommandozeilen-Skript. Um mit mehreren Konten anmelden, müssen Sie den Ausführungscode neu gruppieren (alle von Anfang bis while-Schleife) in eine Funktion wie:

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

Dann Schleife über die Benutzer-Liste, und rufen Sie die Funktion:

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