Gibt es eine Möglichkeit, diese Case-Anweisung zu vereinfachen?

8

Ich habe diese PHP Case-Anweisung

%Vor%

Das funktioniert großartig, aber ich habe viele viele Dateien (wie 190) und ich würde gerne wissen, ob es einen Weg gibt, um diese Fallaussage zu machen, viele arbeiten mit irgendetwas, also muss ich nicht 190 Fallbedingungen machen. Ich dachte, ich kann die Bedingung in dem Fall verwenden und vielleicht sehen, ob diese Datei vorhanden ist und wenn ja, dann Display und wenn nicht dann vielleicht eine 404 Seite, aber ich war mir nicht sicher, eine gute Möglichkeit, dies zu tun ... irgendwelche Ideen würden helfen viel

    
Trace 25.07.2011, 15:21
quelle

7 Antworten

4

Wenn es keine Benutzereingabe ist, können Sie es wie

tun %Vor%

Wiederholung, tun Sie dies nicht, wenn $ include aus Benutzereingaben gefüllt wird!

    
genesis 25.07.2011, 15:26
quelle
15

Sie können Dateinamen in einem Array vordefinieren und dann in_array verwenden, um die Existenz des Namens zu überprüfen:

%Vor%     
Karolis 25.07.2011 15:27
quelle
2

Dies ist eine einfache Implementierung ohne Sicherheitsüberprüfungen:

%Vor%

Um es beispielsweise sicherer zu machen, können Sie Schrägstriche aus $parts[count($parts) - 1]

entfernen     
mck89 25.07.2011 15:26
quelle
2

Überprüfen Sie, ob die Datei vorhanden ist, und schließen Sie sie ein.

Beachten Sie, dass Sie den Inhalt von $page überprüfen müssen, um sicherzustellen, dass kein Pfad wie /../../../../ vorhanden ist, um zu versuchen, woanders in Ihrem Dateisystem zu lesen, wenn dies eine Benutzereingabe sein soll.

Wenn Sie beispielsweise wissen, dass alle Ihre Pfade alphanumerisch mit Unterstrichen sind, können Sie Folgendes tun:

%Vor%     
Michael Berkowski 25.07.2011 15:27
quelle
1

Warum nicht so etwas?

%Vor%     
Matt H. 25.07.2011 15:26
quelle
1
%Vor%     
TaylorOtwell 25.07.2011 15:27
quelle
1

Ein anderer Ansatz wäre, zu überprüfen, ob die angegebene Datei wirklich in einem bestimmten Verzeichnis existiert:

%Vor%     
Karolis 25.07.2011 18:41
quelle