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">

我需要做的就是确保每次都检查它。所以我可以添加第二个

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

只是点击我只是想不通的框。谢谢

4

2 回答 2

1

我不知道从哪里来$_POST['historicalMatches'],但这可能是问题所在。

添加:

'historicalMatches' => 'on'

到您的数组$searchCriteria应该是模拟被选中的复选框的正确方法。简单地从 postfields 中省略该值将表明该框未选中。

由于复选框的值为on,因此只需在您希望选中复选框时使用复选框名称发布该值,或者将其保留在参数之外以使其未选中。

于 2012-11-06T23:51:46.857 回答
0

您可以尝试更改 URL 字符串并以这种方式提交 Posted 数据,而不是尝试仅使用 cURL 填写表单?

如果您没有找到答案,请尝试查看 Firefox 的 Http Headers 扩展。从那里您可以看到可用于向服务器提交数据的 URL 字符串。然后使用 cURL 和一些简单的 PHP 变量,您可以更改 URL 字符串并执行请求。

它基本上会为您填写表格并提交数据。我不确切知道您要做什么,但是如果您找不到如何使用您的方法检查该框,请看看这个!

于 2012-11-06T23:41:56.297 回答