Tach!
Du prüfst lediglich, ob die Datei eine Dateigröße ungleich null Bytes hat, nicht aber, ob die Datei auch wirklich in Deinen Verzeichnissen, bzw. in den beabsichtigten Verzeichnissen liegt. Du stellst lediglich ein "txt/" vor den Pfad und eine Dateiendung ".txt" hinten an.
Genügt das wirklich, um unberlaubte Dateipfade zu vermeiden? Möchtest Du zur Sicherheit nicht lieber alle Slashes aus dem Wert der Variablen $seite vorher entfernen?
realpath() ist mein Favorit in solchen Fällen. Und dann den Anfang des Ergebnisses mit dem absoluten Pfad zum Verzeichnis der Dateien vergleichen.
Desweiteren gefällt mir die Prüfung auf Vorhandensein der Textdatei so noch nicht. Warum nutzt Du nicht die Funktion is_file() anstelle von filemtime? Das mag jetzt eher ein akademisches Problem sein, aber der Code liest sich später tatsächlich einfacher, wenn man anhand des Funktionsnamens schon sieht, was diese Prüfung hier soll.
realpath() testet auch schon auf Vorhandensein. Abgesehen davon und dem Fehler im Code ist die ganze Vorgehensweise sehr umständlich. file_get_contents() und die Sache ist in einem Einzeiler gegessen. Ob die Datei nicht vorhanden ist, sieht man am zurückgegebenen false (mit typsicherem Vergleich testen!). Ob die Dateigröße 0 oder in ihr was drin ist, sieht man ebenfalls am Ergebnis von file_get_contents() - entweder ein Leerstring oder ein gefüllter.
dedlfix.