• DE
  • ES
  • EN
  • NL
Google+twitterfacebook

Blog

PHP: Bestimmen Sie die vollständige URL der aktuellen Seite


Geschrieben am % A% e% B% Yvon Jeroen Derks.

Manchmal möchten Sie in einem einfachen PHP-Skript wissen, wie die aktuelle URL (die URL, über die das PHP-Skript aufgerufen wird) ist. Als ich nach einer Lösung gesucht habe, ohne das Rad neu zu erfinden, habe ich tatsächlich keinen PHP-Code gefunden, der meine Erwartungen erfüllt. Also lass es mich auch versuchen.

Welche Komponenten enthält eine URL?

Das Format einer URL sieht folgendermaßen aus:

	Protokoll: // Benutzername: Passwort @ Host: Port / Pfad? Frage # Fragment

Diese Form der URL wird nicht nur für das World Wide Web verwendet. Zum Beispiel wird es auch verwendet, um die erforderlichen Daten für den Zugriff auf eine Datenbank zu kommunizieren oder zu konfigurieren. Da jeder fast täglich URLs verwendet, muss ich die verschiedenen Teile der URL nicht weiter beschreiben.

Ich nehme an, wenn Sie die vollständige URL in Ihrem PHP-Code verwenden möchten, möchten Sie die Verifikationsinformationen (Benutzername und Passwort) nicht einschließen, um zu verhindern, dass sie auf unerwünschte Weise verwendet werden. Das Fragment wird auch nie durch das CGI-Schnittstelle übergeben, sodass Sie es auch nicht verwenden können.

Welche Informationen sind für PHP verfügbar?

Mit der Funktion phpinfo() sehen Sie z. B. in PHP, welche Daten zur Ermittlung der aktuellen URL verfügbar sind:

Screenshot der Ausgabe von phpinfo()

Die Lösung?

Das ist, was wir tun werden:

<?php
	function get_current_url()
	{
		$url = false;

		// check whether this script is being run as a web page
		if (isset($_SERVER['SERVER_ADDR']))
		{
			$is_https	= isset($_SERVER['HTTPS']) && 'on' == $_SERVER['HTTPS'];
			$protocol   = 'http' . ($is_https ? 's' : '');
			$host       = isset($_SERVER['HTTP_HOST'])
							? $_SERVER['HTTP_HOST']
							: $_SERVER['SERVER_ADDR'];
			$port       = $_SERVER['SERVER_PORT'];
			$path_query = $_SERVER['REQUEST_URI'];

			$url = sprintf('%s://%s%s%s',
				$protocol,
				$host,
				$is_https
					? (443 != $port ? ':' . $port : '')
					: ( 80 != $port ? ':' . $port : ''),
				$path_query
			);
		}

		return $url;
	}

Bonus

Als Bonus finden Sie hier Englische Lernseite für die Funktion get_current_url().
Und die Hefe-URL lautet:https://gist.github.com/Magentron/05ee3b8f62886878c2f1c3d76e8e3696

404

Lass es mich wissen, wenn du etwas vorhast! (oder nicht)