Ошибка входа в систему с использованием CURLOPT_POSTFIELDS

0
$username = 'myname';
$password = 'mypass';
$loginUrl = 'https://example.com/login/';

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, $loginUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'user='.$username.'&pass='.$password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$content = curl_exec($ch);

echo $content;

После входа в систему я вижу логин вместо защищенного содержимого. Что пошло не так в моем случае?

  • 0
    Технически, $username и $password должны быть закодированы в URL перед их отправкой. Если они содержат не-URL-безопасные символы, это будет иметь значение. Но я хотел бы проверить свой код на стороне сервера: действительно ли он имеет форму с user и pass поля (или , возможно , username и password ).
  • 0
    @HansZ. для части пароля я должен просто поставить строку? как 'abc', я должен хэшировать их с помощью MD5 или просто поставить 'abc'?
Показать ещё 7 комментариев
Теги:
curl

1 ответ

1

Либо страница входа в систему ожидает чего-то другого, кроме переменных пользователя и прохода (например, он может проверять агент пользователя или больше переменных), или данные неправильно закодированы, вы можете использовать следующий код для правильного кодирования строк:

$data = array(
    'user' => $username,
    'pass' => $password
);

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

Чтобы проверить, какие переменные они ожидают, вы должны использовать какой-то сетевой сниффер, например, в Chrome Developer Tools, вы можете открыть вкладку "Сеть" и проверить, какая форма входа в систему данных отправляется.

Или вы можете опубликовать этот URL здесь, и я проверю это для вас. Вы можете отправить мне письмо на mstrokin на gmail.com, если вы не хотите публиковать его здесь.

  • 0
    спасибо, но теперь он вернулся пустым, означает ли это, что мое имя пользователя и пароль неверны? хмм
  • 0
    это может быть что угодно .. Напишите мне письмо с URL-адресом для входа, и я проверю его. Пустая страница обычно означает, что существует перенаправление (используйте CURLOPT_FOLLOWLOCATION, чтобы выполнить это перенаправление), но если вы получаете исходную незарегистрированную страницу, это означает, что вы не передаете правильные данные формы в URL входа

Ещё вопросы

Сообщество Overcoder
Наверх
Меню