dedlfix: Behandlung von Formularwerten

Beitrag lesen

echo $begrüßung;

Wenn ich preg_match('|^([a-z0-9_-]+/)*[a-z0-9_-]+\.[a-z]+$|i', $variable); richtig verstanden habe, dann trägt er ja in $variable alle Treffer der genannten Zeichen ein, oder?
Diese ganze Aneinanderreihung von (Sonder-)zeichen verstehe ich nicht. Leider auch nicht nach deiner Erklärung,

Meine Erklärung bezog sich nicht auf den Regulären Ausdruck sondern auf die Anwendung der Funktion preg_match().

nachlesen in verschiedenen Büchern und recherchieren auf diversen Internetseiten. Das ist mir einfach zu kompliziert. Die Einzelnen Bedeutungen der Zeichen verstehe ich; aber bei dieser komplexen Art ... ich glaub da bin ich zu doof für :(

Was willst du eigentlich erreichen? Dieser Ausdruck prüft, ob in $variable ein Wert gemäß des angegebenen Musters enthalten ist. Das gibt die Funktion über ihre Ergebnis bekannt.

Die $variable_verzeichnis um den Link zusammenzubasteln überprüfe bzw. ändere ich jetzt so ab:
$clean_variable_verzeichnis = preg_replace('/[^a-zA-Z_0-9]/', '', $variable_verzeichnis);
Damit verhindere ich, dass man mit "." bzw. ".." auf übergeordnete Ordner zugreift bzw. auf andere (externe) Ziele verweist.

Was hast du denn gegen meinen Vorschlag mit realpath()? Wenn du den Zugriff auf ein Verzeichnis und dessen Unterverzeichnisse beschränken willst, dann vergleiche das Hauptverzeichnis mit dem Anfang des Ergebnisses von realpath(). Das ist ein simpler Stringvergleich plus ein wenig String-Zurechtschneiden.

echo "$verabschiedung $name";