Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: CURL. Проблемы с авторизацией.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
layla
Отправлено: 14 Мая, 2010 - 18:20:50
Post Id



Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Апр. 2010  
Откуда: Израиль Хайфа


Помог: 0 раз(а)




Выделено в отдельную тему из темы "Урок № 14 - CURL"
Никак не могу авторизоваться на этом форуме через СЮРЛ. Выдает пустую страницу. Запускаю с локалхоста.

Может быть что то изменилось в настройках форума за последний год или у вас какая то ошибка? Попробуйте авторизоваться через СЮРЛ еще раз и напишите ваш код в случае удачи.

(Отредактировано автором: 14 Мая, 2010 - 18:38:48)

 
 Top
Champion Супермодератор
Отправлено: 14 Мая, 2010 - 18:41:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Покажи, что запускаешь.
 
 Top
kochan10
Отправлено: 14 Мая, 2010 - 19:07:32
Post Id


Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




Попробуй сам посмотреть пакеты, которые отправляются при логине через браузер и создать их копию через КУРЛ
 
 Top
layla
Отправлено: 15 Мая, 2010 - 11:25:46
Post Id



Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Апр. 2010  
Откуда: Израиль Хайфа


Помог: 0 раз(а)




После опубликования вчера моего первого сообщения, я уже смог войти.

Вот что я запускаю

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $url = "http://forum.php.su/loginout.php";
  3. $ch = curl_init($url);
  4. curl_setopt($ch, CURLOPT_POST, 1);
  5. curl_setopt($ch, CURLOPT_POSTFIELDS,'action=login&imembername=вашеимя&ipassword=вашпароль&submit=ok');
  6.        
  7. curl_setopt($ch, CURLOPT_COOKIEJAR , "my_cookies.txt");  
  8. curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt");
  9. curl_setopt($ch, CURLOPT_TIMEOUT,    10);
  10. curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
  11. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);    
  12. curl_exec   ($ch );
  13. ?>


Главное чего не хватало у автора статьи в уроке - этой строки curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

Но куки не появляются. А главное что на открывшейся вебстранице все относительные ссылки не правильные то есть начинаются не с http://forum.php.su/ а с localhost

Как с этим бороться?

(Отредактировано автором: 15 Мая, 2010 - 14:16:00)

 
 Top
Champion Супермодератор
Отправлено: 15 Мая, 2010 - 11:46:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




layla пишет:
Главное чего не хватало у автора статьи в уроке - этой строки curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
Наверное, на тот момент не было редиректа при авторизации... Сам разобрался, значит молодец).

layla пишет:
открывшейся вебстранице все относительные ссылки не правильные то есть начинаются не с http://forum.php.su/ а с localhost
В том и дело, что они относительные. Они ни с чего не начинаются. Ты получаешь просто текст. Толчно такой же, как получает браузер. Чтоб ссылки работали, нужно сделать из абсолютными: приписать им всем в начало адрес этого форума.
layla пишет:
Но куки не появляются
Ты их сам должен появить.
Сделай
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1), тогда сможешь получить содержимое в переменную,
curl_setopt($ch, CURLOPT_HEADERS, 1), тогда к началу содержимого приделаются заголовки. В них есть заголовки setcookie. Файлы - для того, чтоб использовать сохраненные куки.
 
 Top
JustUserR
Отправлено: 15 Мая, 2010 - 13:31:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




layla пишет:
После опубликования вчера моего первого сообщения, я уже смог войти.
Могу вам дать такой совет - для того чтобы организовать автоматический доступ к какому-то удаленному сайту через CURL лучше сначала воспользоваться HTTP-снифферов типа Proxomitron - и потом сравнивать HTTP-запросы вашего браузера и вашего PHP-скрипта с CURL-ом и если в них что-то разнится (А это может казаться не столь существенным - например забыли передавать саму кнопку submit от формы) - то можно получить совершенно не то что вы хотели
Что касается HTML-гиперссылок то как правильно они относительные - если хотите сделат их абсолютными добавьте соответствующий домен или с помощью регулярного выражения - или тегом base


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
layla
Отправлено: 15 Мая, 2010 - 14:13:44
Post Id



Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Апр. 2010  
Откуда: Израиль Хайфа


Помог: 0 раз(а)




Championкогда я игрался с параметрами, у меня появлялись куки а потом я их сам удалил, чтобы вовремя заметить от каких параметров это зависело но они так и не появились. Хотя curl_setopt($ch, CURLOPT_HEADERS, 1) я не использовал. Сейчас поставил а они все равно не появляются.

Попробуйте сделать то ж самое у себя чтобы не гадать. Скопируйте мой код и отредактируйте и пришлите сюда. Это очень просто и быстро.
(Добавление)
JustUserR пишет:
Что касается HTML-гиперссылок то как правильно они относительные - если хотите сделат их абсолютными добавьте соответствующий домен или с помощью регулярного выражения - или тегом base
Спасибо, с тегом "басе" все получилось. Правда странно что вы посоветовали сначала регулярное выражение использовать. Слишком большая разница в сложности. Как ехать в Москву из Ленинграда через Владивосток.
 
 Top
JustUserR
Отправлено: 16 Мая, 2010 - 12:48:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




layla пишет:
Спасибо, с тегом "басе" все получилось. Правда странно что вы посоветовали сначала регулярное выражение использовать. Слишком большая разница в сложности. Как ехать в Москву из Ленинграда через Владивосток.
Пожалуйста! А что касается регулярных выражений то я могу с вами не согласиться - напрмер в языке Perl который в луяшей степени подходит для парсинга и обработки текстов регулярные выражения являются встроенной частью языка - и указанная вами задача решается также в одну строку s/\<a(.*?)href=(\"|')?(.*?)\2/http:\/\/site.ru\/$3/igs - хотя конечго тег <base> хорош тем что автоатически подставлчет пути не только для всех гиперссылок но и форм и тд


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB