Visto che effettivamente file_exists prende in considerazione solo file sin path relativi (quindi in locale rispetto al server su cui viene eseguito), direi che è una buona soluzione.

Tuttavia io sconsiglio, proprio per questioni di struttura, di usare un metodo del genere per la generazione di contenuti nella stessa pagina. Pero' non sapendo che tipologia di sito sia, magari quella è la soluzione migliore.

Col check che hai inserito non dovresti più avere problemi di injections indesiderate.