Как я могу получить полный URL текущей страницы на сервере Windows/IIS?

137
задан Peter Mortensen 13 April 2014 в 11:11
поделиться

7 ответов

Возможно, потому что Вы находитесь под IIS,

$_SERVER['PATH_INFO']

то, что Вы хотите, на основе URL, которые Вы раньше объясняли.

Для Apache Вы использовали бы $_SERVER['REQUEST_URI'].

135
ответ дан 23 November 2019 в 23:33
поделиться

Часть постзаголовка URL после Вашего index.php файл, который является распространенным способом обеспечить дружественные URL, не используя mod_rewrite. Постзаголовок является на самом деле поэтому частью строки запроса, таким образом, необходимо смочь получить его с помощью $ _SERVER ['QUERY_STRING']

3
ответ дан 23 November 2019 в 23:33
поделиться

$_SERVER['REQUEST_URI'] не работает над IIS, но я действительно находил это: http://neosmart.net/blog/2006/100-apache-compliant-request_uri-for-iis-and-windows/, который звучит как обещание.

11
ответ дан 23 November 2019 в 23:33
поделиться

REQUEST_URI установлен Apache, таким образом, Вы не получите его с IIS. Попытайтесь делать var_dump или print_r на $ _SERVER и посмотрите, какие значения существуют там, что можно использовать.

4
ответ дан 23 November 2019 в 23:33
поделиться

Я использую следующую функцию, чтобы получить текущий полный 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;
}
5
ответ дан 23 November 2019 в 23:33
поделиться
$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;
63
ответ дан 23 November 2019 в 23:33
поделиться

Для замены модульных тестов можно использовать разработку, управляемую приемочными испытаниями, и иметь проверенные отчеты для хорошо известных данных, используемых в качестве ссылок.

Однако этот вид теста не дает мелкозернистой диагностики, как это делают единичные тесты, они обычно дают только результат 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();
?>
0
ответ дан 23 November 2019 в 23:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: