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 ) );
# */