0

curlを使用して登録しているサイトのアカウントにアクセスしようとしています。問題は、ログインページに非表示の認証入力フィールドがあることです。たとえば<input type='hidden' name='auth' value='adih2yerjh'/>、前にcurlを使用してこのフィールドのサイトを確認する方法はありますか。フォームを送信しますか?これが私の機能のモックアップです

function login(){
    $login_email = 'email';
    $login_pass = 'password';

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://www.mysite.com/login.php');
    curl_setopt($ch, CURLOPT_POSTFIELDS,'email='.urlencode($login_email).'&pass='.urlencode($login_pass).'&login=Login');
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
    $page = curl_exec($ch);
    echo $page;
}

編集:認証コードはページが読み込まれるたびに変更されます

4

2 に答える 2

1

あなたが試すことができます

$url = "http://www.mysite.com/login.php";
$html = file_get_contents($url);
preg_match("~<input type='hidden' name='auth'  value='(.*?)' />~",$html,$authHidden);

/**
 // Run your post request with auth=$authHidden
 */
于 2012-10-09T11:18:02.950 に答える
1

2つのcurlリクエストを行う必要があります。
最初にページのコンテンツを取得し、HTMLからその名前を抽出してみてください。また、セッションまたはCookieで処理する必要がある場合もあります。
次に、2番目のcurlリクエストを送信して送信できます。

于 2012-10-09T11:07:44.957 に答える