检索通过curl传递的用户名,密码参数

时间:2011-02-08 11:26:59

标签: php authentication curl

我正在尝试使用curl将用户名和密码参数发送到网址,我想要检索它们。我将参数发送到页面,如下所示:

<?php

$curl = curl_init('http://localhost/sample.php');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);                         
curl_setopt($curl, CURLOPT_USERPWD, 'key:123456');
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);                    
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);                          
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);                           
curl_setopt($curl, CURLOPT_USERAGENT, 'Sample Code');

$response = curl_exec($curl);                                          
$resultStatus = curl_getinfo($curl);                                   

if($resultStatus['http_code'] == 200) {
    echo $response;
} else {
    echo 'Call Failed '.print_r($resultStatus);                         
}
?>

现在在sample.php页面中,如何检索这些参数? (此处,用户名为密钥,密码为123456)。

我认为它们必须在$ _SERVER数组中可用,但它们不可用。

4 个答案:

答案 0 :(得分:2)

某些参数(如CURLOPT_USERAGENT)在HTTP标头中发送,可以使用$_SERVER['HTTP_USER_AGENT']等特殊全局变量检索(参见http://www.php.net/manual/de/reserved.variables.server.php)。

其他人,例如CURLOPT_SSL_VERIFYPEER,只是CURL的本地,不会发送到服务器。

答案 1 :(得分:1)

默认情况下,cURL会发出HTTP GET请求。在这种情况下,您必须将参数附加到您正在呼叫的URL:

$curl = curl_init('http://localhost/sample.php?foo=bar&baz=zoid');

sample.php中,$_GET['bar']$_GET['baz']分别可用。如果是POST请求,您想要发出,则需要通过curl_setopt设置参数:

$curl = curl_init('http://localhost/sample.php');
curl_setopt($curl, CURLOPT_POSTFIELDS, 'foo=bar&baz=zoid');

答案 2 :(得分:1)

要将参数发送到网页,您可以使用两种方法中的一种GET或POST

GET是将参数附加到您要获取的资源名称的位置

例如$url = "http://localhost/sample.php?name=" . urlencode( $value )

另一种选择是通过POST。将帖子作为信息页面发送到服务器,使用curl创建帖子

curl_setopt($ch, CURLOPT_POSTFIELDS, 'name=' . urlencode( $value ) . '&name2=' . urlencode( $value2 ));

另一方面,如果您正在谈论标题,那么您可以通过$_SERVER['headername']数组访问它们。

DC

答案 3 :(得分:1)

您可以在全局$_SERVER数组

中找到用户名和密码
$_SERVER : array
(
     ....
    'PHP_AUTH_USER' => 'the_username'
    'PHP_AUTH_PW' => 'the_password'
)