Raketenwissenschaftler: Pfad, Url ermitteln

Beitrag lesen

Du hast alles einzeln:

  • HTTPS oder REQUEST_SCHEME
  • HTTP_HOST
  • SERVER_PORT
  • REQUEST_URI
  • QUERY_STRING

Musst es nur noch zusammenbauen ... das ist aber keine Raketenwissenschaft.

Allerdings ist noch eine Warnung: Wenn Du das brauchst, um Links zu „bauen“ dann machst Du vermutlich was falsch. Nimm bevorzugt relative Adressen.

<?php

error_reporting(E_ALL);
ini_set("display_errors", 1);

function getMyURL ( $withParams=true ) {
	if ( isset( $_SERVER['REQUEST_SCHEME'] ) ) {
		$sheme=$_SERVER['REQUEST_SCHEME'];
	} elseif ( isset( $_SERVER['HTTPS'] ) and 'on' == $_SERVER['HTTPS'] ) {
	   $sheme='https';
	} else {
	   $sheme='http';
	}

	if ( 'http' == $sheme and 80 != $_SERVER['SERVER_PORT'] ) {
		$port = ':' . $_SERVER['SERVER_PORT'];
	} else if ( 'https' == $sheme and 443 != $_SERVER['SERVER_PORT'] ) {
		$port = ':' . $_SERVER['SERVER_PORT'];
	} else {
	   $port = '';
	}

	$ret = $sheme 
		 . '://' 
		 . $_SERVER['HTTP_HOST']
		 . $port;

    if ( $withParams ) {
		$ret .= $_SERVER['REQUEST_URI'];
	} else {
		$pos = strpos( $_SERVER['REQUEST_URI'], '?' );
		if ( $pos ) {
			$ret .= substr( $_SERVER['REQUEST_URI'], 0, $pos );
		} else {
			$ret .= $_SERVER['REQUEST_URI'];
		}
	}

	return $ret;
}

#/* #Tests:
header( 'Content-type: text/plain; charset=utf-8' );
print_r( getMyURL( true  ) );
echo PHP_EOL;
print_r( getMyURL( false ) );
# */