BG Development


  Reply to this topicStart new topicStart Poll

> HTTP_Request 2 Login
Zeardn
Публикувано на: 30-07-2019, 09:34
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 268
Регистриран на: 05.12.14



Колеги,

искам да реализирам авторизация в сайт с коректни данни за вход, но през HTTP_Request2. Възможно ли е това?

Например, имам данни за вход за сайт test.net. Логин страницата на този сайт е test.net/login.php. Аз имам данни за вход: Потребителско име - Admin, Парола - 123456, с които от нормалния адрес успявам да вляза нормално, без проблем.

Обаче, целта ми е да направя HTTP заявка чрез HTTP Request2 (PEAR) и така да се удостоверя.

Какво опитвам и правя, но не успявам?

На отдалечен сайт (друг домейн и хостинг), във файл crw.php съм си написал следния код:

CODE

<?php
      session_start();
      include("HTTP/Request2.php");
      
      $request = new HTTP_Request2('http://test.net/login.php');
       
      try {
          $response = $request->send();
          if (200 == $response->getStatus()) {
              echo $response->getBody();
          } else {
              echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
                   $response->getReasonPhrase();
          }
      } catch (HTTP_Request2_Exception $e) {
          echo 'Error: ' . $e->getMessage();
      }
      
      $_POST['user'] = "Admin";
      $_POST['pass'] = "123456";
?>

<script>
      document.getElementById("loginform").submit();
</script>


Искам да имитирам попълване на данните за формата - тя е с method::post и приема полетата "user" и "pass".

Обаче, когато ме препрати към началната страница след изпълнението на този код, се забелязва, че не съм логнат.

Моля за насоки как да направя това.

Защо го правя?
Искам да направя синхронизация на онлайн магазин с друг, но този друг изисква да си влязал в системата, за да показва цените, които ми трябват за синхронизацията.


--------------------
StackOverflow Member
PMEmail Poster
Top
Major Obvious
Публикувано на: 30-07-2019, 12:37
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 212
Регистриран на: 16.12.17



Не го знам това HTTP_Request2 как работи но това което ти трябва принципно е да отвориш дев тоолс на браузъра и гледаш какво точно има в рикуеста когато се логваш ръчно и какви кукита ти слага сайта. След това си проверяваш дали рикуеста който праща кода ти съвпада със този от ръчния вариант и дали имаш запазени необходимите кукита. Ако сайта няма някаква допълнителна защита, тия неща са достатъчни за да разбереш къде е проблема.
PMEmail Poster
Top
thrawn
Публикувано на: 30-07-2019, 12:43
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2437
Регистриран на: 17.01.17



Спред мен, ОП изобщо няма идея какво точно прави. На първо четене, това са някакви голи ГЕТ ове, а това направо кърти
CODE
...
     echo $response->getBody();
...
     $_POST['user'] = "Admin";
     $_POST['pass'] = "123456";
?>

<script>
     document.getElementById("loginform").submit();
</script>
PMEmail Poster
Top
Major Obvious
Публикувано на: 30-07-2019, 13:02
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 212
Регистриран на: 16.12.17



Верно, то изглежда сякаш целия код е копнат от документацията и накрая са лепнати усера и паролата с очакване да сработи някакси.
PMEmail Poster
Top
Zeardn
Публикувано на: 30-07-2019, 14:17
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 268
Регистриран на: 05.12.14



Ами като не знам точно как работи системата, да - кода за заявкава е копиран от документацията. Пост данните съществуват след това на началната страница, след пренасочването.

Очаквам от вас някакви насоки. Критики има за всеки icon_smile.gif


--------------------
StackOverflow Member
PMEmail Poster
Top
Major Obvious
Публикувано на: 30-07-2019, 15:08
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 212
Регистриран на: 16.12.17



Усера и паролата трябва да ги изпратиш с рикуеста. Помисли как очакваш кода ти да работи като първо пращаш празен рикуест и накрая изплякваш усер/парола които не се използват никъде в кода.

Трябва ти нещо от сорта на
$request->post['user'] = 'Admin';
$request->post['pass'] = '123456';

и накрая $request->send();
PMEmail Poster
Top
NoBBy
Публикувано на: 30-07-2019, 15:17
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 30
Регистриран на: 31.08.05



Трябва да изпълниш POST заявка към скрипта за логин който се вика от формата.

Т.е. request-ът ти трябва да е нещо подобно (съдейки по документацията, не съм ползвал библиотеката)

CODE
$request = new HTTP_Request2('http://test.net/login.php');
$request->setMethod(HTTP_Request2::METHOD_POST)
   ->addPostParameter('username', 'admin')
   ->addPostParameter('password', '123456');


След като изпратиш заявката и получиш отговора, тярбва да има някакъв начин от него да вземеш сесийната бисквитка.

На заявките които искат логин, ще подаваш тази бисквитка, а не име и парола и ще парсваш вече техните отговори за да си извлечеш информацията която ти трябва.

Това което правиш в момента сетвайки $_POST данни и джаваскрипта, е безмислено

PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0