首页 文章

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

提问于
浏览
1

我试图通过发布请求将用户名和密码发送到我的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;

Edit
的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] =>数组()[primary_ip] => :: 1 [primary_port] => 80 [local_ip] => :: 1 [local_port] => 54953 [redirect_url] =>)数组([Host] => localhost [Accept] => / [Content-Length] => 28 [Content-Type] => application / x- www-form-urlencoded)

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

有人请告诉我上面的代码有什么问题 .

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

1 回答

  • 0

    1) CURLOPT_POST 选项期望值 boolean 类型 . 但是,在您的代码中无关紧要,因为如果 $fields 非空, count($fields) 将被转换为 true .

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

    3)您不需要设置 Content-Type 标头,因为cURL会自动为POST请求设置它 .

相关问题