469,632 Members | 1,730 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,632 developers. It's quick & easy.

Show image img src=img.php?img=1.jpg help

Hi!
Really need help, dont know whats wrong :(
I am trying to show images using php script, it works fine, pictures
are shown,
but if i right click on it and choose "save picture as" it offers me to
save it as "untitled.bmp",
not jpeg the picture actually is :(
And if i do save it and then check it - it is actually bmp image, not
jpeg (it has bmp header)
Could you help please, i need to be able to save it as jpeg, using
"save picture as".
here is the script:

<?php
if ($_REQUEST['img'])
{
$showfile = $_REQUEST['img'];
if (file_exists($showfile))
{
header("content-type: image/jpeg");
header('Content-Length: ' . filesize($showfile));
$mfile = fopen($showfile, 'rb');
fpassthru($mfile);
fclose($mfile);
}
}
echo "<img src='?img=1.jpg'>";
?>

Thanks a lot!

May 15 '06 #1
9 10395
Rik
b0****@gmail.com wrote:
header("content-type: image/jpeg");


header("Content-Type: image/jpeg");
header('Content-Disposition: inline; filename=$showfile");

Allthough, Disposition isn't really according to standards....

A brutal read:
http://www.faqs.org/rfcs/rfc2616

Also, readfile($showfile) seems faster in this case....

Grtz,
--
Rik Wasmus
May 15 '06 #2
Thank you very much!
works great! but now i have a different problem, my actual script has
session_start(); at the top,
and it still showing "save picture as" as "untitled.bmp" :(
if i delete session_start() it shows jpeg, if i add session_start - it
shows untitled.bmp :(

May 15 '06 #3
Can you copy all the code?

May 15 '06 #4

RainCT wrote:
Can you copy all the code?


Sure, here it is:

<?php
session_start();
$dir = session_id();

if ($_REQUEST['img'])
{
$showfile = "./temp/$dir/".$_REQUEST['img'];

if (file_exists($showfile))
{
header("content-type: image/jpeg");
header('Content-Length: ' . filesize($showfile));
header("Content-Disposition: inline; filename=$showfile");
readfile($showfile);
}
}
echo "<img src='?img=1.jpg'>";
?>

If i keep session_start() "Save picture as" detects image as
untitled.bmp, if i delete
session_start() - everythng is fine, it is detected as jpeg, but i need
session_id(), so i have to start session...
And, i read somewhere in this group that i should add ini_set, like
this:

<?php
ini_set('session.use_cookies', '0');
ini_set('session.cache_limiter', '');
ini_set('session.cache_expires', '');
session_start();
$dir = session_id();
.....

When i do that the image type is detected correctly as jpeg, but the
file name is not, its named as the script, showimg.jpg,
filename=$showfile" is not working for some reason. But i guess its
good enough, it would be nice to detect the file name as well though

May 16 '06 #5
b0****@gmail.com wrote:
RainCT wrote:
Can you copy all the code?

Sure, here it is:

<?php
session_start();
$dir = session_id();

if ($_REQUEST['img'])
{
$showfile = "./temp/$dir/".$_REQUEST['img'];

if (file_exists($showfile))
{
header("content-type: image/jpeg");
header('Content-Length: ' . filesize($showfile));
header("Content-Disposition: inline; filename=$showfile");
readfile($showfile);
}
}
echo "<img src='?img=1.jpg'>";
?>

If i keep session_start() "Save picture as" detects image as
untitled.bmp, if i delete
session_start() - everythng is fine, it is detected as jpeg, but i need
session_id(), so i have to start session...
And, i read somewhere in this group that i should add ini_set, like
this:

<?php
ini_set('session.use_cookies', '0');
ini_set('session.cache_limiter', '');
ini_set('session.cache_expires', '');
session_start();
$dir = session_id();
....

When i do that the image type is detected correctly as jpeg, but the
file name is not, its named as the script, showimg.jpg,
filename=$showfile" is not working for some reason. But i guess its
good enough, it would be nice to detect the file name as well though


But earlier you said this really is a bmp, not a jpg.

Just changing the name or header is not going to change the real file type. It
will still be a bmp. If you want to change it to a jpg, you need to convert it
first.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
May 16 '06 #6

Jerry Stuckle wrote:
b0****@gmail.com wrote:
RainCT wrote:
Can you copy all the code?

Sure, here it is:

<?php
session_start();
$dir = session_id();

if ($_REQUEST['img'])
{
$showfile = "./temp/$dir/".$_REQUEST['img'];

if (file_exists($showfile))
{
header("content-type: image/jpeg");
header('Content-Length: ' . filesize($showfile));
header("Content-Disposition: inline; filename=$showfile");
readfile($showfile);
}
}
echo "<img src='?img=1.jpg'>";
?>

If i keep session_start() "Save picture as" detects image as
untitled.bmp, if i delete
session_start() - everythng is fine, it is detected as jpeg, but i need
session_id(), so i have to start session...
And, i read somewhere in this group that i should add ini_set, like
this:

<?php
ini_set('session.use_cookies', '0');
ini_set('session.cache_limiter', '');
ini_set('session.cache_expires', '');
session_start();
$dir = session_id();
....

When i do that the image type is detected correctly as jpeg, but the
file name is not, its named as the script, showimg.jpg,
filename=$showfile" is not working for some reason. But i guess its
good enough, it would be nice to detect the file name as well though


But earlier you said this really is a bmp, not a jpg.

Just changing the name or header is not going to change the real file type. It
will still be a bmp. If you want to change it to a jpg, you need to convert it
first.


Yes, i understand that. The picture is jpeg (echo "<img
src='?img=1.jpg'>";), but "save picture as" only offered to save it as
bmp, not jpeg, that was my problem/question.

May 16 '06 #7
b0****@gmail.com wrote:
Jerry Stuckle wrote:
b0****@gmail.com wrote:
RainCT wrote:
Can you copy all the code?
Sure, here it is:

<?php
session_start();
$dir = session_id();

if ($_REQUEST['img'])
{
$showfile = "./temp/$dir/".$_REQUEST['img'];

if (file_exists($showfile))
{
header("content-type: image/jpeg");
header('Content-Length: ' . filesize($showfile));
header("Content-Disposition: inline; filename=$showfile");
readfile($showfile);
}
}
echo "<img src='?img=1.jpg'>";
?>

If i keep session_start() "Save picture as" detects image as
untitled.bmp, if i delete
session_start() - everythng is fine, it is detected as jpeg, but i need
session_id(), so i have to start session...
And, i read somewhere in this group that i should add ini_set, like
this:

<?php
ini_set('session.use_cookies', '0');
ini_set('session.cache_limiter', '');
ini_set('session.cache_expires', '');
session_start();
$dir = session_id();
....

When i do that the image type is detected correctly as jpeg, but the
file name is not, its named as the script, showimg.jpg,
filename=$showfile" is not working for some reason. But i guess its
good enough, it would be nice to detect the file name as well though


But earlier you said this really is a bmp, not a jpg.

Just changing the name or header is not going to change the real file type. It
will still be a bmp. If you want to change it to a jpg, you need to convert it
first.

Yes, i understand that. The picture is jpeg (echo "<img
src='?img=1.jpg'>";), but "save picture as" only offered to save it as
bmp, not jpeg, that was my problem/question.


OK, I misread your original post. I understand now.

I haven't actually tried mixing session_start() with header(); normally if I'm
using header() I don't need session_start().

Since both must be sent before anything else is output, I suspect there's a
conflict between the two. However, what should work is to use an img tag in
this file, pointing at a file containing your PHP code. In this file send your
session_start(); in the other file only send the header and image.

This works because the img tag causes another request to the server, which
requires another header.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
May 17 '06 #8

Jerry Stuckle wrote:
b0****@gmail.com wrote:
Jerry Stuckle wrote:
b0****@gmail.com wrote:

RainCT wrote:
>Can you copy all the code?
Sure, here it is:

<?php
session_start();
$dir = session_id();

if ($_REQUEST['img'])
{
$showfile = "./temp/$dir/".$_REQUEST['img'];

if (file_exists($showfile))
{
header("content-type: image/jpeg");
header('Content-Length: ' . filesize($showfile));
header("Content-Disposition: inline; filename=$showfile");
readfile($showfile);
}
}
echo "<img src='?img=1.jpg'>";
?>

If i keep session_start() "Save picture as" detects image as
untitled.bmp, if i delete
session_start() - everythng is fine, it is detected as jpeg, but i need
session_id(), so i have to start session...
And, i read somewhere in this group that i should add ini_set, like
this:

<?php
ini_set('session.use_cookies', '0');
ini_set('session.cache_limiter', '');
ini_set('session.cache_expires', '');
session_start();
$dir = session_id();
....

When i do that the image type is detected correctly as jpeg, but the
file name is not, its named as the script, showimg.jpg,
filename=$showfile" is not working for some reason. But i guess its
good enough, it would be nice to detect the file name as well though
But earlier you said this really is a bmp, not a jpg.

Just changing the name or header is not going to change the real file type. It
will still be a bmp. If you want to change it to a jpg, you need to convert it
first.

Yes, i understand that. The picture is jpeg (echo "<img
src='?img=1.jpg'>";), but "save picture as" only offered to save it as
bmp, not jpeg, that was my problem/question.


OK, I misread your original post. I understand now.

I haven't actually tried mixing session_start() with header(); normally if I'm
using header() I don't need session_start().

Since both must be sent before anything else is output, I suspect there's a
conflict between the two. However, what should work is to use an img tag in
this file, pointing at a file containing your PHP code. In this file send your
session_start(); in the other file only send the header and image.

This works because the img tag causes another request to the server, which
requires another header.


Thank you very much!
It sounds like a great idea, i don't fully understand how its going to
work, but ill figure it out.
My main concern is to be able to hide the actual path to the image file
($showfile = "./temp/$dir/".$_REQUEST['img'];) so it would not be
anywhere in the html, and to make sure the file can only be downloaded
once, by the person with the correct session id

May 17 '06 #9
b0****@gmail.com wrote:
Jerry Stuckle wrote:
b0****@gmail.com wrote:
Jerry Stuckle wrote:
b0****@gmail.com wrote:
>RainCT wrote:
>
>
>
>>Can you copy all the code?
>
>
>Sure, here it is:
>
><?php
>session_start();
>$dir = session_id();
>
>if ($_REQUEST['img'])
>{
>$showfile = "./temp/$dir/".$_REQUEST['img'];
>
> if (file_exists($showfile))
> {
> header("content-type: image/jpeg");
> header('Content-Length: ' . filesize($showfile));
> header("Content-Disposition: inline; filename=$showfile");
> readfile($showfile);
> }
>}
>echo "<img src='?img=1.jpg'>";
>?>
>
>If i keep session_start() "Save picture as" detects image as
>untitled.bmp, if i delete
>session_start() - everythng is fine, it is detected as jpeg, but i need
>session_id(), so i have to start session...
>And, i read somewhere in this group that i should add ini_set, like
>this:
>
><?php
>ini_set('session.use_cookies', '0');
>ini_set('session.cache_limiter', '');
>ini_set('session.cache_expires', '');
>session_start();
>$dir = session_id();
>....
>
>When i do that the image type is detected correctly as jpeg, but the
>file name is not, its named as the script, showimg.jpg,
>filename=$showfile" is not working for some reason. But i guess its
>good enough, it would be nice to detect the file name as well though
>

But earlier you said this really is a bmp, not a jpg.

Just changing the name or header is not going to change the real file type. It
will still be a bmp. If you want to change it to a jpg, you need to convert it
first.
Yes, i understand that. The picture is jpeg (echo "<img
src='?img=1.jpg'>";), but "save picture as" only offered to save it as
bmp, not jpeg, that was my problem/question.


OK, I misread your original post. I understand now.

I haven't actually tried mixing session_start() with header(); normally if I'm
using header() I don't need session_start().

Since both must be sent before anything else is output, I suspect there's a
conflict between the two. However, what should work is to use an img tag in
this file, pointing at a file containing your PHP code. In this file send your
session_start(); in the other file only send the header and image.

This works because the img tag causes another request to the server, which
requires another header.

Thank you very much!
It sounds like a great idea, i don't fully understand how its going to
work, but ill figure it out.
My main concern is to be able to hide the actual path to the image file
($showfile = "./temp/$dir/".$_REQUEST['img'];) so it would not be
anywhere in the html, and to make sure the file can only be downloaded
once, by the person with the correct session id


With this method you can't hide the URL completely. You'll still have the path
to the php file in the img tag. But you should be able to now add some code to
the php file which will limit access to the image.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
May 17 '06 #10

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

4 posts views Thread by Gequina | last post: by
2 posts views Thread by StvyLife | last post: by
4 posts views Thread by Change PH to F... | last post: by
2 posts views Thread by Mitchell Vincent | last post: by
2 posts views Thread by rodchar | last post: by
reply views Thread by =?Utf-8?B?VHV4ZWRv?= | last post: by
reply views Thread by gheharukoh7 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.