Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Download или скачать *.jpg

13K
22 января 2007 года
4айник
40 / / 23.12.2006
Добрый вечер, уважаемые специалисты!
Прошу вас помочь в решении проблемы.
Допустим, на сайте есть фотография. .. К этому рисунку есть превьюшка.. Всё как положено... Хочу сделать, чтобы рисунок с именем 1.jpg можно было ИМЕННО скачать, а не загружать в браузере, а потом наводить курсор мыши, нажимать правую кнопку мыши и СОХРАНИТЬ РИСУНОК КАК..
В теле страницы пишу:
...........
<a href="/Image/1.jpg">Скачать</a>
.............
И загружается, блин, браузер и показывает мне рисунок. С неграфическими файлами (зип, ехе и проч. святотеть) проблем нет.

Я понимаю, что я дятел где-то, но скажите, где моя ошибка и можно ли добиться того результата, который мне нужен?!
Спс за помощь вам заранее!!!!
4
23 января 2007 года
mike
3.7K / / 01.10.2002
 
Код:
<?php
 
header("Content-disposition: attachment; filename=1.jpg");
readfile("1.jpg");
 
?>
13K
23 января 2007 года
4айник
40 / / 23.12.2006
mmmm Mike!! А куда писать-то, если скачивание должно работать по ссылке?!
244
23 января 2007 года
UAS
2.0K / / 19.07.2006
Просто ссылка будет идти не на картинку, а на php-скрипт.

Можно сделать по колхозному:
<a href="image.php?image=1.jpg">Картинка</a>
Но это естессно дыра, через которую ломаем сайт

Пихаешь путь к картинке в БД.
Т.е.
 
Код:
CREATE TABLE images(
id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT,
path VARCHAR(36)
);

path - путь к картинке [тут у меня имя подразумевается просто, поэтому букв мало, так как у меня картинки в виде md5(имя_файла).расширение_файла ]

А потом уже тогда
<a href="image.php?id=1"><img src="xxx.jpg" /></a>
И далее как советает наш админ:
 
Код:
<?php
# image.php

/* коннектимся к БД и т.д. и т.п. */

header("Content-disposition: attachment; filename={$path_to_image}");
readfile($path_to_image);
 
?>
12
23 января 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: 4айник

В теле страницы пишу:
...........
<a href="/Image/1.jpg">Скачать</a>
.............
И загружается, блин, браузер и показывает мне рисунок. С неграфическими файлами (зип, ехе и проч. святотеть) проблем нет.


Это зависит от настроек браузера, т.е. регулируется на стороне клиента.
А что бы брузер обмануть, можно заслать ему "левые" заголовки как это и предложил mike.

253
24 января 2007 года
Proger_XP
1.5K / / 07.08.2004
Цитата: UAS
Можно сделать по колхозному:
....


Юзать БД что бы скачать картинку? :) ИМХО лучше сделать отдельную папку на сервере типа /img/dlable и проверять в скрипте принадлежность рисунка к этой папке

13K
26 января 2007 года
4айник
40 / / 23.12.2006
Цитата: UAS
Можно сделать по колхозному:
<a href="image.php?image=1.jpg">Картинка</a>
Но это естессно дыра, через которую ломаем сайт

Как раз таки, я и ушел от хранения пути к файлу в БД.

ВОТ ЕСТЬ ВСТРЕЧНЫЙ ВОПРОС ПРО ДЫРУ!
Давайте, я вам проясню. У каждого юзера есть свой ID в БД.
На основании этого ID я создаю каталог с таким же номером на сервере.
В каждый каталог кладу фотографии этого юзера.
К примеру, файл 1_1_im.jpg лежит в каталоге 1, т.е. первая запись в БД и это ID юзера. Имя файла для меня гласит, что первая цифра - это ID, 2-я цифра - номер фотографии.
в каждом каталоге может быть 9 файлов, т.е. имена файлов такие:
1_1_im.jpg
1_2_im.jpg
1_3_im.jpg
.....
1_9_im.jpg
Чтобы отобразить галерею этих фотографий с Preview, я делаю РНР:
1. Получаю по методу POST значение ID юзера.
2. Проверяю на его корректность на кривые символы.
В конце имеем переменную
$var_find=$_POST['id'];
3. Осуществляю проверку наличия каталога и файлов. После того, как я определю, что есть каталог, и определяю, какие файлы есть в данном каталоге, заношу их в массив $numb[].
4. Выстраиваю фотографии по циклу:
................
for ($i=0; $i< $how; $i++ )
{
$content .= '<br>';
$content .= '<img src="pictures_make.php?nom='.$var_find.'&foto='.$numb[$i].'" alt=""><br>';
}
....................

в данном цикле рисунок выстраивается с помощью файла pictures_make.php, в котором осуществляется масштабирование рисунка и прочее, и вывод его на экран.
ВОПРОС: ДЫРА ЭТО ИЛИ НЕТ?!
Помогите мне, плз.. А то мысли о том, что сайт можно взломать, меня могут сделать параноиком :(

253
26 января 2007 года
Proger_XP
1.5K / / 07.08.2004
А мой вариант чем плох? Тем что не юзает БД? :)
13K
26 января 2007 года
4айник
40 / / 23.12.2006
дык, я не хочу, чтобы путь к фоткам в БД лежал, т.к. к примеру, юзверь пожелает удалить фотку. что мне делать!? (у меня сайт без регистрации, поэтому только я могу что-то там творить, остальные могут только читать)
1. Лезть в БД, чтобы удалить ссылку на файл
2. удалить файл с сервера.
Крайне неудобно...

Я пошел другим путем... Ваши рекомендации учел и сделал. Всё работает.. Меня интересует только вопрос безопасности

З.Ы.: Спасибо вам всем за помощь и поддержку.. Вот если бы кто-нить по безопасности меня проконсультировал :)!!! Кстати, кто-нибудь может разрулить мой вышесказанный пост по безопасности.. Правильно ли я делаю?!
12
27 января 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: 4айник
дык, я не хочу, чтобы путь к фоткам в БД лежал, т.к. к примеру, юзверь пожелает удалить фотку. что мне делать!? (у меня сайт без регистрации, поэтому только я могу что-то там творить, остальные могут только читать)


Тогда смысла в PHP не вижу... для такого и статических страниц за глаза + ни каких проблем с безопасностью.

338
27 января 2007 года
chigevara
529 / / 29.09.2003
Цитата: 4айник

2. Проверяю на его корректность на кривые символы.



Расскажи мне об этом.

А вообще если тебе только превьюшки нужны то не проще ли их при аплоаде скриптом создавать? имхо прав в этом отношении alekciy.

13K
27 января 2007 года
4айник
40 / / 23.12.2006
Всё, господа, спс а участие... Всё сделал, как хотел!!!! Вы мне помогли
13K
28 января 2007 года
4айник
40 / / 23.12.2006
я имел ввиду сиволы ",'/[]{} и проч при получении данных по методу POST ^)
12
28 января 2007 года
alekciy
3.0K / / 13.12.2005
А при чем тут они???
13K
28 января 2007 года
4айник
40 / / 23.12.2006
А я до кучи делаю масштабирование фотографии
12
28 января 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: 4айник
А я до кучи делаю масштабирование фотографии


Я не улавливаю как безопастность, масшабирование и вышеприведенные символы связаны...

253
28 января 2007 года
Proger_XP
1.5K / / 07.08.2004
Ну, безопастность и regexp связать можно, а вот мастштабирование? :rolleyes:
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог