Я работаю над этой страницей: http://localhost/projectname/custom.php
И <?php echo $_SERVER['REQUEST_URI']; ?>
, и <?php echo $PHP_SELF; ?>
не указывают полное местоположение. Что мне следует использовать, чтобы получить полный адрес URL?
Я работаю над этой страницей: http://localhost/projectname/custom.php
И <?php echo $_SERVER['REQUEST_URI']; ?>
, и <?php echo $PHP_SELF; ?>
не указывают полное местоположение. Что мне следует использовать, чтобы получить полный адрес URL?
Насколько я знаю, нативного метода не существует, но вы можете использовать его:
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;
}
$_SERVER["SERVER_PROTOCOL"]
, чтобы узнать протокол.
- person PhoneixS; 14.05.2014
strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/")
, чтобы извлечь протокол. Очень странно, что вы увидите сервер, настроенный для обслуживания php-страниц через протокол, отличный от http, поэтому обычно можно пропустить эту проверку. Я прокомментировал это только в том случае, если вы были одним из этих странных серверов.
- person PhoneixS; 12.12.2014
Если вы пытаетесь добавить переменные обратно в конец 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);
В данном случае «ссылка», «идентификатор» и «тип» были переменными, которые мне были нужны для отслеживания, но URL-адрес, который я хотел отслеживать, имел переменную на конце, которая была удалена моим сценарием, как если бы она была часть отправляемого к нему запроса; Мне нужно было добавить его обратно в URL-адрес ссылки, прежде чем передавать его в заголовок ("Location:". $ 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;
strleft
не существует (по крайней мере, в последних версиях PHP).
- person pr1001; 09.10.2013