Php CURL автоматический вход - PullRequest
1 голос
/ 19 декабря 2011

Это мой первый вопрос на этом форуме, но он помог мне раньше, найти ответы на него. Поэтому я пытаюсь автоматически войти в свою учетную запись, используя PHP и CURL.

Я новичок в PHP, но до сих пор всякий раз, когда мне нужно было подключиться к веб-странице, сделать сообщение или получить или следовать перенаправлению все работало.

Проблема в том, что в учетной записи, в которую я пытаюсь войти, есть страница пользователя / пароля, за которой следует страница с запоминающимся словом, на которой мне нужно ввести несколько символов из моего запоминающегося слова.

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

Теперь я попытался выяснить, в чем проблема, но все же я не уверен, почему не работает. Я заметил, что JSESSIONID передается сервером при обычном входе в систему, что совпадает, в то время как при запуске моего скрипта JSESSIONID изменяется. Я использую:

curl_setopt($this->curl, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($this->curl, CURLOPT_COOKIEJAR, 'cookie.txt');

Но когда я проверяю файл, он пуст и не был изменен с момента создания. Да, файл можно записать (он имеет 777 прав).

Я не знаю, в этом ли проблема или что-то еще, но я искал ответ и пробовал разные вещи, но ничего не получалось. Так что любые идеи будут оценены.

Спасибо

1 Ответ

0 голосов
/ 21 марта 2012

Вот пример, который я могу подтвердить, работает.Он показывает полный путь к файлу cookieJar и получает полный путь от места выполнения скрипта, поэтому он должен работать в большинстве операционных систем.

<?PHP
$cookiepath = __DIR__.DIRECTORY_SEPARATOR.'cookieJar.txt';
echo "Saving cookies to: $cookiepath\n";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.google.com");
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0');
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiepath);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiepath);
curl_setopt($ch, CURLOPT_HEADER  ,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER  ,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION  ,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$data = curl_exec($ch);
?>
...