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 :: доступ на локальный ftp через глобал

 PHP.SU

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


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

> Без описания
TroL
Отправлено: 14 Мая, 2013 - 11:14:56
Post Id


Гость


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


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




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

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

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

может как то через пхп получать ссылку для скачивания?
 
 Top
EuGen Администратор
Отправлено: 14 Мая, 2013 - 11:32:44
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Можно. Смотрите адрес пришедшего клиента (то есть $_SERVER['REMOTE_ADDR']), и если он принадлежит локальной сети, показывать ссылку с локальным IP, в противном случае - с внешним.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
TroL
Отправлено: 14 Мая, 2013 - 11:54:24
Post Id


Гость


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


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




создал файл на сайте, с

показывает глобальный ip с локального ПК

(Отредактировано автором: 14 Мая, 2013 - 11:54:57)

 
 Top
EuGen Администратор
Отправлено: 14 Мая, 2013 - 12:10:35
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Значит, локальная сеть использует WAN-шлюз для выхода в интернет, и уже из внешней сети приходит сам запрос. Идентифицировать его тогда по IP-адресу машины не удастся. В случае, если пользователи "добросовестны" - можно устанавливать куки на признак "локальной ссылки" (а при её отсутствии - например, выдавать запрос, если это допустимо политикой безопасности), но вот если предполагается, что клиенты могут действовать с целью нарушить эту логику - увы, определить локального/внешнего пользователя в Вашей архитектуре не удастся.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
TroL
Отправлено: 14 Мая, 2013 - 12:20:18
Post Id


Гость


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


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




на счет безопасности никто не заморачивался на фтп, зная один ип можно залезть на фпт с глобала.
решил проблему таким путем
создал ссылку на функцию через которую отправляется имя фала
а она же через 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."

(Отредактировано автором: 14 Мая, 2013 - 12:50:00)

 
 Top
TroL
Отправлено: 15 Мая, 2013 - 04:48:42
Post Id


Гость


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


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




С глобала все нормально работает, а вот с локального ПК ошибка "426 Connection closed; transfer aborted."

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

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

(Отредактировано автором: 15 Мая, 2013 - 05:43:50)

 
 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