【问题标题】:PHP Determining the current urlPHP 确定当前 url
【发布时间】:2009-12-08 14:23:15
【问题描述】:

我需要修改我的函数以返回我所在的当前文件夹。这是我当前的函数:

function getLinkFromHost($url){  
    $port = $_SERVER['REMOTE_PORT'];  
    $server = $_SERVER['HTTP_HOST'];  
    if($port == 443){  
        $type = "https";  
    } else {  
        $type = "http";  
    }  
    return $type . "://" . $server . "/" . $url;  
}

【问题讨论】:

  • 我需要它来包含我所在的文件夹。

标签: php url directory


【解决方案1】:

看看$_SERVER['REQUEST_URI']$_SERVER['SCRIPT_NAME']

(来自$_SERVER 手动输入)

【讨论】:

    【解决方案2】:

    这是我已经使用了一段时间的简短的甜蜜功能。

    函数 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"]; } 别的 { $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; } 返回 $pageURL; }

    我不能把功劳归于:

    http://www.webcheatsheet.com/PHP/get_current_page_url.php

    【讨论】:

    • 这是非常正确的做法。不检查协议(HTTP 与 HTTPS),端口和服务器名称经常被忽略,并可能在以后导致问题(尤其是在测试环境中,或者更糟糕的是“仅在生产中”,如果您为它的某些方面启用了 SSL,但没有开发中)。这种方法是一种很好的做法,因为它适用于任何使用的语言。
    • 尽管如果您的 SSL 是由负载均衡器完成的,即使 HTTPS 和 SERVER_PORT 也无济于事。在这种情况下,URL 可能看起来像 https://site.com/,但 HTTPS 将关闭,并且 SERVER_PORT 可能是 80(或其他值)。
    【解决方案3】:

    可能你还想在你的 url 中包含 get vars,所以你应该在 highphilosopher 函数中添加一些东西......

    $current_url = rtrim(curPageURL(), "/").(!empty($_GET)) ? "?".http_build_query($_GET) : "";

    【讨论】:

      【解决方案4】:

      .......

      echo $_SERVER['PHP_SELF']; // return current file
      
      echo __FILE__; // return current file
      
      echo $_SERVER['SCRIPT_NAME']; // return current file
      
      echo dirname(__FILE__); // return current script's folder
      
      // etc
      

      【讨论】:

        【解决方案5】:

        这是一个可能有帮助的方法:

        function current_url()
        {
            $result = "http";
        
            if($_SERVER["HTTPS"] == "on") $result .= "s";
        
            $result .= "://".$_SERVER["SERVER_NAME"];
        
            if($_SERVER["SERVER_PORT"] != "80") $result .= ":".$_SERVER["SERVER_PORT"];
        
            $result .= $_SERVER["REQUEST_URI"];
        
            return $result;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-01
          • 2023-03-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多