Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Правильно формирование заголовков
Форумы портала PHP.SU » PHP » Программирование на PHP » Правильно формирование заголовков

Страниц (1): [1]
 

1. ganzales - 27 Сентября, 2009 - 22:23:14 - перейти к сообщению
Подскажите, как сформировать запрос, для обхода защиты от хотлинков, необходимо отправить реферер, почему то сервер все равно не отдает файл, что я делаю не правильно?
CODE (text):
скопировать код в буфер обмена
  1. $file = 'http://site.ru/file.exe';
  2. $file_stream = @fopen($file, 'rb');
  3. fwrite($file_stream, "GET http://site.ru/file.exe HTTP/1.0\r\n
  4. Host: site.ru\r\n
  5. Referer: http://site.ru/dowload/\r\n");
2. JustUserR - 28 Сентября, 2009 - 11:35:15 - перейти к сообщению
ganzales Может быть несколько предположений
1 Лучше использовать CURL или sockets чтобы быть увереным что послались только ваши заголовки и точно их контролировать
2 Также мне не нравится то что в строке с двойными кавычками реальный перенос стороки не игрорируется и у вас получается два переноса строки что и выдает ошибку (В таком случае даже Host: уже не отсылается)
3 Может система более сложная и ей нужен не только referer но и какие cookie или еще что
4 И наконец а что имено выдает сервере - 403 ?
3. ganzales - 28 Сентября, 2009 - 12:38:42 - перейти к сообщению
1. Неужели без них никак не получится передать реферер?
2. Пробовал с одним переносом, результата такой же
3. 100% нужен реферер, пробовал удаленно качать на сервер через wget с указанием реферера
4. Hot Linking Blocked.

Please Contact Systems Administrator.
4. JustUserR - 28 Сентября, 2009 - 17:36:12 - перейти к сообщению
ganzales Всетаки прсто пониматете когда вы делаете fopen то вы не полнсть контролиуете процесс обмена даными а вот с CURL или sockets выполчете то что надо
5. ganzales - 28 Сентября, 2009 - 17:38:50 - перейти к сообщению
проблема оказалась забытом окнчании "\r\n", так все работает, а как сделать тоже самое на курл, никогда не приходилось с ним сталкиваться
CODE (text):
скопировать код в буфер обмена
  1. # <?php
  2. #  if ($handler = fsockopen ('site.ru', 80)){
  3. #      $headers = "GET /file.exe HTTP/1.1\r\n";
  4. #      $headers.= "Host: site.ru\r\n";
  5. #      $headers.= "Referer: http://site.ru/download\r\n";
  6. #      $headers.= "Connection: close\r\n";
  7. #      $headers.= "\r\n"; // Вы забыли про эту строчку
  8. #      fputs ($handler, $headers);
  9. #      while (!feof ($handler)){
  10. #          echo fgets ($handler, 128);
  11. #      }
  12. #      fclose ($handler);
  13. #  }
  14. #  ?>

 

Powered by ExBB FM 1.0 RC1