Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
netadmin.ws
Панель управления Регистрция свободна! Календарь Список пользователей Часто задаваемые вопросы Поиск по форуму Архив скриптов Главная   
Форум сетевых администраторов
Форум сетевых администраторов Форум сетевых администраторов » Программирование » PHP » Безопастность файлов !
Предыдущая тема     Следующая тема
Автор
Тема    Новая тема     Ответить на эту тему
TAPAKAH7
Участник

Зарегистрирован: Jul 2004
Место проживания:
Публикаций: 5
Статус: TAPAKAH7 в оф-лайне
Безопастность файлов ! [сообщение #69044]

Помогите пожалуйста найти безопастный построения ссылок на файлы с разширением (*.exe;*.jpg) расположенные на сервере. Например что-бы вместо http://host/files/1.exe писать, http://host/downloads.php?id=($id)! Чтоб id номер этого файла можно было задавать в этом-же, или отдельном файле ! Примерно так-же как это делается с php файлами:

code:

<?php 
switch ($page)
{
case home:
include("home.php");
break;
default:
include("news.php");
break;
}
?>


Всё это похоже на то, как это делает форум с прикреплёнными рисунками и файлами ! Но я не понимаю как такое воплотить в реальность, из-за того что с PHP я знаком на 0.01% !
Помогите пожалуйста! Очень нужно !

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 19-07-2004 15:57
Нажмите сюда для просмотра профайла TAPAKAH7 Отправить Персональное сообщение TAPAKAH7 Посетить домашнию страничку TAPAKAH7! Найти сообщения от TAPAKAH7 Добавить TAPAKAH7 в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
polo
Администратор
Средний рейтинг: 4.77 | Оценок: 106
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус: polo в оф-лайне
[сообщение #69076]


PHP:


$filename 
= 'file.ext';
$path = 'path_to_file/';
        
header("Cache-control: private");
        
header("Content-type: application/force-download");
        
header("Content-transfer-encoding: binary\n");
        
header("Content-disposition: attachment; filename=\"$filename\"");
        
header("Content-Length: ".filesize($path . $filenmae));

__________________
Всегда есть решение.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 20-07-2004 07:47
Нажмите сюда для просмотра профайла polo Отправить Персональное сообщение polo Посетить домашнию страничку polo! Найти сообщения от polo Добавить polo в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
TAPAKAH7
Участник

Зарегистрирован: Jul 2004
Место проживания:
Публикаций: 5
Статус: TAPAKAH7 в оф-лайне
[сообщение #69080]

И как это работает ? Если можно, то поподробнее ! Плиизззз !

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 20-07-2004 09:38
Нажмите сюда для просмотра профайла TAPAKAH7 Отправить Персональное сообщение TAPAKAH7 Посетить домашнию страничку TAPAKAH7! Найти сообщения от TAPAKAH7 Добавить TAPAKAH7 в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
polo
Администратор
Средний рейтинг: 4.77 | Оценок: 106
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус: polo в оф-лайне
[сообщение #69095]

а ты измени переменные $filename - имя файла $path - путь до файла и зпусти в браузере, увидишь как работает.

__________________
Всегда есть решение.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 20-07-2004 13:11
Нажмите сюда для просмотра профайла polo Отправить Персональное сообщение polo Посетить домашнию страничку polo! Найти сообщения от polo Добавить polo в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
TAPAKAH7
Участник

Зарегистрирован: Jul 2004
Место проживания:
Публикаций: 5
Статус: TAPAKAH7 в оф-лайне
[сообщение #69112]

Нет это не то !
Я нащёл подходящее, но есть ещё одна проблема ! Имея этот скрипт, для каждого каталога надо создавать отдельный файл ! Можно ли сделать так, чтобы проверялось сразу-же несколько дирректорий, и определённая директория задавалась определённым id! Например вот так:

http://nd4spd.ovl.ru/downloads.php?id=1&name=1.exe

Где id1=files - папка, а 1.exe - файл расположенный тут в папке id1/1.exe (files/1.exe)

Вот что я переделал, но не работатет !


code:

<?php

$page[url_1] = "programs";
$page[url_2] = "nfsu2/programs";
$page[url_3] = "nfsu/programs";

  $fn = $HTTP_GET_VARS['name'];

  if(strstr($fn, '/'))
  {
    // небольшая защита от попыток закачки из других каталогов
    header($HTTP_SERVER_VARS['SERVER_PROTOCOL'] . ' 403 Forbidden');
    exit;
  }
  $theu = "url"."_"."$id";
  $filename = './$page[$theu]/' . $fn;
  if(!file_exists($filename))
  {
    header($HTTP_SERVER_VARS['SERVER_PROTOCOL'] . ' 404 Not Found');
    exit;
  } 

  $fsize = filesize($filename);
  $ftime = date('D, d M Y H:i:s T', filemtime($filename));
  $fd = @fopen($filename, 'rb');
  if(!$fd)
  {
    header($HTTP_SERVER_VARS['SERVER_PROTOCOL'] . ' 403 Forbidden');
    exit;
  }

  // Если запрашивающий агент поддерживает докачку, то
  // с запросом он отсылает кол-во скаченных байт
  if( isset($HTTP_SERVER_VARS['HTTP_RANGE']) )
  {
    $range = $HTTP_SERVER_VARS['HTTP_RANGE'];
    $range = str_replace('bytes=', '', $range);
    $range = intval($range);
    if($range)
      fseek($fd, $range);
  }
  $content = fread($fd, $fsize);
  fclose($fd);
  
  if($range)
    header($HTTP_SERVER_VARS['SERVER_PROTOCOL'] . ' 206 Partial Content');
  else
    header($HTTP_SERVER_VARS['SERVER_PROTOCOL'] . ' 200 OK');

  // для Opera и Explorer'а отдаем отдельный заголовок
  if( ereg('Opera(/| )([0-9].[0-9]{1,2})', $HTTP_SERVER_VARS['HTTP_USER_AGENT'], $log_version) ||
      ereg('MSIE ([0-9].[0-9]{1,2})', $HTTP_SERVER_VARS['HTTP_USER_AGENT'], $log_version)
    )
  {
    header('Content-Disposition: inline; filename=' . $fn);
    header('Content-Type: application/octetstream');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
  }
  else
  {
    header('Content-Disposition: attachment; filename=' . $fn);
    header('Content-Type: application/octet-stream');
    header('Pragma: no-cache');
  }
  header('Last-Modified: ' . $ftime);
  header('Accept-Ranges: bytes');
  header('Content-Length: ' . ($fsize-$range));
  header('Content-Range: bytes ' . $range . '-' . ($fsize-1) . '/' . $fsize);
  header('Expires: 0');
  print $content;
  exit;

?>


<<<--->>>

Сообщение было отредактировано TAPAKAH7 20-07-2004 в 17:08

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 20-07-2004 17:06
Нажмите сюда для просмотра профайла TAPAKAH7 Отправить Персональное сообщение TAPAKAH7 Посетить домашнию страничку TAPAKAH7! Найти сообщения от TAPAKAH7 Добавить TAPAKAH7 в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
polo
Администратор
Средний рейтинг: 4.77 | Оценок: 106
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус: polo в оф-лайне
[сообщение #69153]

Ты спрашивал как передать файл юзеру, я ответил. А вот как создавать путь до файла и где хранить данные это совсем другой вопрос. Возми хотябы взгляни на доку по пхп, особо обрати внимание на массивы. Ну да ладно, если хочешь могу тебе пример дать:

PHP:


/* вот пример массива
$files = array(
    'fileid' = array(
            'file_path' => 'file_path',
            'file_name' = 'file_name'
            )
    );
*/

// далее создаем массив с нужными файлами
$files = array(
    
'1' = array(
            
'file_path' => '/home/files',
            
'file_name' = 'file1.rar'
            
),
    
'2' = array(
            
'file_path' => '/home/files/tmp',
            
'file_name' = 'file2.rar'
            
)
    );
    
// Далее предположим что хотят скачать файл 2, и обращяются по url download.php?id=2

// тогда мы получаем нужный нам путь к файлу и сам файл
// но сначало не забываем проверить правилен ли указанный id

if (!isset($files[$_GET['id']]))
{
    echo 
"Такой файл не существует";
    exit;
}

$file_name = $files[$_GET['id']]['file_name'];
$file_path = $files[$_GET['id']]['file_path'];
$full_path = $file_path . '/' . $file_name;

// далее делаем нужные на манипуляции по передаче файла юзверю

header("Cache-control: private"); 
header("Content-type: application/force-download"); 
header("Content-transfer-encoding: binary\n"); 
header("Content-disposition: attachment; filename=\"$file_name\""); 
header("Content-Length: ".filesize($full_path));

__________________
Всегда есть решение.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 21-07-2004 19:11
Нажмите сюда для просмотра профайла polo Отправить Персональное сообщение polo Посетить домашнию страничку polo! Найти сообщения от polo Добавить polo в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
TAPAKAH7
Участник

Зарегистрирован: Jul 2004
Место проживания:
Публикаций: 5
Статус: TAPAKAH7 в оф-лайне
[сообщение #69183]

C файлами я разобрался, а как изображения сделать

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 22-07-2004 13:49
Нажмите сюда для просмотра профайла TAPAKAH7 Отправить Персональное сообщение TAPAKAH7 Посетить домашнию страничку TAPAKAH7! Найти сообщения от TAPAKAH7 Добавить TAPAKAH7 в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
TAPAKAH7
Участник

Зарегистрирован: Jul 2004
Место проживания:
Публикаций: 5
Статус: TAPAKAH7 в оф-лайне
[сообщение #69207]

И как можно защитить страницу, от просмотра html кода ?

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 23-07-2004 05:03
Нажмите сюда для просмотра профайла TAPAKAH7 Отправить Персональное сообщение TAPAKAH7 Посетить домашнию страничку TAPAKAH7! Найти сообщения от TAPAKAH7 Добавить TAPAKAH7 в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя



Формат времени GMT. Текущее время 11:48.
Новая тема   Ответить на эту тему [ Версия для печати Печать | Отправить эту страницу другу/знакомому! Отправить | Получать уведомления об обновлении этой темы Подписка ] Предыдущая тема     Следующая тема
Навигация по форуму:
Оценка темы:

Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения.
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
 

Page generated in 0.46666098 seconds (98.82% PHP - 1.18% MySQL) with 21 queries.


  Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
©NetAdmin.ws, 2001-2026.
Powered by: vBulletin
Copyright ©2000, 2001, Jelsoft Enterprises Limited.