1
function loginpage($loginurl, $loginset, $agent, $cookie){

    $options = array( 
        CURLOPT_SSL_VERIFYPEER    =>    true, 
        CURLOPT_SSL_VERIFYHOST    =>    0, 
        CURLOPT_SSL_VERIFYPEER    =>    0, 
        CURLOPT_COOKIESESSION    =>    true, 
        CURLOPT_CONNECTTIMEOUT     =>     120, 
        CURLOPT_USERAGENT          =>     $agent, 
        CURLOPT_TIMEOUT            =>    120, 
        CURLOPT_FOLLOWLOCATION    =>    true, 
        CURLOPT_RETURNTRANSFER    =>    true, 
        //CURLOPT_REFERER            =>    1, 
        CURLOPT_POST            =>    1, 
        CURLOPT_HEADER            =>    0, 
        CURLOPT_POSTFIELDS        =>    $loginset, 
        CURLOPT_POST            =>    1, 
        CURLOPT_COOKIEJAR        =>    $cookie, 
        //CURLOPT_COOKIE            =>    $strCookie, 
        //CURLOPT_COOKIEFILE        =>    $cookie, 

    ); 
    $ch        = curl_init( $loginurl ); 
    CURL_SETOPT_ARRAY( $ch, $options );  
    $result     = curl_exec( $ch );  
    $err     = curl_errno( $ch );  
    $errmsg  = curl_error( $ch );  
    $header  = curl_getinfo( $ch );  
    curl_close( $ch ); 
    return $result;  
} 

$username    = "myusername..."; 
$password    = "mypassword..."; 
$loginurl    = "http://up.4share.vn/?control=login"; 
$loginset    = "inputUserName=$username&inputPassword=$password"; 
$cookie        = "/uploads/4shareVN_cookie.txt" ; 
$agent        = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"; 

$loginpage = loginpage($loginurl, $loginset, $agent, $cookie);  
echo $loginpage;

このコードを使用すると、cURL を使用して自分のアカウントでログインできます: http://up.4share.vn/?control=login

私の質問は、ログインを維持してこのウェブサイトの別のページに移動する方法です

例: http://up.4share.vn/?control=account_info

それをphpで表示してください。誰か助けてください。

4

2 に答える 2

0

PHP cURL を使用する場合、Cookie には 2 つの重要なオプションがあります。

CURLOPT_COOKIEJAR

curl_close の呼び出し後など、ハンドルが閉じられたときにすべての内部 Cookie を保存するファイルの名前。

したがって、それを使用して、サーバーの応答によって設定されたCookie を保存します

CURLOPT_COOKIEFILE

Cookie データを含むファイルの名前。Cookie ファイルは、Netscape 形式にすることも、単純な HTTP スタイルのヘッダーをファイルにダンプすることもできます。名前が空の文字列の場合、Cookie は読み込まれませんが、Cookie の処理は引き続き有効です。

したがって、それを使用して、保存した Cookie をロードします。

http://up.4share.vn/?control=managerあなたの例では、ログインに成功した後にURLを試してみると、このコードが機能します。

function loginpage($loginurl, $loginset, $agent, $cookie){

    $options = array( 
        CURLOPT_SSL_VERIFYPEER    =>    true, 
        CURLOPT_SSL_VERIFYHOST    =>    0, 
        CURLOPT_SSL_VERIFYPEER    =>    0, 
        CURLOPT_COOKIESESSION    =>    true, 
        CURLOPT_CONNECTTIMEOUT     =>     120, 
        CURLOPT_USERAGENT          =>     $agent, 
        CURLOPT_TIMEOUT            =>    120, 
        CURLOPT_FOLLOWLOCATION    =>    true, 
        CURLOPT_RETURNTRANSFER    =>    true, 
        //CURLOPT_REFERER            =>    1, 
        CURLOPT_POST            =>    1, 
        CURLOPT_HEADER            =>    0, 
        CURLOPT_POSTFIELDS        =>    $loginset, 
        CURLOPT_POST            =>    1, 
        CURLOPT_COOKIEJAR        =>    $cookie, 
        //CURLOPT_COOKIE            =>    $strCookie, 
        CURLOPT_COOKIEFILE        =>    $cookie, 

    ); 
    $ch        = curl_init( $loginurl ); 
    CURL_SETOPT_ARRAY( $ch, $options );  
    $result     = curl_exec( $ch );  
    $err     = curl_errno( $ch );  
    $errmsg  = curl_error( $ch );  
    $header  = curl_getinfo( $ch );  
    curl_close( $ch ); 
    return $result;  
} 

$username    = "zerog31"; 
$password    = "vnpy0966"; 
$loginurl    = "http://up.4share.vn/?control=login"; 
#$loginurl  = "http://up.4share.vn/?control=manager";

$loginset    = "inputUserName=$username&inputPassword=$password&rememberlogin=on"; 
#$loginset = "";
$cookie        = dirname(__FILE__) . "/cookiefile.txt" ; 
$agent        = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"; 

$loginpage = loginpage($loginurl, $loginset, $agent, $cookie);  
echo $loginpage;

ログインに成功したら、$loginurlとを変更し$loginsetて、管理 Web ページを表示します。正しい Cookie を使用しないと、代わりにログインページが表示されます。

于 2013-09-04T13:13:07.267 に答える