Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem z CURL.
b4rt3kk
post 25.10.2012, 13:17:13
Post #1





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Witam.

Stworzyłem skrypt, który loguje się na stronę, następnie pobiera odtwarzacz z podstrony.

Problem polega na tym, że na localhost wszystko śmiga jak należy, natomiast po wrzuceniu plików na serwer niestety player wyrzuca błąd, że nie może nawiązać połączenia. Może coś pominąłem? Jedyną różnicą jaką dostrzegam jest inna zawartość ciasteczka, tj. brak znaków nowej linii w całym ciasteczku, które znajduje się na serwerze. Czym to jest spowodowane?

Klasa, która nawiązuje połączenie i pobiera potrzebne zmienne:

  1. class openTV {
  2.  
  3. public $channel;
  4.  
  5. function __construct($channel) {
  6. $this -> channel = $channel;
  7. }
  8.  
  9. function openChannel() {
  10.  
  11. // dane konta
  12.  
  13. $login_email = 'mail@gmail.com';
  14. $login_pass = 'haslo';
  15.  
  16. // utworzenie ciasteczka
  17.  
  18. $fp = fopen("cookie.txt", "w");
  19. fclose($fp);
  20.  
  21. // nawiązanie połączenia oraz logowanie
  22.  
  23. $ch = curl_init();
  24. curl_setopt($ch, CURLOPT_URL, 'http://strona/user/login');
  25. curl_setopt($ch, CURLOPT_POSTFIELDS,'email='.urlencode($login_email).'&password='.urlencode($login_pass));
  26. curl_setopt($ch, CURLOPT_POST, 1);
  27. curl_setopt($ch, CURLOPT_HEADER, 0);
  28. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  29. curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
  30. curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
  31. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  32. curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
  33. curl_setopt($ch, CURLOPT_REFERER, "http://strona/user/login");
  34. $page = curl_exec($ch);
  35.  
  36. // przekierowanie na wybrany kanał
  37.  
  38. curl_setopt($ch, CURLOPT_URL, $this->channel);
  39. curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
  40. curl_setopt($ch, CURLOPT_REFERER, $this->channel);
  41. curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
  42. curl_setopt($ch, CURLOPT_POST, 0);
  43. $info = curl_getinfo ($ch);
  44. $page = curl_exec($ch);
  45. if (curl_errno($ch)) {
  46. echo 'Błąd #' . curl_errno($ch) . ': ' . curl_error($ch);
  47. }
  48.  
  49. // wycięcie jedynie playera oraz tokena dla oglądanej tv
  50.  
  51. preg_match('/session_token=\[[a-zA-Z0-9]{8}\]/', $page, $matches);
  52. $return['token'] = substr($matches[0], 31, 8);
  53.  
  54. preg_match('/<object(.*)>[.\s\S]*<\/object>/', $page, $matches);
  55. $return['player'] = $matches[0];
  56. //$return['player'] = $page;
  57.  
  58. $return['channel'] = $this->channel;
  59.  
  60. return $return;
  61.  
  62. }
  63.  
  64. }


reszta jest nieistotna, bo jedynie opakowuje wyniki w divy i nadaje style css.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
jaslanin
post 25.10.2012, 18:18:40
Post #2





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

Ostrzeżenie: (0%)
-----


// nie doczytałem, myślałem że to curl zwraca błąd

może dostęp z Twojego serwera został przez administratora strony zablokowany. Ja bym spróbował pobrać jakąś podstronę czy nie ma jakiejś blokady... nawet bez logowania.

sprawdzałeś ten plik z cookies w jakimś sensownym programie np. notepad++, bo linux nie zapisuje znaku zamknięcia karety tj. \r i windowsowe proste programy gubią nowe linie.

ciężko coś powiedzieć bez konkretnej strony, ja bym dokładniej sprawdził odpowiedź serwera, tj całą odp wraz z headerami

Ten post edytował jaslanin 26.10.2012, 04:53:22


--------------------
Good luck and happy PHP'ing
Go to the top of the page
+Quote Post
b4rt3kk
post 25.10.2012, 23:51:17
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Tylko nie rozumiem tego fenomenu. Jak żywcem wykopiować object z tej strony i wkleić to śmiga, tak więc robię za pomocą curla i wyrażeń regularnych. Na xampie via localhost działa bez zarzutu, problem się pojawia, gdy wrzucam skrypt na serwer, wtedy nagle jakieś problemy z połączeniem, jednak gdy na tym samym serwerze wkleję żywcem wyjęty kod to hula. Przecież z pomocą curla robię to samo co mógłbym zrobić ręcznie, zaznaczyć fragment kodu ze źródła i wkleić u siebie, powinno działać, a jednak nie działa. Dziwna sprawa, przyjrzę się wysyłanym i odbieranym nagłówkom, może dojdę do jakichś wniosków.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:38