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]   

> Описание: самая простая форма
InviS
Отправлено: 05 Мая, 2010 - 03:31:52
Post Id


Гость


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


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




Подскажите, пожалуйста... не могу авторизоваться даже на своем сайте, где тупо 2 формы - логин и пароль... Какие шаги?
1) я делаю пост запрос со своими данными... Получаю ответ.

А дальше что? Нужно мне что-то извлекать из этого всего? как мне дальше путешествовать по страницам? После пост запроса мне приходит снова страничка авторизации... Будто бы пароль не подошел... Но пароль и логин верны 100%.
Использовал вот эту функцию:
PHP:
скопировать код в буфер обмена
  1. function post_content ($url,$postdata) {
  2.   $uagent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
  3.  
  4.   $ch = curl_init( $url );
  5.   curl_setopt($ch, CURLOPT_URL, $url);
  6.   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  7.   curl_setopt($ch, CURLOPT_HEADER, 0);
  8.   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  9.   curl_setopt($ch, CURLOPT_ENCODING, "");
  10.   curl_setopt($ch, CURLOPT_USERAGENT, $uagent);  // useragent
  11.   curl_setopt($ch, CURLOPT_TIMEOUT, 120);
  12.   curl_setopt($ch, CURLOPT_POST, 1);
  13.   curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
  14.   //curl_setopt($ch, CURLOPT_COOKIEJAR, "z://coo.txt");
  15.  // curl_setopt($ch, CURLOPT_COOKIEFILE,"z://coo.txt");
  16.  
  17.   $content = curl_exec( $ch );
  18.   $err     = curl_errno( $ch );
  19.   $errmsg  = curl_error( $ch );
  20.   $header  = curl_getinfo( $ch );
  21.   curl_close( $ch );
  22.  
  23.   $header['errno']   = $err;
  24.   $header['errmsg']  = $errmsg;
  25.   $header['content'] = $content;
  26.   return $header;
  27. }

Ссылку вставлял на www[dot]mysite[dot]ru/login.php - логин файл...
postdata задавал в виде login=mylogin&password=mypassword

Что не так? Подскажите новичку!
 
 Top
JustUserR
Отправлено: 05 Мая, 2010 - 09:14:00
Post Id



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


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


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




InviS пишет:
Дальше что? Нужно мне что-то извлекать из этого всего? как мне дальше путешествовать по страницам? После пост запроса мне приходит снова страничка авторизации... Будто бы пароль не подошел... Но пароль и логин верны 100%.
Это скорее всего одна весьма распространенная ошибка - когда вы отправляете определенную форму то должны передавать не только все поля в том числе и скрытые - но и саму кнопку submit с ее name=value
Если присутствует какие-то JS-функции по авторизации то их надо проверять и эмулировать их исполнение при дальнешх запросах


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


Гость


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


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




Да нет там никаких JS Улыбка А кнопку зачем? У меня проверки на кнопку вроде не стоит. Т.е. в форме логина нет проверки if !empty($_POST[btn])
 
 Top
JustUserR
Отправлено: 05 Мая, 2010 - 17:49:08
Post Id



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


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


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




InviS пишет:
Да нет там никаких JS А кнопку зачем? У меня проверки на кнопку вроде не стоит. Т.е. в форме логина нет проверки if !empty($_POST[btn])
То есть вы пробуете CURL-авторизацию на своем же сайте - в таком случае сделайте print_r входящих данных и сравните их при запросе от CURL и о браузера (Например можете записать эту инофрмацию в log-овый файл)
Также не забывайте что все передаваемые GET/POST-данные должны быть проэкранированы - причем разумеется не сама конечная строка а входящие в нее элементы сами И можете проверить устанавливаются ли у вас cookie - для этого в CURL подключается спецальный файл которые будет хранить клиентские cookie и пересылать их


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


Гость


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


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




воот, помогите мне тоже понять, что я авторизовался на форуме или нет.
вот код
CODE (htmlphp):
скопировать код в буфер обмена
  1.  <?PHP
  2. $ch = curl_init('http://forum.php.su/loginout.php');
  3. curl_setopt($ch, CURLOPT_POST, 1);
  4. curl_setopt($ch, CURLOPT_NOBODY, 1);
  5. curl_setopt($ch, CURLOPT_POSTFIELDS, 'action=login&imembername=k0ma&ipassword=12345&submit=%C2%F5%EE%E4');
  6. curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt"); //сюда идет запись куков
  7. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
  8. curl_exec($ch);
  9. echo $ch;
  10. ?>

что мне в коде добавить чтобы понять что я авторизовался? или редирект меня после этого кода(удачной обработки) должен был отослать на страницу форума?
у меня только на странице вылазит
Resource id #2

(Отредактировано автором: 14 Июля, 2013 - 20:10:44)

 
 Top
AlexAnder
Отправлено: 14 Июля, 2013 - 20:17:37
Post Id



Частый посетитель


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


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




с новым годом 3 раза
(Добавление)
Цитата:
у меня только на странице вылазит
Resource id #2

дык логично же:
Цитата:
PHP:
скопировать код в буфер обмена
  1. $ch = curl_init('http://forum.php.su/loginout.php');
  2. echo $ch;

(Отредактировано автором: 14 Июля, 2013 - 20:18:08)



-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
k0ma
Отправлено: 14 Июля, 2013 - 20:28:48
Post Id


Гость


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


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




ура, авториовался
CODE (htmlphp):
скопировать код в буфер обмена
  1.  <?PHP
  2. $url='http://forum.php.su/';
  3. $urlTo='http://forum.php.su/loginout.php';
  4. $ch = curl_init();
  5. curl_setopt($ch, CURLOPT_URL, $url);
  6. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  7. $html = curl_exec($ch);
  8.  
  9. curl_setopt($ch, CURLOPT_URL, $urlTo);
  10. curl_setopt($ch, CURLOPT_POST, 1);
  11. curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');  // Записываем cookies в файл, чтобы потом можно было их считать
  12. curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); // Теперь читаем cookies с файла
  13. curl_setopt($ch, CURLOPT_POSTFIELDS, 'action=login&imembername=k0ma&ipassword=12345&submit=%C2%F5%EE%E4');
  14. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  15.  
  16. $html=curl_exec($ch);
  17. echo $html;
  18.  
  19. ?>
  20.  

но только написано было что мне вылезет страница авториованного меня, но вылезла не старница http://forum.php.su, а по прежнему показывалась страница localhost/test/index.php , именно та страница, в которой у меня лежал данный код, где косяк?
 
 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