Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z CURL.
Forum PHP.pl > Forum > Przedszkole
b4rt3kk
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.
jaslanin
// 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
b4rt3kk
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.
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.