2013-08-12 6 views
0

Есть ли способ запустить код при загрузке изображения?Запустить скрипт при загрузке изображения

Например, если мое изображение размещено на сайте www.mydomain.com/image.png, и если кто-то выполнит это изображение ссылки, будет отображаться, так как это файл изображения. Но могу ли я запустить набор кода, когда кто-то пытается просмотреть изображение?

Вроде.

Когда я открываю запустить www.mydomain.com/image.png он должен выполнить что-то вроде

<?php 
    mail("[email protected]", "image opened", "image opened by".$Server['addr']); 
?> 

Я нашел там несколько таких услуг, предлагаемых в Интернете, но я не могу разобраться, как выполнить код файл, когда файл образа пытается выполнить.

Может кто-нибудь дать мне краткое представление о том, как это будет тренировка? Я могу самостоятельно написать

+1

См. Http://stackoverflow.com/questions/900207/return-a-php-page-as-an-image. Вам необходимо настроить веб-сервер для обработки файлов '.png' с помощью php-интерпретатора. – RoadieRich

+0

@RoadieRich - Спасибо за ваш ответ. Это важный вопрос, но я думаю, что в моей части есть что-то большее. В связанном вопросе OP задал файл file.php? Img = 1, тогда как у меня работает файл изображения. – Kerry

+0

Вы можете настроить [php для обработки любого типа файла, который вам нравится] (https://kb.mediatemple.net/questions/145/). В этой ситуации установите php для обработки '.png', дайте вашему скрипту расширение .png и поместите фактическое изображение где-то недоступным для публики. – RoadieRich

ответ

0

Да используйте onload event вашего элемента изображения.

стороне клиента:

<img src="..." onload="JavaScript_Code"> 

или

img = document.getElementById("Image_Id") 
img.onload = function(){SomeJavaScriptCode}; 

стороне сервера (index.php):

<?php 
// do some works with the $_Get["path"] 
header('Content-Type: image/png'); 
readfile($_Get["path"]); 
exit; 

и URL изображения будет * index.php путь = Path_to_png_image_file * или вы можете сделать URL_Rewriting для удаления индекса ? часть URL-адреса

+0

Как вы можете написать функцию onload в файл PNG? Я сказал, что хочу назвать файл как www.mydomain.com/image.png – Kerry

+0

Это работает только в том случае, если изображение загружается на эту веб-страницу в браузере с включенным javascript. Загрузка изображения любым другим способом - например, если он используется в социальных сетях - обойдется код. Это зависит от того, чего хочет @Kerry. – RoadieRich

+0

Как раз сейчас прочитайте статью о Google, что PHP-код может быть выполнен с использованием GIF-файла. Просто интересно, может ли кто-нибудь помочь мне, как это может быть достигнуто. Надеюсь, мне нужно задать новый вопрос. – Kerry

0

После небольшого просмотра, он выглядит как лучший способ справиться с этим, может использоваться mod_rewrite, если он доступен.

Настройка правила как

# Enable Rewriting 
RewriteEngine on 

# Rewrite user URLs 
# Input: images/image.png/ 
# Output: images.php?f=image.png 
RewriteRule ^images/(\w+\.png)/?$ images.php?f=$1 

Затем, используя пример, приведенный в php documentation служить изображение:

<?php 

$filename = $_GET['f']; 

if (!file_exists($filename)) 
{ 
    header('HTTP/1.0 404 Not Found'); 
    include('image404.php'); //or something similar if you want a nice error message 
    exit(); 
} 
else 
{ 
    mail("[email protected]", "image opened", "image opened by".$Server['addr']); 

    $fp = fopen($_GET['f'], 'rb'); 

    header("Content-Type: image/png"); 
    header("Content-Length: " . filesize($name)); 

    fpassthru($fp); 
} 

Заметьте, что он требует, чтобы служить файл из подкаталога как www.mydomain.com/images/image.png, но это позволяет избежать проблемы с настройкой всех файлов png, обрабатываемых php.

Возможно, вам стоит подумать, нужна ли дополнительная санитария: например, вы можете удалить косые черты и .. в имени файла - как справляются с mod_rewrite, им потребуется проверка.

Смежные вопросы