发布/获取请求不发送参数

时间:2014-06-26 08:23:50

标签: php post curl request

我正在尝试通过帖子请求将用户名和密码发送到我的localhost上的登录页面。 我使用下面的代码生成请求并将其发送到页面

$url='http://localhost/index.php';
$fields = array('username' => 'admin', 'password' => '1234');
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($fields));
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$result = curl_exec($ch);
curl_close($ch);
echo $result;

修改
的print_r(curl_getinfo($ CH));打印此信息
数组([url] => http://www.url.com/index.php [content_type] => text / html [http_code] => 200 [header_size] => 380 [request_size] => 182 [filetime] => - 1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 2.234 [namelookup_time] => 0.063 [connect_time] => 0.063 [pretransfer_time] => 0.063 [size_upload] => 28 [size_download] => 2322 [speed_download] => 1039 [speed_upload] => 12 [download_content_length] => 2322 [upload_content_length] => 28 [starttransfer_time] => 2.234 [redirect_time] => 0 [ certinfo] => Array()[primary_ip] => :: 1 [primary_port] => 80 [local_ip] => :: 1 [local_port] => 54953 [redirect_url] =>)数组([主持人] => localhost [接受] => / [Content-Length] => 28 [Content-Type] => application / x-www-form-urlencoded)

生成请求,我收到HTTP 200,OK状态作为响应。请求不会随之发送任何参数,作为响应,我会收到正常的登录表单而不是登录屏幕后。

任何人都可以告诉我上面的代码有什么问题。

我尝试使用stream_context_create和file_get_contents,但在两种情况下都会生成相同的响应(登录表单而非登录后屏幕),就像他们正在接收任何参数一样。

1 个答案:

答案 0 :(得分:0)

1)CURLOPT_POST选项期望boolean类型的值。但是,如果count($fields)非空,则true$fields投放到POST,这在您的代码中无关紧要。

2)不要手动构建array数据,而是使用http_build_query()。您也可以将CURLOPT_POSTFIELDS数据传递给string选项,并自动将其转换为Content-Type

3)您不需要设置{{1}}标头,因为cURL会自动为POST请求设置它。