PHP:HTTP或HTTPS?

我怎么能告诉如果一个PHP页面通过http或https访问?

如果请求是通过HTTPS发送的,那么$ _SERVER超全局 – $ _SERVER ['HTTPS']将会有一个额外的参数。 你可以检查是否设置

if( isset($_SERVER['HTTPS'] ) ) { 

如果您的请求是通过HTTPS发送的,则您将有一个名为“HTTPS”的额外服务器variables

 if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') { //HTTPS } 
 $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'?'https':'http'; $protocol = isset($_SERVER["HTTPS"]) ? 'https' : 'http'; 

这些都应该工作

这可能会变得更复杂,取决于PHP在你的环境中的位置,因为你的问题是相当广泛的。 这可能取决于是否有负载平衡器以及如何configuration。 这里有几个相关的问题:

  • 如果调用者未使用HTTPS,如何防止访问PHP文件?
  • 检测服务器上的HTTPS vs HTTP发回没有用
 $_SERVER['HTTPS'] 

如果请求是通过HTTPS发送的,则将包含“非空”值

PHP服务器variables

你应该可以通过检查$_SERVER['HTTPS']的值来做到这一点(它只能在使用https时设置)。

http://php.net/manual/en/reserved.variables.server.php