NYCPHP Meetup

NYPHP.org

[PHP] Cannot show reuploaded image file on page unless manual refresh

ed at home.homes2see.com ed at home.homes2see.com
Mon Jan 20 13:48:56 EST 2003


 Aha! Something I can chime in on. I happened across the same scenario a
few months back. The list helped me then so I'll give back.

 Call the image using a random identifier.

$rand = rand(1000, 9999);

echo "<img src="http://someurl.com/image.jpg?$rand";

Since the browser will more than likely not have the image file identified
by the random number it must request it again from the server. Works
great where I need it!

Ed

On Mon, 20 Jan 2003, Chris Shiflett wrote:

> --- Phil Powell <soazine at erols.com> wrote:
> > I am using the following header() functions to force
> > view.php to not cache:
> > 
> > header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
> > header("Last-Modified: " . gmdate("D, d M Y H:i:s") .
> > " GMT");
> > header("Cache-Control: no-store, no-cache,
> > must-revalidate");
> > header("Cache-Control: post-check=0, pre-check=0",
> > false);
> > header("Pragma: no-cache");
> 
> :-)
> 
> I think you killed it.
> 
> > However, when a user reuploads a file in manage.php, it
> > does a form post onto manage.php and reuploads the file
> > (which I verified works).  However, when redirected via
> > header() to view.php, they still see their OLD image
> > file, NOT the new one!  Unless I manually refresh the
> > page, they never see it, until they manually refresh the
> > page, then the new image file appears!
> 
> Right.
> 
> I think you are forgetting that the image is not really
> part of the PHP resource. Meaning, this is the series of
> events for a PHP script that refernces a single image
> called bar.jpg using the <img> tag:
> 
> 1. HTTP request sent for foo.php (Web client -> Web server)
> 2. HTTP response sent that includes the output of foo.php
>    (Web server -> Web client)
> 3. Web client (browser) notices <img> tag referenced in
>    the HTML.
> 4. HTTP request sent for bar.jpg (Web client -> Web server)
> 5. HTTP response sent that includes bar.jpg
> 
> So, the headers that you are setting only matter for the
> resource returned in step 2. Meaning, the HTML output of
> foo.php is not cached. The image, since it is returned by
> the Web server and not your PHP script, is cached.
> 
> Chris
> 
> -- 
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 




More information about the talk mailing list