2009-10-14 7 views
0

Je suis en train de faire ce qui suit dans mon application Web:Comment récupérer une ressource via un script php?

<img src="static.example.com/image01.jpg?width=300&height=300" /> 

Est-il possible d'avoir mon serveur (j'utilise Apache dans un environnement d'hébergement partagé) exécuter un script PHP lors de l'accès à un .jpg (ou tout type de fichier que j'ai choisi) au lieu de simplement servir le fichier?

Je sais que le script PHP doit définir les bons en-têtes etc, je me demande simplement comment il peut être exécuté en premier lieu.

Je sais que cela peut être fait comme si:

<img src="static.example.com/get_image.php?name=image_01.jpg&width=300&height=300" /> 

mais ce n'est pas la façon dont je voudrais avoir.

Répondre

3

Vous pouvez utiliser mod_rewrite si vous êtes dans un sous-répertoire, ou si c'est tout ce que votre static.example.com fera. Ajoutez quelque chose comme ceci à votre fichier .htaccess dans ce sous-répertoire.

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{query_string} ^height=([^&]+)&width=([^&]+) 
    RewriteRule (.*\.jpg|.*\.png|.*\.gif) controller.php?name=$1&height=%1&width=%2 
</IfModule> 

EDIT: Essayez ce qui précède. Comme tout le reste, non testé ... :)

L'ordre des paramètres GET devient important.

test.jpg?height=100&width=120 

devrait se transformer en

controller.php?name=test.jpg&height=100&width=120 


Une autre approche serait de faire apache servir .jpg sous forme de scripts php pour ce répertoire. Regardez simplement dans votre httpd.conf ou php.conf et cherchez .php. Trouvez cette directive et dupliquez-la dans un <Directory> pour .jpg. Je n'ai jamais réellement essayé ceci pour un seul répertoire, mais finalement ce serait plus rapide que la route de mod_rewrite.

Quelque chose comme:

<Files *.jpg> 
SetOutputFilter PHP 
SetInputFilter PHP 
</Files> 
AddType application/x-httpd-php .jpg 
+0

Je suppose l'* peut être changé en * jpg ou d'autres expressions régulières pour correspondre aux extensions que je veux, corriger..? –

+0

Cela fonctionne presque, mais je pense que les paramètres ne sont pas passés correctement. Ceci est ma chaîne de requête: image01.jpg height = 200 & width = 300 c'est ce que j'ai dans mon .htaccess:.. RewriteEngine On RewriteRule (* \ jpg | * \.. png |. * \. gif) controller.php? q = $ 1 Mais quand j'imprime $ _SERVER ['QUERY_STRING'] il donne q = image01.jpg (je voudrais qu'il donne height = 200 & width = 300). Merci pour votre aide. –

+0

que se passe-t-il si vous imprimez $ _GET ['q']? –

Questions connexes