0

リモート サイトにログインしようとしていますが、ログインが成功すると新しいページにリダイレクトされます。そのページで、いくつかのドロップダウン (1 つの日付範囲を含む) から選択して、レポートを生成したいと考えています。

現在、サイトにログインできるスクリプトがありますが、ドロップダウンを反復処理する方法がわかりません。助言がありますか?

$url = 'example.co.za/login'; 
$vars = array('username'=>'', 'password'=>''); 

$login = getUrl($url, 'post', $vars); 
$remotePage = getUrl($remotePageUrl); 

function getUrl($login) 
{
    $ch = curl_init();
    if ($method == 'post') 
    {
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
    }
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies/cookies.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies/cookies.txt');
    $buffer = curl_exec($ch);
    print_r($buffer3);
    curl_close($ch);
    return $buffer;
}
4

1 に答える 1

0

プログラムでフォームを送信する場合、ドロップダウンから「選択」する必要はありません。他の入力フィールドと同様に扱い、フォーム要素に値を渡すことができます。ただし、ドロップダウンで値の 1 つを渡す必要があります。これは、サーバーが受け取ることを期待しているためです。

このようなドロップダウンの場合:

<select name="weekday">
    <option value="Sunday">Sunday</option>
    <option value="Monday">Monday</option>
    <option value="Tuesday">Tuesday</option>
    <option value="Wednesday">Wednesday</option>
    <option value="Thursday">Thursday</option>
    <option value="Friday">Friday</option>
    <option value="Saturday">Saturday</option>
</select>

ログインフォームと同じように POST を実行できます。

$vars = array("weekday" => "Friday");
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
于 2012-12-07T18:18:43.597 に答える