Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Generowanie linku na ip?
screv
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.08.2009

Ostrzeżenie: (10%)
X----


Jak cześć może wie z innego tematu, posiadam klasę, umożliwiającą sciąganie filmów bezpośrednio z serwera MegaVideo. Problem w tym, ze generując link na localhoście, wszystko pięknie chodzi, lecz na hoście klasa generuje złe linki. Spowodowane jest to generowaniem linku na IP?
Czy da rade przepisać to tak, żeby link był generowany na serwerze, a każdy korzystający mógł z tego linku ściągać?


  1. <?
  2. class Megavideo
  3. {
  4.  
  5. function __construct($url)
  6. {
  7. preg_match('#\?v=(.+?)$#', $url, $id);
  8.  
  9. $this->id = $id[1]?$id[1]:$url;
  10.  
  11. $this->getxml();
  12.  
  13. $parse = array ( 'runtimehms' => 'duration',
  14. 'size' => 'size',
  15. 's' => 'server',
  16. 'title' => 'title',
  17. 'description' => 'description',
  18. 'added' => 'added',
  19. 'username' => 'username',
  20. 'category' => 'category',
  21. 'views' => 'views',
  22. 'comments' => 'comments',
  23. 'favorited' => 'favorited',
  24. 'rating' => 'rating',
  25. 'k1' => 'key1',
  26. 'k2' => 'key2',
  27. 'un' => 'str');
  28.  
  29. foreach($parse as $key=>$val)
  30. {
  31. $this->parsexml($key, $val);
  32. }
  33.  
  34. $this->size = round($this->size/(1024*1024));
  35.  
  36. }
  37.  
  38. function get($what=false)
  39. {
  40. $all = array( "URL" => "http://www".$this->server.
  41. ".megavideo.com/files/".
  42. $this->decrypt($this->str, $this->key1, $this->key2)."/",
  43. "SIZE" => $this->size,
  44. "TITLE" => $this->title,
  45. "DURATION" => $this->duration,
  46. "SERVER" => $this->server,
  47. "DESCRIPTION" => $this->description,
  48. "ADDED" => $this->added,
  49. "USERNAME" => $this->username,
  50. "CATEGORY" => $this->category,
  51. "VIEWS" => $this->views,
  52. "COMMENTS" => $this->comments,
  53. "FAVORITED" => $this->favorited,
  54. "RATING" => $this->rating
  55. );
  56.  
  57. return $what&&array_key_exists(strtoupper($what),$all)?$all[strtoupper($what)]:$all;
  58. }
  59.  
  60. function getxml()
  61. {
  62. $this->xml = file_get_contents("http://www.megavideo.com/xml/videolink.php?v=".$this->id."&id=".time()) or
  63. die("Error!\n");
  64. }
  65.  
  66.  
  67. function parsexml($attribute, $name)
  68. {
  69. preg_match("#\s$attribute=\"(.+?)\"#", $this->xml, $tmp);
  70. list(,$this->$name) = $tmp;
  71. }
  72.  
  73. function decrypt($str, $key1, $key2)
  74. {
  75. $reg1 = array();
  76.  
  77. for($reg3=0; $reg3<strlen($str); $reg3++)
  78. {
  79. $reg0 = $str[$reg3];
  80.  
  81. switch($reg0)
  82. {
  83. case '0': $reg1[] = '0000'; break;
  84. case '1': $reg1[] = '0001'; break;
  85. case '2': $reg1[] = '0010'; break;
  86. case '3': $reg1[] = '0011'; break;
  87. case '4': $reg1[] = '0100'; break;
  88. case '5': $reg1[] = '0101'; break;
  89. case '6': $reg1[] = '0110'; break;
  90. case '7': $reg1[] = '0111'; break;
  91. case '8': $reg1[] = '1000'; break;
  92. case '9': $reg1[] = '1001'; break;
  93. case 'a': $reg1[] = '1010'; break;
  94. case 'b': $reg1[] = '1011'; break;
  95. case 'c': $reg1[] = '1100'; break;
  96. case 'd': $reg1[] = '1101'; break;
  97. case 'e': $reg1[] = '1110'; break;
  98. case 'f': $reg1[] = '1111'; break;
  99. }
  100. }
  101.  
  102. $reg1 = join($reg1);
  103. $reg6 = array();
  104.  
  105. for($reg3=0; $reg3<384; $reg3++)
  106. {
  107. $key1 = ($key1 * 11 + 77213) % 81371;
  108. $key2 = ($key2 * 17 + 92717) % 192811;
  109. $reg6[] = ($key1 + $key2) % 128;
  110. }
  111.  
  112. for($reg3=256; $reg3>=0; $reg3--)
  113. {
  114. $reg5 = $reg6[$reg3];
  115. $reg4 = $reg3 % 128;
  116. $reg8 = $reg1[$reg5];
  117. $reg1[$reg5] = $reg1[$reg4];
  118. $reg1[$reg4] = $reg8;
  119. }
  120.  
  121. for($reg3=0; $reg3<128; $reg3++)
  122. {
  123. $reg1[$reg3] = $reg1[$reg3] ^ ($reg6[$reg3+256] & 1);
  124. }
  125.  
  126. $reg12 = $reg1;
  127. $reg7 = array();
  128.  
  129. for($reg3=0; $reg3<strlen($reg12); $reg3+=4)
  130. {
  131. $reg9 = substr($reg12, $reg3, 4);
  132. $reg7[] = $reg9;
  133. }
  134.  
  135. $reg2 = array();
  136.  
  137. for($reg3=0; $reg3<count($reg7); $reg3++)
  138. {
  139. $reg0 = $reg7[$reg3];
  140.  
  141. switch($reg0)
  142. {
  143. case '0000': $reg2[] = '0'; break;
  144. case '0001': $reg2[] = '1'; break;
  145. case '0010': $reg2[] = '2'; break;
  146. case '0011': $reg2[] = '3'; break;
  147. case '0100': $reg2[] = '4'; break;
  148. case '0101': $reg2[] = '5'; break;
  149. case '0110': $reg2[] = '6'; break;
  150. case '0111': $reg2[] = '7'; break;
  151. case '1000': $reg2[] = '8'; break;
  152. case '1001': $reg2[] = '9'; break;
  153. case '1010': $reg2[] = 'a'; break;
  154. case '1011': $reg2[] = 'b'; break;
  155. case '1100': $reg2[] = 'c'; break;
  156. case '1101': $reg2[] = 'd'; break;
  157. case '1110': $reg2[] = 'e'; break;
  158. case '1111': $reg2[] = 'f'; break;
  159. }
  160. }
  161.  
  162. return join($reg2);
  163.  
  164. }
  165.  
  166. }
  167. ?>





@edit

Pomocy potrzebuję dość pilnie. Nie ma sprytnego, mogącego mnie naprowadzić do celu?

/

Ten post edytował screv 28.01.2010, 20:44:15
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


A w linii 70. nie ma błędu ? Nie brakuje tam jednego argumentu ?
list(TUTAJ, $this->$name) = $tmp; ?


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
screv
post
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.08.2009

Ostrzeżenie: (10%)
X----


Faktycznie jest przecinek, a nie ma argumentu, jednak jest to gotowa klasa i od poczatku tego nie bylo.
Jeszcze raz dodam, że wszystko pięknie chodzi na localhoście, a na serwerze zewnetrznym, generuje linki, z ktorych nie mogę sciągać.

Ten post edytował screv 28.01.2010, 23:20:10
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Jedyne co mi przychodzi w tym momencie do głowy to ewentualnie nieaktualny czas na serwerze (?)


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
screv
post
Post #5





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.08.2009

Ostrzeżenie: (10%)
X----


Zgadza się. Serwer stoi za granicą naszego kraju.
Czas na serwerze: 07:30:07
Czas u mnie: 08:30

To może być przyczyną?
W takim razie, jak to ominąć?

@edit

  1. function getxml()
  2. {
  3. $czas = time() + 3600;
  4. $ch = curl_init ("http://www.megavideo.com/xml/videolink.php?v=".$this->id."&id=".$czas);
  5.  
  6. curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
  7. curl_setopt($ch,CURLOPT_HEADER, 0);
  8.  
  9. $r = curl_exec($ch);
  10. curl_close($ch);
  11.  
  12. $this->xml = $r;
  13. }


Tak wyglada getxml przerobiony na CURL`a z dodaną godziną, iż serwer ma inną strefę czasową.
I znow to samo. Wyrzuca wszystkie dane, poza dobrym linkiem sciagania.

Ten post edytował screv 29.01.2010, 13:05:10
Go to the top of the page
+Quote Post
darko
post
Post #6





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Tak dodajesz 1 godzinę do timestamp:
  1. $my_time = strtotime("+1 hour");
  2. $this->xml = file_get_contents("http://www.megavideo.com/xml/videolink.php?v=".$this->id."&id=".$my_time) or die("Error!\n");

questionmark.gif
Jak odpalisz u siebie lokalnie po tej zmianie, to znowu nie będzie działać, ale wrzuć na serwer i sprawdź.

// edit @post niżej:
dry.gif poddaję się, chociaż tego nie lubię, może ktoś inny pomoże...


Ten post edytował darko 30.01.2010, 07:31:32


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
screv
post
Post #7





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.08.2009

Ostrzeżenie: (10%)
X----


Zwraca identyczne wynika jak " time () + 3600; ".
Dalej to samo. Tytul, długość filmu i waga jest, link do ściagania jest nie odpowiedni.

//edit
Dodam, że wszystkie wersje testuje na serwerze, nie na localu.

//edit2
@post wyzej:
wielkie dzięki za chęci. poczekam dalej, może znajdzie się ktoś kto da rade pomóc winksmiley.jpg

//edit3
To chyba nie jest zależne od czasu. Mimo dodania godziny do time() na localu dalej śmiga pięknie.
Inny uzytkownik tego forum, w innym temacie uznał, że to wina generowania linku na ip (?) Jeżeli chciałbym, żeby chodziło musiałbym ściagać plik na serwer.
Ale jestem pewien, że da się to jakoś ominąć, tylko nie wiem jeszcze jak. Dalej liczę na waszą chęć pomocy smile.gif


//edit....999
Czy może być to wina leżąca po stronie serwera? Juz trzeba bylo przerabiac skrypt na CURL`a, może coś jeszcze wymaga przerobienia?
  1. "URL" => "http://www".$this->server.
  2. ".megavideo.com/files/".
  3. $this->decrypt($this->str, $this->key1, $this->key2)."/",

Wina leży gdzieś w odnośnikach od tej linijki, bo tylko to wywala źle...

.

.

Ten post edytował screv 29.01.2010, 13:42:11
Go to the top of the page
+Quote Post
darko
post
Post #8





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Tak na marginesie, to nie pomagamy w omijaniu zabezpieczeń smile.gif (chyba zapiszę to w stopce w końcu, bo zbyt często się powtarzam)


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
screv
post
Post #9





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.08.2009

Ostrzeżenie: (10%)
X----


Przecież to tylko w celach edukacyjnych ; )
Go to the top of the page
+Quote Post
webdice
post
Post #10


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(darko @ 30.01.2010, 07:30:53 ) *
Tak na marginesie, to nie pomagamy w omijaniu zabezpieczeń smile.gif


Zamykam.
Go to the top of the page
+Quote Post

Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 16:29