Si l'image n'existe pas sur le serveur, alors... ? Question PHP

WRInaute passionné
Hello,

Je rencontre un problème où je n'arrive pas à trouver la solution.

Sur WP, j'ai des meta données qui affichent une image :
Article 1
metadonne : images/image1.jpg
Article 2
metadonne : images/image2.jpg
...jusqu'à 8.000.

Je me trouve à donc appeler toutes les images (image1, image2...) alors que certaines ne sont pas sur le serveur (par exemple : image1).
Comment faire pour détecter que l'image ne se trouve pas sur le serveur pour certains articles afin de vider la metadonnée ?
Ou alors, comment faire pour remplacer mon image par une image type sur le site public sur l'image appelé ne se trouve pas le serveur ?

Merci d'avance pour votre aide :)
 
WRInaute impliqué
En fait, vous ne donnez pas vraiment de solution. C'est bien de tester l'existence du fichier avec PHP. Mais encore faut-il que celui-ci ait conscience que l'on cherche une image qui n'existe pas.

Ce que je ferai, c'est placer un fichier PHP (404.php par exemple) dans le répertoire « images ».
Ensuite, tu crées un fichier « .htaccess » dans le même répertoire afin de rediriger les demandes de fichier qui n'existe plus.

Voici un exemple :

Ton fichier « .htaccess »
Code:
# fichier physique existe, on ne fait rien
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* - [NC,L]

RewriteRule (.*) ./404.php?image=$1 [L]

Ensuite, ton fichier « 404.php »
PHP:
<span class="syntaxdefault"><br />if </span><span class="syntaxkeyword">(isset(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'image'</span><span class="syntaxkeyword">]))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    mail</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'rapport@example.com'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'Fichier image manquant'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'Fichier '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'image'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">// écrire l'info dans un fichier serait peut-être plus judicieux.<br /></span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Status: 404 Not Found"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> true</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// on spécifie une erreur 404 quand même<br /></span><span class="syntaxdefault"> </span>

Voila.
 
WRInaute passionné
Merci à vous 3 pour la rapidité de vos réponses. Je pense que la fonction file_exists() devrait fonctionner. ;)
 
WRInaute impliqué
En plus, on est pas sur que ce soit un fichier avec « file_exists ». Ce peut-être un répertoire ;)
 
Discussions similaires
Haut