... si dices que pasa cuando no existe la imágen quiere decir que fopen() falló y por lo tanto envia un mesaje de error lo cuál impide que se ejecute la función header(); tendrías una salida a el navegador...
Si es cierto eso, bastaría con anteponer un '@' a fopen() para evitar así te regrese el mensaje...
Ahora, como comentarios extras:
- Usa $_GET para recibir la variable "enlace".
- Coloca un "exit" después de cada header()
-
Te sugeriría cambiar la metodología... el llamar a un archivo externo (el que verifica la existencia del enlace) significa más trabajo, además de que por ocupar header() no se ejecuta el fclose()... ¿por qué no colocas una función dentro del mismo archivo que solo te imprima el nombre de la imágen??, algo como lo que viene en las FAQ, considero es lo más óptimo:
Código PHP:
<?php
function check_url($enlace) {
if (!@fopen($enlace, "r"))
echo "rojo.gif";
else
echo "verde.gif";
@fclose($enlace);
}
?>
<img src="<?php check_url("http://www.google.com") ?>">
<img src="<?php check_url("http://www.espero_no_exista_esto.com") ?>">
...
... si sí es problema del "@" ¿el código que encontraste no lo tenía?????
.
Suerte!