Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] logowanie z użyciem curl
Forum PHP.pl > Forum > Przedszkole
Pepe23
witam, mam mały problem, mam skrypt ktory bezposrednio uruchamiał mi dana stronę i odswiezal ja, skrypt wrzucilem na moj serwer i ustawilem proces crona:

  1. function curl_login($url,$data,$proxy,$proxystatus){
  2. $fp = fopen("cookie.txt", "w");
  3. fclose($fp);
  4. $login = curl_init();
  5. curl_setopt($login, CURLOPT_COOKIEJAR, "cookie.txt");
  6. curl_setopt($login, CURLOPT_COOKIEFILE, "cookie.txt");
  7. curl_setopt($login, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  8. curl_setopt($login, CURLOPT_TIMEOUT, 40);
  9. curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE);
  10. if ($proxystatus == 'on') {
  11. curl_setopt($login, CURLOPT_SSL_VERIFYHOST, FALSE);
  12. curl_setopt($login, CURLOPT_HTTPPROXYTUNNEL, TRUE);
  13. curl_setopt($login, CURLOPT_PROXY, $proxy);
  14. }
  15. curl_setopt($login, CURLOPT_URL, $url);
  16. curl_setopt($login, CURLOPT_HEADER, TRUE);
  17. curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  18. curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE);
  19. curl_setopt($login, CURLOPT_POST, TRUE);
  20. curl_setopt($login, CURLOPT_POSTFIELDS, $data);
  21. ob_start(); // prevent any output
  22. return curl_exec ($login); // execute the curl command
  23. ob_end_clean(); // stop preventing output
  24. curl_close ($login);
  25. unset($login);
  26. }
  27.  
  28. function curl_grab_page($site,$proxy,$proxystatus){
  29. $ch = curl_init();
  30. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  31. if ($proxystatus == 'on') {
  32. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  33. curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
  34. curl_setopt($ch, CURLOPT_PROXY, $proxy);
  35. }
  36. curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
  37. curl_setopt($ch, CURLOPT_URL, $site);
  38. ob_start(); // prevent any output
  39. return curl_exec ($ch); // execute the curl command
  40. ob_end_clean(); // stop preventing output
  41. curl_close ($ch);
  42. }



wszystko działało do czasu az administrator zmienil sposob logowania, a zmienil zeby zabezpieczyc sie przed Session fixation:

  1. if(!isset($_SESSION['session_safe']))
  2. {
  3. $_SESSION['session_safe'] = 1;
  4. }
  5.  
  6. if(isset($_SESSION['browser']) && isset($_SESSION['ip']) &&
  7. ($_SESSION['browser'] != $_SERVER['HTTP_USER_AGENT'] ||
  8. $_SESSION['ip'] != $_SERVER['REMOTE_ADDR']))
  9. {
  10. echo 'Błąd autoryzacji!';
  11. }
  12. else
  13. {
  14. $_SESSION['browser'] = $_SERVER['HTTP_USER_AGENT'];
  15. $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];



no i teraz wyskakuje mi ten błąd autoryzacji, gdy loguje sie przez skrypt logowania, kombinowalem troche, np. zmienilem user agenta na takiego jaki ma moja przegladarka internetowa i gdy uruchamiam z niej mój skrypt wszystko dziala

dodam jeszcze ze przed zmiana sposobu logowania poprzez skrypt wysyłałem metoda post
  1. curl_login('adres strony','email=aaa%40o2.pl&pass=aaa&CookieDate=1','','off');


natomiast teraz mam
  1. curl_login('adres strony','email=aaa%40o2.pl&__Identyfikator_sesji=7fa79fed8173ef229d2aee930f5796e5&pass=aaa','','off');


co zmienic zeby poprzez cron ustawic proces logowania sie na dana strone teraz

z góry dziekuje za pomoc

bump

bump2

bump3
Fifi209
Najpierw ustawiasz agenta na mozillę a chwilę później zmieniasz na $_SERVER['HTTP_USER_AGENT'] więc jak to ma działać? Zostaw to wpisane "ręcznie" i tyle.
Pepe23
dziekuję za pomoc, problem rozwiazany guitar.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.