<?php
$url = explode('/',$_SERVER['REQUEST_URI']);
$dir = $url[1] ? $url[1] : 'home';
?>
<body id="<?php echo $dir ?>">
Dies würde aus http://domain.tld/blog/home „blog“ machen (die zweite Ebene der URL-Struktur). Wenn es sich im Stammverzeichnis befindet, wird „home“ zurückgegeben.
Hier ist eine alternative Methode
<?php
$page = $_SERVER['REQUEST_URI'];
$page = str_replace("/","",$page);
$page = str_replace(".php","",$page);
$page = str_replace("?s=","",$page);
$page = $page ? $page : 'index'
?>
Dies würde aus http://domain.tld/blog/home „domaintldbloghome“ machen, was weitaus spezifischer ist. Es entfernt auch „.php“-Dateierweiterungen und den Standard-WordPress-Suchparameter.
Sicherere Methode
function curr_virtdir($echo=true){
$url = explode('/',$_SERVER['REQUEST_URI']);
$dir = $url[1] ? $url[1] : 'home'; // defaults to this if in the root
$dir = htmlentities(trim(strip_tags($dir))); // prevent injection into the DOM through this function
if ($echo) echo $dir;
return echo $dir; // ie. curr_virtdir(false)
}
function get_curr_virtdir(){
curr_virtdir(false);
}
Gibt den Wert des „mittleren“ Verzeichnisses zurück
Auf https://css-tricks.de würde es „home“ zurückgeben
Auf https://css-tricks.de/snippets würde es „snippets“ zurückgeben
Auf https://css-tricks.de/forums/viewforum.php?f=6 würde es „forums“ zurückgeben
Die Funktionen strip_tags() und htmlentities() verhindern, dass bösartiger Code in die URL eingefügt und ausgeführt wird, z. B.
<body id="foo"><script>alert("Booo");</script>
Verwendung zur ID-Erkennung des Körpers
<body id="<?php curr_virtdir(); ?>">
Andere Verwendung
<?php
if ( get_curr_virtdir() == "store" ){
echo "Welcome to our awesome store !";
} elseif ( get_curr_virtdir() == "home" ){
echo "Welcome home :-)";
} else {
echo "Welcome on some other page";
}
?>
Hmm, ich habe einfacheren Code verwendet, ohne an Sicherheit zu denken. Ich sollte das überdenken.
Das war sehr hilfreich. Ich verwende die alternative Methode (die zweite von oben). Wie würde ich den ID-Selektor auf die ersten beiden Verzeichnisse beschränken? Sagen wir, ich habe: domain.com/products/ramps/singlefoldramps.html
Würde id=„productsramps“ zurückgeben und nicht das dritte Verzeichnis im ID-Tag verwenden?
Ich neige dazu, die . Dies gibt auch viele nützliche Informationen, ähnlich wie diese Beispiele
http://codex.wordpress.org/Template_Tags/body_class
Ich erhalte einen Syntaxfehler in Zeile 6 der sicheren Version
return echo $dir; // z. B. curr_virtdir(false)
Irgendwelche Ideen?
Das „echo“ wurde entfernt – das scheint das Problem behoben zu haben.
function curr_virtdir($echo=true){
$url = explode(‘/’,$_SERVER[‘REQUEST_URI’]);
$dir = $url[1] ? $url[1] : ‘home’; // Standardwert, wenn im Stammverzeichnis
$dir = htmlentities(trim(strip_tags($dir))); // Verhindert die Einschleusung in das DOM durch diese Funktion
if ($echo) echo $dir;
return $dir;
Keiner dieser Tipps funktioniert für mich, könnt ihr mir helfen?
Mein Problem ist, ich habe eine Website mit zwei Unterverzeichnissen, ich möchte ausgeben
example.com/dir1/dir2
example.com/dir1/dir2/dir3
Das zweite und dritte Verzeichnis ändern sich immer. Wie kann die ID nur das zweite Verzeichnis (dir2) sein?
Vielen Dank im Voraus!
Gibt es eine Möglichkeit, das .php aus der Body-ID zu entfernen?