Я работаю над этой страницей: http://localhost/projectname/custom.php
И <?php echo $_SERVER['REQUEST_URI']; ?>
<?php echo $_SERVER['REQUEST_URI']; ?>
и <?php echo $PHP_SELF; ?>
<?php echo $PHP_SELF; ?>
не дают полного места. Что я должен использовать, чтобы захватить полное местоположение URL?
function selfURL() { $s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : ""; $protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s; $port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]); return $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI']; } function strleft($s1, $s2) { return substr($s1, 0, strpos($s1, $s2)); }
Насколько я знаю, нет собственного метода, но вы можете использовать это:
function curPageURL() { $pageURL = 'http'; if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} $pageURL .= "://"; if ($_SERVER["SERVER_PORT"] != "80") { $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; } else { $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; } return $pageURL; }
Если вы пытаетесь добавить переменные обратно в конец URL-адреса, который проходит через скрипт отслеживания ссылок, например, вы можете попробовать следующее:
$URI = array(); foreach($_GET as $key=>$val) { if ($key!="link"&&$key!="id"&&$key!="type") $URI[] = "$key=".urlencode($val); } if (sizeof($URI)>0) $link.="&".join("&",$URI);
В этом случае «ссылка», «id» и «type» были переменными, которые мне нужны для отслеживания, но URL-адрес, который я хотел отслеживать, имел переменную на конце, которая была отключена моим скриптом, как если бы это было часть отправляемого запроса; Мне нужно было добавить его обратно к URL-адресу ссылки, прежде чем передавать его в заголовок («Расположение:». $ Link).
Если это то, чего вы пытаетесь достичь, это отлично работает и короче, чем приведенный выше пример.
проверьте этот … немного длинный и грязный, но работает хорошо …
function absolutizeUrl ( $u, $p ) { $url = parse_url( $u ); $page = parse_url( $p ); if ( strpos( $u , '/' ) === 0 ) { //already absolute } else { $basePath = ''; if ( isset( $page[ 'path' ] ) && strpos( ltrim( $page[ 'path' ], '/' ), '/' ) ) { $baseTokens = explode( '/', $page[ 'path' ] ); array_pop( $baseTokens ); // strip basename $baseTokens[] = $u; $u = join( '/', $baseTokens ); } } if ( ! isset( $url[ 'host' ])) { $u = 'http://'.$page[ 'host' ].'/'.ltrim( $u, '/' ); } return $u; }
Я нашел этот код очень полезным
$protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https') === FALSE ? 'http' : 'https'; // Get protocol HTTP/HTTPS $host = $_SERVER['HTTP_HOST']; // Get www.domain.com $script = $_SERVER['SCRIPT_NAME']; // Get folder/file.php $params = $_SERVER['QUERY_STRING'];// Get Parameters occupation=odesk&name=ashik $currentUrl = $protocol . '://' . $host . $script . '?' . $params; // Adding all echo $currentUrl;