需要帮助使用cURL使用PHP登录到远程站点

时间:2011-11-16 21:11:42

标签: php curl

我正在尝试使用cURL远程登录以下站点,但我遇到了麻烦。 http://www.cbssports.com/login

有谁知道我做错了什么?谢谢。

<?

$url = 'http://www.cbssports.com/login';
$fields = array(
            'login_form::userid'=>urlencode('USERNAME'),
            'login_form::password'=>urlencode('PASSWORD')
        );

foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
$fields_string = rtrim($fields_string,'&');

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_setopt ($ch,CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($ch);

curl_close($ch);

?>

3 个答案:

答案 0 :(得分:0)

from有许多隐藏字段,有一个很好的变化,需要其中一个或全部(见下面表格的修剪版本)。

<form method="post" action="/login/index" name="login_form" id="login_form" >
<input type="hidden" name="dummy::login_form" id="dummy::login_form" value="1">
<input type="hidden" id="form::login_form" name="form::login_form" value="login_form">
<input type="hidden" value="http://www.cbssports.com/login" name="login_form::xurl" id="xurl">
<input type="hidden" value="150" name="login_form::master_product" id="master_product">
<input type="hidden" value="cbssports" name="login_form::vendor" id="vendor">
<input type="text" value="" name="login_form::userid" id="userid" size="30" maxlength="50" data-field-required="1">
<input type="password" value="" name="login_form::password" id="password" size="30" maxlength="12" data-field-required="1">
<input type="submit" value="Sign In" class="formButton">
</form>

答案 1 :(得分:0)

如果你使用的是Firefox,我建议你使用LiveHTTPHeaders做一个虚拟帖子,只是为了检查所有的帖子字段。

答案 2 :(得分:0)

我知道这已经过时了,但是我正在使用.NET摆弄同样的东西。以下是POST请求中内容字符串的外观(使用C#字符串连接):

"dummy%3A%3Alogin_form=1&form%3A%3Alogin_form=login_form&login_form%3A%3Axurl=http%3A%2F%2Fwww.cbssports.com%2Flogin&login_form%3A%3Amaster_product=150&login_form%3A%3Avendor=cbssports&login_form%3A%3Auserid=" + userID + "&login_form%3A%3Apassword=" + password

请注意,其他隐藏字段也需要在那里。我遇到的额外问题是,响应有多个cookie,您需要后续的GET请求。因此,您需要使用某种容器而不是附加一个“Set-cookie”标头。这将不起作用,您的输出流将只返回您重定向到的主页面中的数据。

希望能有所帮助。

相关问题