Body basierend auf URL identifizieren

Avatar of Chris Coyier
Chris Coyier am
<?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";
  }
?>