如何在URI中检索http或https

时间:2012-11-28 01:02:44

标签: php

我需要根据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,它总是转到第二个选项。有什么工作吗?提前谢谢。

4 个答案:

答案 0 :(得分:1)

请尝试使用if (isset($_SERVER['HTTPS']))

答案 1 :(得分:1)

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

相反,请尝试:

$https = !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== "off";

答案 2 :(得分: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;

答案 3 :(得分:1)

我同意@ MichaelBertwoski的评论,如果你只是想为javascript做这个,请在​​这样的javascript中进行检测。

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

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