Jump to content
haku

Call a script when directly accessing an image in the browser

Recommended Posts

I'm working with a lightbox plugin to show images when thumbnails are clicked on. The plugin works by wrapping the thumbnail in an anchor tag that has the href as the direct path to the full-size image. This acts as a non-js fallback, so that if JS isn't present for whatever reason, the user still sees the image. When JS is enabled, the image is shown in the lighbox, resized to fit in the lightbox, which is a variable size depending on the browser.

 

I need to keep a record of the number of times that the image has been clicked on, as thumbnails will be ordered by the number of views. The problem of course is that I'm directly linking to the image, so I can't put a script on this page.

 

I've tried two things instead, neither of which worked:

 

1) Instead setting the target as the path to the image, I set it to a PHP script, then outputted the image in an <img/> tag. The problem was that the image is then not resized according to the size of the lighbox. So this is no good.

2) I set the target of the lightbox as a PHP script which recorded the viewing of the image, and redirected to the image page. This didn't work either, as the lightbox showed the data for the image (text) instead of the image itself.

 

So, I've hit a bit of a barrier. I'm wondering if I can set something up in my PHP settings that will automatically call a script when hitting images, or maybe something in an .htaccess file that will do the same, but I'm not aware of if this can be done, nor how to do it, and I haven't found anything yet with my googling. Does anyone have any thoughts?

 

Thanks.

Edited by haku

Share this post


Link to post
Share on other sites

There is no way in php (at least I don't know ) how to detect the screen resolution without JS. I'd suggest you of using some minimal of 1200 x 800 for 13 to 15-inch widescreen laptops.  

Share this post


Link to post
Share on other sites

Thanks for your reply, but the answer doesn't match the question at all. I'm not looking to detect screen size, I'm looking to call a PHP script when directlly accessing an image file.

Share this post


Link to post
Share on other sites

Hm....sorry for that...I have to re-read the question one more time b/s of lacking of my English knowledge :)

Share this post


Link to post
Share on other sites

I guess another way to explain it is that I'd like to call a PHP script in the background when files of a certain type are accessed. I want this to happen automatically through some configuration of PHP or .htaccess (or some other server config).

Share this post


Link to post
Share on other sites

I got it! I didn't figure out how to call a script in the background, but what I did was create a callback PHP script, which instead of returning the image in an image tag, serves the image directly to the browse using a force download script, setting the relevant headers etc. Now my PHP script behaves the same as when directly accessing an image, and I am able to mark the image as having been viewed before serving the image to the browser.

Share this post


Link to post
Share on other sites

You could also just scan the apache logs.

Share this post


Link to post
Share on other sites

Interesting idea. They would have to be scanned very regularly to keep the count current. The method I have is a little more reliable I think. But thanks for the input.

Share this post


Link to post
Share on other sites

You can route requests for image files to a php script, do whatever you want, then just output the image from php by setting the relevant content type.

 

Htaccess can be used to route requests for the image. This solution only works if you're hosting the images, however.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.