0

我需要基于 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

4 回答 4

1

我同意@MichaelBertwoski 的评论,即如果您只是尝试为javascript 执行此操作,请像这样在javascript 中进行检测。

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

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

于 2012-11-28T01:16:30.767 回答
1

尝试if (isset($_SERVER['HTTPS']))改用。

于 2012-11-28T01:05:02.390 回答
1

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

相反,请尝试:

$https = !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== "off";
于 2012-11-28T01:05:26.190 回答
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;
于 2012-11-28T01:05:38.180 回答