ursus contionabundo: current_page hat keine wirkunge,,,

Beitrag lesen

$this -> current_page = $_SERVER['PHP_SELF'];

Das ist der Dateiname des aktuellen Skriptes, ausgehend vom $_SERVER['DOCUMENT_ROOT']. Du willst aber den Ressourcen-Name vergleichen, der in der URL gesendet wurde.

Der relevante Teil abgerufene Adresse steht in $_SERVER['REQUEST_URI'].

Können an der URL Get-Parameter anhängen (oder eben nicht), dann verwende:

$this -> current_page = explode('?', $_SERVER['REQUEST_URI'])[0];

wenn Du das so lässt, dann wirst Du Probleme bekommen, z.B. wenn mod_rewrite verwendet wird. Also irgendwann. Genauer: Zu einem Zeitpunkt, an dem es Dir gar nicht passt.

Da oben stehende liefert den ersten Teil der am '?' getrennten URL (Ohne Protokoll, Port, Servername). Beispiel/Test:

<?php

$_SERVER['REQUEST_URI'] = '/test.php?foo=bar'; # Fake for the test
echo explode('?', $_SERVER['REQUEST_URI'])[0] . PHP_EOL;

$_SERVER['REQUEST_URI'] = '/test.php';         # Fake for the test
echo explode('?', $_SERVER['REQUEST_URI'])[0] . PHP_EOL;

Output:

/test.php
/test.php

Dann wäre noch das hier:

$_SERVER['PHP_SELF'];

Das ist keine Kunst, das soll weg!