2012-11-28 24 views
0

我需要根据http或https进行操作。例如:如何在URI中检索http或https

$https = strpos($_SERVER['REQUEST_URI'], 'https') !== false; 
if ($https) { ?> 
    <script type="text/javascript"> 
    var a = 'a'; 
    </script> 
<?php } else { ?> 
    <script type="text/javascript"> 
    var b = 'b'; 
    </script> 
<?php } ?> 

但这不起作用。无论我访问的页面是http还是https,它总是进入第二个选项。有什么解决办法吗?提前致谢。

+2

这可以单独使用JavaScript来完成,请检查'document.location.protocol'而不是有条件地构建不同的'

1

$_SERVER['REQUEST_URI']只返回相对于服务器根的路径,而不是域或协议。此外,如果我访问http://example.com/https-is-cool,代码将失败。

相反,尝试:

$https = !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== "off"; 
1
if(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443){ 
    echo 'https'; 
}else{ 
    echo 'http'; 
} 

或作为一个变量:

$https = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? true : false; 
1

我会@ MichaelBertwoski的评论认为,如果你只是想对JavaScript做这个,做在这样的JavaScript检测。

if (window.location.protocol == 'https:') { 
    var a = 'a'; 
} else { 
    var b = 'b'; 
} 

如果您需要PHP中的信息,您可以使用发布的其他答案之一。

相关问题