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 :: Версия для печати :: доступ на локальный ftp через глобал
Форумы портала PHP.SU » » Работа с файловой системой и файлами » доступ на локальный ftp через глобал

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

1. TroL - 14 Мая, 2013 - 11:14:56 - перейти к сообщению
в сети имеется ФТП сервер, и доступ с сети к нему 192.168.1.1, ну и имеется логмн и пароль. и есть у нему удаленный доступ, без логина и пароля.

мне надо получить файл с ФТП как с удаленного компа так и с локального через одинаковую ссылку. доступ надо получить через браузер с сайта в глобальном доступе

ftp://globalIP/путь к файлу - с глобала есть доступ с сети нет
ftp://locallIP/путь к файлу - наоборот естественно

может как то через пхп получать ссылку для скачивания?
2. EuGen - 14 Мая, 2013 - 11:32:44 - перейти к сообщению
Можно. Смотрите адрес пришедшего клиента (то есть $_SERVER['REMOTE_ADDR']), и если он принадлежит локальной сети, показывать ссылку с локальным IP, в противном случае - с внешним.
3. TroL - 14 Мая, 2013 - 11:54:24 - перейти к сообщению
создал файл на сайте, с

показывает глобальный ip с локального ПК
4. EuGen - 14 Мая, 2013 - 12:10:35 - перейти к сообщению
Значит, локальная сеть использует WAN-шлюз для выхода в интернет, и уже из внешней сети приходит сам запрос. Идентифицировать его тогда по IP-адресу машины не удастся. В случае, если пользователи "добросовестны" - можно устанавливать куки на признак "локальной ссылки" (а при её отсутствии - например, выдавать запрос, если это допустимо политикой безопасности), но вот если предполагается, что клиенты могут действовать с целью нарушить эту логику - увы, определить локального/внешнего пользователя в Вашей архитектуре не удастся.
5. TroL - 14 Мая, 2013 - 12:20:18 - перейти к сообщению
на счет безопасности никто не заморачивался на фтп, зная один ип можно залезть на фпт с глобала.
решил проблему таким путем
создал ссылку на функцию через которую отправляется имя фала
а она же через header выдает файл

PHP:
скопировать код в буфер обмена
  1.       $filename = $_GET['file'];
  2.  
  3.      $file = "ftp://".FTPLOGIN.':'.FTPPASSWORD.'@'.FTPIP.FTPFILEDIR."$filename";
  4.  
  5. if (file_exists($file)) {
  6.     header('Content-Description: File Transfer');
  7.     header('Content-Type: application/octet-stream');
  8.     header('Content-Disposition: attachment; filename='.basename($file));
  9.     header('Content-Transfer-Encoding: binary');
  10.     header('Expires: 0');
  11.     header('Cache-Control: must-revalidate');
  12.     header('Pragma: public');
  13.     header('Content-Length: ' . filesize($file));
  14.     ob_clean();
  15.     flush();
  16.     readfile($file);
  17.     exit;
  18. }
  19.  

(Добавление)
Ну с этой бедой разобрался, теперь появилась другая, к файлам есть превьюшка, которая тоже хранится на фтп, и отображаться должна на сайте, в коде получаю изображение таким же путем как и выше
PHP:
скопировать код в буфер обмена
  1. $file = "ftp://".FTPLOGIN.':'.FTPPASSWORD.'@'.FTPIP.FTPFILEDIR."$filename";

CODE (html):
скопировать код в буфер обмена
  1.  <img src="<? echo $file; ?>" />


выдает ошибку "426 Connection closed; transfer aborted."
6. TroL - 15 Мая, 2013 - 04:48:42 - перейти к сообщению
С глобала все нормально работает, а вот с локального ПК ошибка "426 Connection closed; transfer aborted."

выяснил что ошибка так срабатывает когда я пытаюсь этот файл втиснуть в тег <img />

но картинка не отображается, даже если просто в браузере ввести этот адрес

 

Powered by ExBB FM 1.0 RC1