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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не работает cкрипт для удаленного скачивания файлов с использованием curl

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
sky003
Отправлено: 19 Ноября, 2012 - 22:39:39
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Нояб. 2012  
Откуда: Херсон, Украина


Помог: 0 раз(а)




Здравствуйте!
Есть скрипт:

CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?php
  3.  
  4. //$_POST['file_link'] = "ссылка на файл";
  5. //$_POST['file_name'] = "имя под которым файл буде сохранен";
  6. //$_POST['directory'] = "где сохранить файл"
  7.  
  8. //Допустим есть файл:
  9.         $remote_file = $_POST['file_link'];
  10.          
  11.         /*И условный идентификатор, чтобы не сохранять файл под своим именем, что в случае одинаковых имён удалённых файлов может привести к накладкам*/
  12.         $rand = rand (100, 999);
  13.         $id = "id".$rand."_".$_POST['file_name']."";
  14.          
  15.         //Получаем его расширение:
  16.         $ext=substr ($remote_file, strrpos ($remote_file, "."));
  17.          
  18.         //Если оно подходит для конкретного случая:
  19.         if ( in_array ( $ext, array (".zip", ".rar", ".apk", ".7z") ) )
  20.         {
  21.              //Инициализируем CURL-сессию
  22.              $ch=curl_init ();
  23.              
  24.                  //Устанавливаем для работы нужный файл
  25.              curl_setopt ($ch, CURLOPT_URL, $remote_file);
  26.              
  27.                  //Открываем "поток" для сохранения файла на Вашем сервере:
  28.              $fp=fopen ("".$_POST['directory'].$id.$ext, "w+");
  29.              
  30.                  //Указываем на него ссылку:
  31.              curl_setopt ($ch, CURLOPT_FILE, $fp);
  32.              
  33.                  //Нагло подделываем REFERER:
  34.              curl_setopt ($ch, CURLOPT_REFERER, $remote_file);
  35.                  
  36.                  //Нагло подделываем USERAGENT:
  37.              curl_setopt ($ch, CURLOPT_USERAGENT, "Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.10.289 Version/12.02");
  38.              
  39.                  //Устанавливаем опцию хождения по всем редиректам
  40.              curl_setopt ($ch, CURLOPT_AUTOREFERER, 1);
  41.              
  42.                  //Выполняем CURL-процедуру с заданными параметрами:
  43.              curl_exec ($ch);
  44.              
  45.                  //Закрываем сеанс CURL:
  46.              curl_close ($ch);
  47.              
  48.                  //Закрываем файл:
  49.              fclose ($fp);
  50.                
  51.                 // Проверяем существует ли файл
  52.                 $file = "".SITE_DIRECTORY."".$id.$ext."";
  53.  
  54.                 if($f = @fopen($file, "rb")){
  55.                        
  56.                         print "<b>Файл '".$id.$ext."' загружен!</b>";
  57.                        
  58.                         fclose($f);
  59.                        
  60.                 } else { print "Файл не загружен!";}
  61.  
  62.                 unset($file); //Разрушаем переменную.
  63.  
  64.                 unset($f); //Разрушаем переменную.
  65.  
  66.                 unset($_POST); //Разрушаем переменную.
  67.                  
  68.         }
  69.  
  70. ?>
  71.  


На localhost все работает. Вот решил проверить на хостинге и в итоге файл грузиться в браузер какими-то каракулями.
Файл записовал в папку soft права ставил 777, но возможно какой-то не тот путь для сохранения прописал $_POST['directory'] = "/soft/" исправте если не так

Я php только недавно начал мучать, подскажите пож. в чем проблема

(Отредактировано автором: 19 Ноября, 2012 - 23:02:24)

 
 Top
DlTA
Отправлено: 19 Ноября, 2012 - 22:55:10
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




походу все у вас грузится, но только при отдаче в браузер не указывается в заголовке тип скачиваемого файл, вот браузер и воспринимает эго как страницу, содержащую кракозябры
 
 Top
sky003
Отправлено: 19 Ноября, 2012 - 23:08:31
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Нояб. 2012  
Откуда: Херсон, Украина


Помог: 0 раз(а)




DlTA пишет:
походу все у вас грузится, но только при отдаче в браузер не указывается в заголовке тип скачиваемого файл, вот браузер и воспринимает эго как страницу, содержащую кракозябры


Спасибо за отклик!
окзываеться проблема была в неправильном пути, а именно было '/soft/' исправил './soft/' и все заработало! просто недосмотрел
Только людей зря побеспокоил
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с сетью »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB