1

私は別のサイト(私が所有していない)に移動し、フィールドに入力して正しく機能する単純なphp curl関数を持っています。唯一のことは、チェックボックスをオンにできないことです。答えが見つからないようです。

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_NOBODY, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); 

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7"); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($ch, CURLOPT_POST, 1); 
$searchCriteria = array(
      'historicalMatches' => $_POST['historicalMatches'],  //the checkbox
      'firstName'  => $_POST['firstName'], 
      'middleName' => $_POST['middleName'],
      'lastName'   => $_POST['lastName'], 
      'suffix'     => $_POST['suffix'],
      'age'        => $_POST['age'],
      etc..);

curl_setopt($ch, CURLOPT_POSTFIELDS, $searchCriteria);  

値を1以上に設定して確認しました。他のページのチェックボックスのhtmlは次のとおりです。

<input type="checkbox" name="historicalMatches" value="on">

私がする必要があるのは、それが毎回チェックされていることを確認することだけです。だから私は2番目を追加することができます

curl_setopt($ch, CURLOPT_POSTFIELDS, 'check the box');

ボックスをクリックするだけで、理解できません。ありがとう

4

2 に答える 2

1

$_POST['historicalMatches']どこから来ているのかわかりませんが、それが問題である可能性があります。

追加:

'historicalMatches' => 'on'

の配列に$searchCriteriaチェックボックスをエミュレートする適切な方法である必要があります。ポストフィールドからその値を単に省略すると、ボックスがオフになっていることを示します。

チェックボックスの値はon、であるため、チェックボックスをオンにする場合はチェックボックス名を付けてその値を投稿するか、チェックボックスをオフにする場合はパラメータから除外します。

于 2012-11-06T23:51:46.857 に答える
0

フォームにcURLを入力する代わりに、URL文字列を変更して、投稿されたデータをそのように送信することができますか?

答えが見つからない場合は、FirefoxのHttpヘッダー拡張機能を調べてみてください。そこから、サーバーにデータを送信するために使用できるURL文字列を確認できます。次に、cURLといくつかの単純なPHP変数を使用して、URL文字列を変更し、リクエストを実行できます。

基本的にフォームに記入してデータを送信します。あなたが何をしようとしているのか正確にはわかりませんが、あなたの方法でチェックボックスをオンにする方法が見つからない場合は、これを見てください!

于 2012-11-06T23:41:56.297 に答える