PHP判断是不是https协议

function is_HTTPS(){  //判断是不是https
            if(!isset($_SERVER['HTTPS']))  return FALSE;  
            if($_SERVER['HTTPS'] === 1){  //Apache  
                return TRUE;  
            }elseif($_SERVER['HTTPS'] === 'on'){ //IIS  
                return TRUE;  
            }elseif($_SERVER['SERVER_PORT'] == 443){ //其他  
                return TRUE;  
            }  
                return FALSE;  
   } 
### PHP 中获取域名传输协议的方法 在 PHP 中可以通过多种方式来检测当前请求所使用的 HTTP 或 HTTPS 协议。以下是几种常见的实现方法: #### 方法一:通过 `$_SERVER` 超全局变量 可以利用 `$_SERVER['HTTPS']` 和 `$_SERVER['HTTP_X_FORWARDED_PROTO']` 来判断当前请求是否为 HTTPS 请求。 ```php function get_http_protocol() { $protocol = 'http://'; if ( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) { $protocol = 'https://'; } return $protocol; } ``` 此方法适用于大多数 Web 服务器环境,并能有效识别代理转发的情况[^1]。 #### 方法二:解析 URL 组件 如果已知完整的 URL 字符串,也可以通过 PHP 的内置函数 `parse_url()` 提取协议部分。 ```php function extract_protocol_from_url($url) { $parsed_url = parse_url($url); return isset($parsed_url['scheme']) ? ($parsed_url['scheme'] . '://') : ''; } // 示例调用 $current_url = "http://example.com"; echo extract_protocol_from_url($current_url); // 输出: http:// ``` 这种方法适合于处理外部传入的 URL 地址[^2]。 #### 方法三:综合考虑端口和服务状态 除了简单的协议标志外,还可以进一步验证服务运行的具体情况,比如监听的端口号等信息。 ```php function detect_full_protocol_with_port() { $protocol = 'http://'; if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] === 'on')) { $protocol = 'https://'; } // 添加端口支持 if ($_SERVER['SERVER_PORT'] !== '80') { $protocol .= $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT']; } else { $protocol .= $_SERVER['SERVER_NAME']; } return $protocol; } ``` 这段代码不仅能够区分 HTTP 和 HTTPS,还能附加非标准端口的信息[^3]。 --- ### 总结 以上三种方案各有优劣,在实际开发过程中可以根据具体需求选择合适的方式。通常情况下推荐优先尝试 **方法一** ,因为它简单高效且兼容性强。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

An_s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值