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:
$loginUrl = 'https://strona.pl/authorization'; //action from the login form $loginFields = array('username'=>'mail@mojmail.pl', 'password'=>'haslo'); //login form field names and values $remotePageUrl = 'https://strona.pl/pdstrona'; //url of the page you want to save $login = getUrl($loginUrl, 'post', $loginFields); //login to the site $remotePage = getUrl($remotePageUrl); //get the remote page function getUrl($url, $method='', $vars='') { $ch = curl_init(); if ($method == 'post') { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $vars); } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies/cookies.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies/cookies.txt'); $buffer = curl_exec($ch); //jeżeli pojawił się błąd to go wyświetlimy if(curl_exec($ch) === false) { } curl_close($ch); return $buffer; } // wyłącza pokazywanie błędów dla funkcji loadHTML libxml_use_internal_errors(true); $dom = new DOMDocument; $dom ->strictErrorChecking = FALSE; $dom->loadHTML($remotePage); $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ł