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


Need help logging to remote site with PHP using 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);
?>

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>

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

我知道这是旧的,但我在使用。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

注意,杂项隐藏字段也需要在那里。我遇到的另一个问题是,响应具有后续GET请求所需的多个cookie。因此,您需要使用某种容器,而不是附加单个"Set-cookie"头。这将不起作用,您的输出流将简单地返回您重定向到的主页面的数据。

希望对大家有所帮助。