Возможно, потому что Вы находитесь под IIS,
$_SERVER['PATH_INFO']
то, что Вы хотите, на основе URL, которые Вы раньше объясняли.
Для Apache Вы использовали бы $_SERVER['REQUEST_URI']
.
Часть постзаголовка URL после Вашего index.php
файл, который является распространенным способом обеспечить дружественные URL, не используя mod_rewrite. Постзаголовок является на самом деле поэтому частью строки запроса, таким образом, необходимо смочь получить его с помощью $ _SERVER ['QUERY_STRING']
$_SERVER['REQUEST_URI']
не работает над IIS, но я действительно находил это: http://neosmart.net/blog/2006/100-apache-compliant-request_uri-for-iis-and-windows/, который звучит как обещание.
REQUEST_URI установлен Apache, таким образом, Вы не получите его с IIS. Попытайтесь делать var_dump или print_r на $ _SERVER и посмотрите, какие значения существуют там, что можно использовать.
Я использую следующую функцию, чтобы получить текущий полный URL. Это должно работать в IIS и Apache.
function get_current_url() {
$protocol = 'http';
if ($_SERVER['SERVER_PORT'] == 443 || (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) {
$protocol .= 's';
$protocol_port = $_SERVER['SERVER_PORT'];
} else {
$protocol_port = 80;
}
$host = $_SERVER['HTTP_HOST'];
$port = $_SERVER['SERVER_PORT'];
$request = $_SERVER['PHP_SELF'];
$query = isset($_SERVER['argv']) ? substr($_SERVER['argv'][0], strpos($_SERVER['argv'][0], ';') + 1) : '';
$toret = $protocol . '://' . $host . ($port == $protocol_port ? '' : ':' . $port) . $request . (empty($query) ? '' : '?' . $query);
return $toret;
}
$pageURL = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
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;
Для замены модульных тестов можно использовать разработку, управляемую приемочными испытаниями, и иметь проверенные отчеты для хорошо известных данных, используемых в качестве ссылок.
Однако этот вид теста не дает мелкозернистой диагностики, как это делают единичные тесты, они обычно дают только результат PASS/FAIL, и, если отчеты часто меняются, ссылки также должны быть восстановлены и повторно подтверждены.
-121--3565992- @ var
, упомянутый выше, называется переменной экземпляра класса , которая отличается от переменных экземпляра ... прочитайте ответ здесь , чтобы увидеть разницу.
В любом случае это эквивалентный код Ruby:
class Fish
def initialize
@var = 'fish'
end
def v
@var
end
end
class Trout < Fish
def initialize
@var = 'trout'
end
end
class Salmon < Fish
def initialize
@var = 'salmon'
end
end
puts Trout.new.v
puts Salmon.new.v
-121--1617039- Я использовал следующий код, и получаю правильный результат...
<?php
function currentPageURL() {
$curpageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {
$curpageURL.= "s";
}
$curpageURL.= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$curpageURL.= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
}
else {
$curpageURL.= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $curpageURL;
}
echo currentPageURL();
?>