Нужна помощь при входе на удаленный сайт с помощью PHP с использованием cURL - PullRequest
0 голосов
/ 17 ноября 2011

Я пытаюсь войти на следующий сайт удаленно, используя 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 голосов
/ 17 ноября 2011

Если вы используете Firefox, я рекомендую вам сделать фиктивную запись с использованием LiveHTTPHeaders, просто чтобы проверить все поля сообщения.

0 голосов
/ 23 декабря 2012

Я знаю, что это старый, но я возился с тем же, используя .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». Это не сработает, и ваш выходной поток просто вернет данные с главной страницы, на которую вы перенаправлены.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 17 ноября 2011

В поле 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...