|
|
|
| Мне надо вывести с помощью скрипта изображение. Всё работает нормально, но когда использую сессию появляется проблема.
Код:
<?php
session_start();
header("Content-type: image/jpeg");
$file = fopen('image.jpg',"r");
fpassthru($file);
?>
|
Без session_start(); всё работает, а с ним браузер распознает рисунок как bmp, то есть
header не работает... Но тут сессия для других дел мне необходима! Как быть? | |
|
|
|
|
|
|
|
для: KIM
(14.06.2008 в 10:20)
| | Может быть так попробывать ?
<?php
header("Content-type: image/jpeg");
session_start();
$file = fopen('image.jpg',"r");
fpassthru($file);
?>
|
| |
|
|
|
|
|
|
|
для: t3ma
(14.06.2008 в 12:21)
| | Так тоже не работает, только без старта сессии, а без неё смысл работы пропадает... | |
|
|
|
|
|
|
|
для: KIM
(14.06.2008 в 16:43)
| | А в чем выражается "не работает"? | |
|
|
|
|
|
|
|
для: sim5
(14.06.2008 в 17:10)
| | Когда нет функции session_start(), изображение выводится как jpeg, а когда эта функция имеется, изображение выводится как bmp. Я рад бы оставить bmp, но размер файла ны выходе многократно увеличивается! | |
|
|
|
|
|
|
|
для: KIM
(14.06.2008 в 17:22)
| | Вы говорите о сохранении изображения пользователем? | |
|
|
|
|
|
|
|
для: sim5
(14.06.2008 в 17:35)
| | Да... | |
|
|
|
|
|
|
|
для: KIM
(14.06.2008 в 17:51)
| | Ну разве что проделки чёрта виноваты. Не может session_start() тут как-то повлиять подобным образом. | |
|
|
|
|
|
|
|
для: BinLaden
(14.06.2008 в 18:09)
| | Ну я сам озадачен. В другом форуме говорят, мол рисунок не может сессией обладать... Но ка к быть то... | |
|
|
|
|
|
|
|
для: KIM
(14.06.2008 в 18:18)
| | Можете попробовать помолиться тому Богу, в которого верите. | |
|
|
|
|
|
|
|
для: BinLaden
(14.06.2008 в 18:09)
| | Да, непосредственно она не устанавливает тип изображения, но IE в этом случае не понимает заголовок, и будет сохранять изображение как BMP файл. | |
|
|
|
|
|
|
|
для: sim5
(14.06.2008 в 18:25)
| | > IE в этом случае не понимает заголовок
С какой стати от установки cookies, т.е. фактически заголовка "Set-Cookie" IE перестаёт понимать другие заголовки (Content-type)? | |
|
|
|
|
|
|
|
для: BinLaden
(14.06.2008 в 18:27)
| | Вот этого не знаю, но в IE есть такой глюк небольшой, проверьте. Тоже самое, например, можно отдать через скрипт JS сценарий, не так:
<script type="text/javascript" src="mame.js"></script>
а так:
<script type="text/javascript" src="mame.php"></script>
В кеше в этом случе, сценарий будет сохранен под расширением php, все работает, но не всегда гладко, бывают косяки в ослике, почему, я не знаю. | |
|
|
|
|
|
|
|
для: sim5
(14.06.2008 в 18:57)
| | По-любому, сама картинка с сервера и так JPEG будет скачиваться, так что можно не беспокоиться. Это скорее автору говорю... | |
|
|
|
|
|
|
|
для: BinLaden
(14.06.2008 в 19:27)
| | С сервера да - JPG, а вот сохранять будет отталкивась от DIB уже, насколько я понимаю. | |
|
|
|
|
|
|
|
для: KIM
(14.06.2008 в 17:51)
| | Тогда вынесите код, который отдает изображения в браузер в отдельный скрипт, и обращайтесь к нему. | |
|
|
|
|
|
|
|
для: sim5
(14.06.2008 в 18:20)
| | Не понял, как это сотворить? Я пытаюсь сделать так (в упрощённом виде, без обработчика ошибок):
Страница index.php:
<?php
session_start();
$_SESSION['image'] = 'risunok';
?>
<img src="image.php">
|
Страница image.php
<?php
session_start();
header("Content-type: image/jpeg");
$file = fopen($_SESSION['image'].'.jpg',"r");
fpassthru($file);
?>
|
На сервере файл jpg который весит примерно 12 КБ
У пользователя получается bmp размером более 40КБ | |
|
|
|
|
|
|
|
для: KIM
(14.06.2008 в 18:31)
| | А что такая необходимость через сессию? Что так нельзя?:
<?php
session_start();
//$_SESSION['image'] = 'risunok';
?>
<img src="image.php?im=risunok">
|
<?php
header("Content-type: image/jpeg");
$file = fopen($_GET['im'].'.jpg',"r");
fpassthru($file);
?>
|
| |
|
|
|
|
|
|
|
для: sim5
(14.06.2008 в 18:47)
| | Правда уже Ваш код, sim5, позволяет пользователю самому подправить значение. | |
|
|
|
|
|
|
|
для: BinLaden
(14.06.2008 в 18:52)
| | В смысле сменить имя картинки? Так тогда надо вообще запретить атрибут src ибо можно везде подправлять, или вы о чем? | |
|
|
|
|
|
|
|
для: sim5
(14.06.2008 в 18:59)
| | Можно подставить в качестве параметра im что-то вроде "image.php%00" и посмотреть PHP-код файла, т.е. это значение тут пользователь сам подставляет.
В $_SESSION же значение задаёт сервер и клиент его не может изменить.
То есть такая замена $_SESSION на $_GET, скажем так, не эквивалентна. | |
|
|
|
|
|
|
|
для: BinLaden
(14.06.2008 в 19:14)
| | И что? Я не знаю, для чего и зачем так автор выводит, но никто вроде бы и не запрещает проверять наличие запрашиваемого файла.
PS. Да и вообще во всем этом нет здравого смысла. Если это ради того чтобы скрыть путь к изображениям, чтобы не скачивали напрямую, но при этом беспокоиться о расширении при сохранении... | |
|
|
|
|
|
|
|
для: KIM
(14.06.2008 в 10:20)
| | Точную причину и лекарство никто не знает? Передача данных через GET небезопасна | |
|
|
|
|
|
|
|
для: KIM
(14.06.2008 в 19:58)
| | Хорошо, а что (или кто) определяет это: $_SESSION['image'] = 'risunok';, и для чего ваш механизм предназначен? | |
|
|
|
|
|
|
|
для: KIM
(14.06.2008 в 19:58)
| | index.php
<?php
session_start();
$_SESSION['image'] = 'risunok';
?>
<img src="image.php?x=x.jpg">
|
image.php
<?php
session_start();
header("Content-type: image/jpeg");
$file = fopen($_SESSION['image'].'.jpg',"r");
fpassthru($file);
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(14.06.2008 в 21:19)
| | Ослик будет предлагать сохранение в BMP. | |
|
|
|
|
|
|
|
для: sim5
(15.06.2008 в 04:24)
| | Ну если делать по уму, то нужно поле content-disposition добавить с именем файла, и в поле content-type тоже имя проставить. | |
|
|
|
|
|
|
|
для: Trianon
(15.06.2008 в 13:30)
| | Нет, не покажет ослик тип файла в свойствах. | |
|
|
|
|
|
|
|
для: KIM
(14.06.2008 в 10:20)
| |
<?
session_start();
session_cache_limiter('private_no_expire');
// session_cache_limiter('none');
?>
|
или
http://kpumuk.info/php/ie-save-pictures-bmp/lang/ru/ | |
|
|
|
|
|
|
|
для: mihdan
(16.06.2008 в 15:36)
| | Понимает, что можно в JPG сохранить, а в свойствах файла, тип так и не понимает. | |
|
|
|
|
|
|
|
для: sim5
(16.06.2008 в 16:12)
| | Всегда говорил, что ИЕ недобраузер, но чтоб до такой степени. Ладно поэкспериментируем | |
|
|
|
|
|
|
|
для: mihdan
(16.06.2008 в 16:28)
| | Ну зачем так сразу?) Бог с ними с картинками, меня больше интересует вывод JS, например, посредством РНР, поможет ли в этом случае. Хотя немного не понимаю логики связи с кешированием - JS там и место, в кеше. С заголовками понятно, но JS можно и без заголовка передать и будет работать, но иногда начинаются сбои. Вот с чем это увязать, до меня не доходит. | |
|
|
|
|
|
|
|
для: sim5
(16.06.2008 в 16:35)
| | Походу Р3Р. Где-то я видел патч-заголовок для ИЕ, вот вспомнить бы где, и прекрасно все работало | |
|
|
|
|