Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2012, 17:36   #1
Gennadiy
Пользователь
 
Регистрация: 12.03.2007
Сообщений: 23
Сообщение спрятать путь

как выдать файл не показывая путь?
есть файлы 1,2,3
один пользователь может скачивать только 1
а второй только 3 файл
как лучше подойти к этой задаче?
у мельзователей есть свои логины
Gennadiy вне форума Ответить с цитированием
Старый 14.05.2012, 18:08   #2
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

C помощью mod_rewrite редиректите название файлы на свой скрипт php
В скрипте разбираетесь с правами пользователей, читаете в нем нужный файл.
В том же скрипте формируете заголовок (header) для выдачи файла и начинаете выдавать в поток прочитанный файл.
Cronos20 вне форума Ответить с цитированием
Старый 14.05.2012, 18:16   #3
Gennadiy
Пользователь
 
Регистрация: 12.03.2007
Сообщений: 23
По умолчанию

mod_rewrite это не подходит
Gennadiy вне форума Ответить с цитированием
Старый 14.05.2012, 18:21   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,179
По умолчанию

подходит.. уметь надо только
ADSoft вне форума Ответить с цитированием
Старый 14.05.2012, 18:28   #5
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Можно ссылку делать прямо на скрипт - а не на сам файл, в ссылке передавать ID файла, который пытаются скачать.
Ну а скрипт уже работает так, как написал Cronos20.
Andkorol вне форума Ответить с цитированием
Старый 14.05.2012, 18:46   #6
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

лично у меня так:
PHP код:
<?
$filename
='files/'.$_GET['file'];///получаем имя файла в папке через Get параметр пример script.php?file=test.test
$mimetype='application/octet-stream';///mimetype
  
if (file_exists($filename)) { ///если файл существует то
///отправляем заголовки
    
header($_SERVER["SERVER_PROTOCOL"] . ' 200 OK');
    
header('Content-Type: ' $mimetype);
    
header('Last-Modified: ' gmdate('r'filemtime($filename)));
    
header('ETag: ' sprintf('%x-%x-%x'fileinode($filename), filesize($filename), filemtime($filename)));
    
header('Content-Length: ' . (filesize($filename)));
    
header('Connection: close');
    
header('Content-Disposition: attachment; filename="' basename($filename) . '";');
// Открываем искомый файл
    
$f=fopen($filename'r');
    while(!
feof($f)) {
// Читаем килобайтный блок, отдаем его в вывод и сбрасываем в буфер
      
echo fread($f1024);
      
flush();
    }
// Закрываем файл
    
fclose($f);
  } else { 
если нет то выводим в заголовки ответа 404
    header
($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
    
header('Status: 404 Not Found');
  }
  exit;
?>

Последний раз редактировалось Кольша; 14.05.2012 в 20:04.
Кольша вне форума Ответить с цитированием
Старый 14.05.2012, 19:45   #7
Gennadiy
Пользователь
 
Регистрация: 12.03.2007
Сообщений: 23
Сообщение

Уважаемый Кольша , Вы можете закоментировать код и пояснить его работу
Gennadiy вне форума Ответить с цитированием
Старый 14.05.2012, 22:24   #8
Gennadiy
Пользователь
 
Регистрация: 12.03.2007
Сообщений: 23
Сообщение

$filename='/programms/'.$folder.'/'.$_GET['file'];
как формируеться путь в этой строке?
http://localhost/login/script.php?file=p.txt

реальный путь http://localhost/login/programms/folder/p.txt

скрипт в папке programms, пишет 404
Gennadiy вне форума Ответить с цитированием
Старый 15.05.2012, 17:47   #9
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Код:
$filename='./folder/'.$_GET['file'];
Кольша вне форума Ответить с цитированием
Старый 15.05.2012, 21:31   #10
Gennadiy
Пользователь
 
Регистрация: 12.03.2007
Сообщений: 23
Сообщение

получилось
но вайлы бъються
вот
G = K 9 CJ _H aJ mH sH tH B A@��B
A = > 2 = > 9 H @ 8 D B 0 1 7 0 F 0 X i ��X

это вордовский файл с текстом
Gennadiy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
спрятать процедуру Bat{CMD}_Men Общие вопросы Delphi 6 21.01.2010 16:20
Как спрятать курсор HollyPaladin Win Api 2 13.12.2009 23:47
спрятать командную строку m.a.x.i.m Общие вопросы Delphi 5 10.12.2009 08:39
Спрятать прогу zotox Помощь студентам 17 18.08.2009 18:58
как спрятать бд? Roof БД в Delphi 4 24.10.2008 13:58