haku Posted August 27, 2014 Share Posted August 27, 2014 (edited) 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 August 27, 2014 by haku Quote Link to comment https://forums.phpfreaks.com/topic/290663-call-a-script-when-directly-accessing-an-image-in-the-browser/ Share on other sites More sharing options...
jazzman1 Posted August 27, 2014 Share Posted August 27, 2014 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. Quote Link to comment https://forums.phpfreaks.com/topic/290663-call-a-script-when-directly-accessing-an-image-in-the-browser/#findComment-1489010 Share on other sites More sharing options...
haku Posted August 27, 2014 Author Share Posted August 27, 2014 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. Quote Link to comment https://forums.phpfreaks.com/topic/290663-call-a-script-when-directly-accessing-an-image-in-the-browser/#findComment-1489011 Share on other sites More sharing options...
jazzman1 Posted August 27, 2014 Share Posted August 27, 2014 Hm....sorry for that...I have to re-read the question one more time b/s of lacking of my English knowledge Quote Link to comment https://forums.phpfreaks.com/topic/290663-call-a-script-when-directly-accessing-an-image-in-the-browser/#findComment-1489015 Share on other sites More sharing options...
haku Posted August 27, 2014 Author Share Posted August 27, 2014 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). Quote Link to comment https://forums.phpfreaks.com/topic/290663-call-a-script-when-directly-accessing-an-image-in-the-browser/#findComment-1489018 Share on other sites More sharing options...
haku Posted August 27, 2014 Author Share Posted August 27, 2014 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. Quote Link to comment https://forums.phpfreaks.com/topic/290663-call-a-script-when-directly-accessing-an-image-in-the-browser/#findComment-1489019 Share on other sites More sharing options...
CroNiX Posted August 27, 2014 Share Posted August 27, 2014 You could also just scan the apache logs. Quote Link to comment https://forums.phpfreaks.com/topic/290663-call-a-script-when-directly-accessing-an-image-in-the-browser/#findComment-1489020 Share on other sites More sharing options...
haku Posted August 27, 2014 Author Share Posted August 27, 2014 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. Quote Link to comment https://forums.phpfreaks.com/topic/290663-call-a-script-when-directly-accessing-an-image-in-the-browser/#findComment-1489021 Share on other sites More sharing options...
cpd Posted August 27, 2014 Share Posted August 27, 2014 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. Quote Link to comment https://forums.phpfreaks.com/topic/290663-call-a-script-when-directly-accessing-an-image-in-the-browser/#findComment-1489037 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.