Cześć,

proszę o pomoc. Próbuję zalogować się do strony X a następnie przejść do jednej z podstron i pobrać dane. Problem stanowi uwierzytelnianie. Podaje kod z którego korzystam:

  1. $loginUrl = 'https://strona.pl/authorization'; //action from the login form
  2. $loginFields = array('username'=>'mail@mojmail.pl', 'password'=>'haslo'); //login form field names and values
  3. $remotePageUrl = 'https://strona.pl/pdstrona'; //url of the page you want to save
  4.  
  5. $login = getUrl($loginUrl, 'post', $loginFields); //login to the site
  6.  
  7. $remotePage = getUrl($remotePageUrl); //get the remote page
  8.  
  9. function getUrl($url, $method='', $vars='') {
  10. $ch = curl_init();
  11. if ($method == 'post') {
  12. curl_setopt($ch, CURLOPT_POST, 1);
  13. curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
  14. }
  15. curl_setopt($ch, CURLOPT_URL, $url);
  16. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  17. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  18. curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies/cookies.txt');
  19. curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies/cookies.txt');
  20. $buffer = curl_exec($ch);
  21. //jeżeli pojawił się błąd to go wyświetlimy
  22. if(curl_exec($ch) === false)
  23. {
  24. echo 'Curl error: ' . curl_error($ch);
  25. }
  26. curl_close($ch);
  27. return $buffer;
  28. print $status;
  29. }
  30. // wyłącza pokazywanie błędów dla funkcji loadHTML
  31. libxml_use_internal_errors(true);
  32. $dom = new DOMDocument;
  33. $dom ->strictErrorChecking = FALSE;
  34. $dom->loadHTML($remotePage);
  35. $xpath = new DOMXpath($dom);


wyniku tego zapytania jestem przekierowywany do strony głównej (a nie podstrony). Zaznaczam, że adres mail wprowadzam do skryptu już w formie zakodowanej. Przykład: mail%40mojmail.pl
Skrypt ten działa w przypadku pobierania danych ze stron do których loguję się zwykłym tekstem (np. dom, kasia172622) a nie adresem mail.

Pozdr

Paweł