Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> загрузка файлов через php, как это делается? 8( 
:(
    Опции темы
katka
  Дата 3.6.2005, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 19.7.2004

Репутация: нет
Всего: 6



помогите, если не жалко 8( я не особо понимаю в php.. мне нужно сделать каким-то образом, чтобы файлы (например, .pdf) не загружались с сервера просто по прямой ссылке к ним.. а загружались только, если запустился какой-то php-код.
как бы мне сделать?

я нашла на форуме похожую тему, но ничего там не поняла 8(
--------------------
если с другом буду я, если с другом буду я, а медведь — без друга
PM MAIL WWW ICQ   Вверх
Black
Дата 3.6.2005, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


Профиль
Группа: Участник
Сообщений: 980
Регистрация: 15.8.2004

Репутация: 7
Всего: 45



katka
работаем через:

header("Location: путь куда перекинуть браузер пользователя");


Например, в скрипте получаем переменную ID и по ней делаем пересылку на определенный файл, соответствующий этому ID

Пример ссылки:
www.morogennoe.ru/downloads.php?id=12

Код

<?
if(isset($id))
{
 
// коим-то образом получаем из базы название файла соответствующее этому ID
... ля-ля как-то получаем (я бы делал через MySQL)
// теперь перекидываем пользователя прямо на файл
header("Location: ".$nyTb_K_FauJIy_Ha_CePBePe);
// переменная $nyTb_K_FauJIy_Ha_CePBePe - это путь к файлу который мы должны 
// были получить через базу данных или через файл, вообщем из места откуда храним
// информацию о файлах
}
else 
{
echo "Извини брат, я не телепат, что хочешь то??? Скажи милый ID";
}
?>

Добавлено @ 10:53
Цитата
мне нужно сделать каким-то образом, чтобы файлы (например, .pdf) не загружались с сервера просто по прямой ссылке к ним


а вот это будет проблемно smile

Это сообщение отредактировал(а) PHP-DIRECTOR - 3.6.2005, 10:50


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Mal Hack
Дата 3.6.2005, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Делается все так.

Цитата(PHP @ 3.6.2005, 11:45)
Пример ссылки:
www.morogennoe.ru/downloads.php?id=12

где из базы по ID выбираем реальное имя файла.
Затем заголовками его посылаем пользователю.
Код
<?php

$file_server_path = "123.zip";
$download_size = filesize( $file_server_path );

header("Content-type: application/x-download");
header("Content-Disposition: attachment; filename=" . $file_server_path  . ";");
header("Accept-Ranges: bytes");
header("Content-Length: " . $download_size );
readfile( $file_server_path );

?>

PM ICQ   Вверх
katka
Дата 3.6.2005, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 19.7.2004

Репутация: нет
Всего: 6



ой, спасиииибо.. ну а как как как запретить? к примеру, нехороший человек узнал ссылку на файл.. и может скачать? 8( а ему, к примеру, не положено..?
может, как-то на хостинге запретить можно?
не подскажете?
--------------------
если с другом буду я, если с другом буду я, а медведь — без друга
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 3.6.2005, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



katka дык отсылай файл пользователю не с тем именем, с которым он лежит.
Еще можно хранить файл с каким-то случайным именем, и из базы его брать отсылать пользователю с нормальным, которое тоже берется из базы.
PM ICQ   Вверх
Irokez
Дата 3.6.2005, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



Цитата(katka @ 3.6.2005, 20:29)
ну а как как как запретить?

самый верный способ - выкладывать файлы туда, куда посетитель не сможет добраться, к примеру выше папки public_html, ну или поставить соответствующие права на папку (700)
PM   Вверх
Mal Hack
Дата 3.6.2005, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(Irokez @ 3.6.2005, 21:52)
к примеру выше папки public_html

но тогда же до них и PHP не доберется?.

Цитата(Irokez @ 3.6.2005, 21:52)
или поставить соответствующие права на папку (700)

Кстати мудрая мысль. Как-то я о ней не подумал.
PM ICQ   Вверх
Irokez
Дата 3.6.2005, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



Цитата(Mal @ 3.6.2005, 20:55)
но тогда же до них и PHP не доберется?.

а ему какая разница =)
PM   Вверх
Opik
Дата 4.6.2005, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Irokez
хостеры обычно запрещают лезть выше public_html
PM MAIL Skype   Вверх
Bikutoru
Дата 4.6.2005, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


Профиль
Группа: Участник
Сообщений: 522
Регистрация: 24.5.2005
Где: Москва

Репутация: 8
Всего: 22



А если все загружаемые файлы в отдельную папку сложить, добавить туда .htaccess и написать там что-то вроде
Код

<FILES *.*>
  DENY FROM ALL
</FILES>

?

Это сообщение отредактировал(а) Bikutoru - 4.6.2005, 09:21


--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
z-END
Дата 4.6.2005, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 5
Всего: 102



Цитата(Irokez @ 3.6.2005, 21:52)
ну или поставить соответствующие права на папку (700)

Кстати такой вариант тоже не всегда работатет, (помоему при SafeMode) скрипт сам не получит доступ к объекту с такими правами.
имхо оптимальный вариант написал Mal Hack : спрятать файл куданить поглубже
Код

<?php
@$fname=urldecode($_GET['file']);
@$secret_folder='/1/2_2/3_3_3/4_4_4_4/5_5_5_5_5/';
@$file_server_path ="$secret_folder.$fname";
if ( (!$fname) || (!file_exists($file_server_path)) )  {header("HTTP/1.0 404 Not Found");exit;}   

$download_size = filesize( $file_server_path );

header("Content-type: application/x-download");
header("Content-Disposition: attachment; filename=" $fname";");
header("Accept-Ranges: bytes");
header("Content-Length: " . $download_size );
readfile( $file_server_path);

?>


Это сообщение отредактировал(а) z-END - 4.6.2005, 09:28


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Irokez
Дата 4.6.2005, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



Цитата(Opr @ 4.6.2005, 08:13)
Irokez
хостеры обычно запрещают лезть выше public_html

ну написал же я к примеру, еще и альтернативу предложил ..
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1694 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.