function getUrl() {
$url = @( $_SERVER["HTTPS"] != 'on' ) ? 'http://'.$_SERVER["SERVER_NAME"] : 'https://'.$_SERVER["SERVER_NAME"];
$url .= ( $_SERVER["SERVER_PORT"] !== 80 ) ? ":".$_SERVER["SERVER_PORT"] : "";
$url .= $_SERVER["REQUEST_URI"];
return $url;
}
Aktuelle Seiten-URL abrufen
Chris Coyier am
Danke, wirklich nützlich. Habe das lange gesucht. :)
Bitte keine Fehler unterdrücken. Insbesondere nicht auf einer Bildungswebsite wie dieser!
Danke, sehr praktisch.
Ich denke, ein „ungleich“ im Gegensatz zu einem „nicht identisch“ sollte den gewünschten Effekt erzielen ($_SERVER[“SERVER_PORT”] != 80).
Ja! Es hat funktioniert! Ich mochte es… Danke CSS-TRICKS
Aber es sollte echo getUrl(); geben.
Warum muss die Portnummer angezeigt werden? Ich habe die Zeile entfernt;
$url .= ( $_SERVER[“SERVER_PORT”] !== 80 ) ? “:”.$_SERVER[“SERVER_PORT”] : “”;
Wenn der Webserver nicht über einen Standardport angesprochen wird, müsste er in einer URL enthalten sein, um auf den richtigen Dienst auf dem Rechner, der den Webserver hostet, hinzuweisen. Browser und andere HTTP-Clients gehen ziemlich davon aus, dass Port :80 der Standard ist. SSL-Clients gehen ziemlich davon aus, dass Port :443 der Standard ist.
Das gesagt, sollte der Code nicht nur Port :80, sondern auch Port :443 prüfen, um zu entscheiden, ob die Portnummer weggelassen werden soll. Wie der Code jetzt ist, würde er unnötigerweise Port :443 zu allen SSL-Anfragen hinzufügen.
Danke für einen nützlichen Schnipsel! Zwei Kommentare hier
Alle doppelten Anführungszeichen im Schnipsel können sicher in einfache umgewandelt werden. Das ist auch besser für die Leistung.
„$_SERVER[„SERVER_PORT“] !== 80“ sollte ersetzt werden durch „$_SERVER[„SERVER_PORT“] != 80“. Der Wert von $_SERVER[„SERVER_PORT“] ist ein String, daher wird er niemals strikt gleich der Ganzzahl 80 sein. Also bekommen Sie im Moment immer die Portnummer in der URL.
Dies ist meine Version, basierend auf allem oben Genannten (Post+Kommentare)
/** * Get the current Url taking into account Https and Port * @link https://css-tricks.de/snippets/php/get-current-page-url/ * @version Refactored by @AlexParraSilva */ function getCurrentUrl() { $url = isset( $_SERVER['HTTPS'] ) && 'on' === $_SERVER['HTTPS'] ? 'https' : 'http'; $url .= '://' . $_SERVER['SERVER_NAME']; $url .= in_array( $_SERVER['SERVER_PORT'], array('80', '443') ) ? '' : ':' . $_SERVER['SERVER_PORT']; $url .= $_SERVER['REQUEST_URI']; return $url; }Ihre Kommentare sind willkommen…
Einige Verbesserungen der obigen Codes
Das funktioniert nicht, wenn SSL Flexibel von Cloudflare verwendet wird.
Damit es funktioniert, sollten Sie hinzufügen
$sslflexible = ($visitor = json_decode($_SERVER['HTTP_CF_VISITOR'])) && $visitor->scheme == 'https';Danke, wirklich nützlich. Habe das lange gesucht.