[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Есть красивый PHP код который. . .
ComSyntax
Есть красивый PHP код который нужно сделать еще красивей:)
Помогите пожалуйста!!! Принцип функции скрипта состоит в том чтобы предложить пользователю сохранить картинку на компьютер, а не открывать ее в новом окошке.
Проблема заключается в том что cкрипт "download.php" скачивает картинки только с той директории в которой находится сам скрипт "download.php".
Задача заключается в том чтобы сделать так чтобы файл со скриптом располагался в корневой директории, a файлы обрабатывал именно с "/upload/finished/" папки.
К примеру;
www.mysite.ru/upload/finished/download.php?img=image.jpg
а нужно так
www.mysite.ru/download.php?img=image.jpg

То есть файл "download.php" должeн расположатся в корневой папке, а картинки чтобы скачивал ТОЛЬКО(!) с "/upload/finished/" директории.
Вот и сам код;

<?php

if(!empty($_GET['img']))
{
$filename = basename($_GET['img']); // don't accept other directories
$size = @getimagesize($filename);
$fp = @fopen($filename, "rb");
if ($size && $fp)
{
header("Content-type: {$size['mime']}");
header("Content-Length: " . filesize($filename));
header("Content-Disposition: attachment; filename=$filename");
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
fpassthru($fp);
exit;
}
}

header("HTTP/1.0 404 Not Found");
?>


Что и каким образом нужно изменить??? :(



Спустя 38 минут, 11 секунд (1.02.2011 - 23:47) bret написал(а):
ну так принудительно добавляй к пути upload/finished/

Спустя 18 минут, 46 секунд (2.02.2011 - 00:05) ComSyntax написал(а):
Цитата (bret @ 1.02.2011 - 20:47)
ну так принудительно добавляй к пути upload/finished/

Спасибо за ответ;)
А где это надо прописать в скрипте?
Если файл со скриптом не расположен в одной папке с файлами изображения, то ничего не работает. Я в пхп вообще не рублю:)

Спустя 8 минут, 6 секунд (2.02.2011 - 00:14) inpost написал(а):
ComSyntax
Красавчик!

Спустя 22 минуты, 43 секунды (2.02.2011 - 00:36) ComSyntax написал(а):
Цитата (inpost @ 1.02.2011 - 21:14)
ComSyntax
Красавчик!

Чувствую сарказм:)) Ыыы))
Не успел прийти а надо мной уже глумятся)

Спустя 9 минут, 33 секунды (2.02.2011 - 00:46) ComSyntax написал(а):
Если вы имеете ввиду это, то с таким запросом тоже не пашет.
www.mysite.ru/download.php?img=upload/finished/image.jpg

Спустя 4 минуты, 10 секунд (2.02.2011 - 00:50) ComSyntax написал(а):
Мдя-я-я-я, вот теперь действительно становится интересно biggrin.gif

Спустя 1 минута, 25 секунд (2.02.2011 - 00:51) ComSyntax написал(а):
Ежик выходи!!!
biggrin.gif biggrin.gif biggrin.gif biggrin.gif

Спустя 16 минут, 50 секунд (2.02.2011 - 01:08) inpost написал(а):
ComSyntax
На тему: "красивый PHP" я и ответил "Красавчик!" =)
Через $_GET пропиши лишь название картинки. Полный путь формируй тут:
$filename = $_GET['img']; - в данном случае будет лишь название, допиши остальные папки в переменную.

Спустя 1 час, 3 минуты, 23 секунды (2.02.2011 - 02:12) ComSyntax написал(а):
Так? Все равно не пашет :(

<?php

if(!empty($_GET['img']))
{
$filename = basename($_GET['img']); // don't accept other directories
$size = @getimagesize($filename);
$path = ‘upload/finished/.$filename;
$fp = @fopen($filename, "rb");
if ($size && $fp)
{
header("Content-type: {$size['mime']}");
header("Content-Length: " . filesize($filename));
header("Content-Disposition: attachment; filename=$filename");
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
fpassthru($fp);
exit;
}
}

header("HTTP/1.0 404 Not Found");
?>

Спустя 17 минут, 20 секунд (2.02.2011 - 02:29) inpost написал(а):
ComSyntax
Это какие-то неправильные кавычки. И при чём тут $pach, если обращение в скрипте к других переменным?

Спустя 38 минут, 54 секунды (2.02.2011 - 03:08) ComSyntax написал(а):
О, про $pach точно, это я не подумал:) просто срубил с другого скрипта)
Так я же говорю, я в пхп ноль с размеров в слона:)
может так
$filename = $_GET['upload/finished/img']; 

Пойду-ка я спать, голова уже разболелась) Спокойной ночи Еж :)

Спустя 8 минут, 58 секунд (2.02.2011 - 03:17) inpost написал(а):
ComSyntax
Совсем не так... советую книжечку почитать про ПХП какую-нибудь.

Спустя 7 часов, 40 минут, 53 секунды (2.02.2011 - 10:58) Evilsoul написал(а):
Цитата
может так

не так, вот так:
$filename - Полный путь к файлу !!! с расширением!
$filename = $_SERVER['HTTP_HOST'].'продолжаем'.$_GET['img']; 

$_GET['img'] = имя файла с расширением!
Цитата
Так? Все равно не пашет :(

тут куча ошибок
1е убрать собаку и НЕ подавлять ошибки!
error_reporting(E_ALL ^ E_NOTICE); - это должно стоять впереди всего!
$path = ‘upload/finished/’.$filename; путь если пишешь, то пиши перед функциями которые его используют, что за кавычки?

пока хватит, подправишь, покажи код и ошибки которые у тебя повылазят :)

Спустя 6 часов, 28 минут, 13 секунд (2.02.2011 - 17:26) ComSyntax написал(а):

Цитата (Evilsoul @ 2.02.2011 - 07:58)
Evilsoul

Круто!!! Заменил HTTP_HOST на DOCUMENT_ROOT и да будет свет:)
<?php
error_reporting(E_ALL ^ E_NOTICE);
if(!empty($_GET['img']))
{
$filename = $_SERVER['DOCUMENT_ROOT'].'/upload/finished/'.$_GET['img']; // don't accept other directories
$size = getimagesize($filename);
$fp = fopen($filename, "rb");
if ($size && $fp)
{
header("Content-type: {$size['mime']}");
header("Content-Length: " . filesize($filename));
header("Content-Disposition: attachment; filename=$filename");
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
fpassthru($fp);
exit;
}
}

header("HTTP/1.0 404 Not Found");
?>

Теперь другая проблема вылезла :blink: Скачиваемый IMAGE файл переименовывается в D--Hosting-4759666-html_upload_finished_IMAGE.jpg
Kак решить эту задачу? Mожет кто другой скрипт посоветует?

Спустя 3 минуты, 58 секунд (2.02.2011 - 17:30) ComSyntax написал(а):
То есть место нахождения файла он все равно выдает!

Спустя 4 минуты, 1 секунда (2.02.2011 - 17:34) Evilsoul написал(а):
имя файла в оригинале какое?

Спустя 1 минута, 31 секунда (2.02.2011 - 17:35) Evilsoul написал(а):
Цитата (ComSyntax @ 2.02.2011 - 14:30)
То есть место нахождения файла он все равно выдает!

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

Спустя 33 минуты, 54 секунды (2.02.2011 - 18:09) ComSyntax написал(а):
Цитата (Evilsoul @ 2.02.2011 - 14:34)
имя файла в оригинале какое?

Так в папке их много.
Клиентам оформляются ссылки с их личными файлами, а все файлы всех клиентов содержатся в одной папке. Потому и не желательно чтобы было видно где файлы лежат. ph34r.gif

Спустя 5 минут, 16 секунд (2.02.2011 - 18:15) ComSyntax написал(а):
Ну например на компьютере файл сохраняется под таким именем;
D--Hosting-4759666-html_upload_finished_IMAGE.jpg
а нужно просто;
IMAGE.jpg

Спустя 3 минуты, 12 секунд (2.02.2011 - 18:18) ComSyntax написал(а):
Так как из названия файла первого варианта видно в какой папке лежат файлы upload_finished то есть upload/finished

Спустя 1 час, 18 минут, 13 секунд (2.02.2011 - 19:36) Evilsoul написал(а):
что-то ты мутишь непонятное smile.gif
Задача какая? где юзер видит папку? в чем паника? опиши всё и по порядку ...
Ну и что, что он её видит, пускай все её видят, а на скачивание можно дать доступ только тому у кого есть открытая сессия ...

Спустя 1 час, 12 минут, 52 секунды (2.02.2011 - 20:49) ComSyntax написал(а):
Evilsoul
Да, и вправду:) пускай видят.
Думаю и так сойдет.
Всем спасибо за участие. Тебя же Evilsoul отдельно целую в лоб biggrin.gif biggrin.gif biggrin.gif

Спустя 25 минут, 21 секунда (2.02.2011 - 21:14) Evilsoul написал(а):
Цитата
Тебя же Evilsoul отдельно целую в лоб

biggrin.gif Ты меня уже похоронил? huh.gif лучше бы + поставил rolleyes.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.