今天在调试微信的JSAPI支付的时候一直出现url地址与后台地址不一致的问题,排除了微信服务商那边的设置问题后,就锁定了后台的代码逻辑。发现发送的协议与当前的协议不同,就做了个HTTP与HTTPS协议的判断,发现问题解决了。
php判断当前的协议是否为HTTPS
下面给出了两种判断当前网址是否为HTTPS协议的方法,大家可以参考一下!
方法1:
例1:
function is_https()
{
if ( !empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') {
return true;
} elseif ( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {
return true;
} elseif ( !empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off') {
return true;
}
return false;
}
PS:如果当前为HTTPS协议,则返回TRUE,否则返回 FALSE
例2:
if(isset($_SERVER["HTTP_X_CLIENT_SCHEME"])){
$scheme = $_SERVER["HTTP_X_CLIENT_SCHEME"];
}elseif(isset($_SERVER["REQUEST_SCHEME"])){
$scheme = $_SERVER["REQUEST_SCHEME"];
}else{
$scheme = 'http';
}
echo $scheme;
PS:如果是HTTPS协议,则输出https,如果是HTTP协议则输出http
方法2:
php 使用正则表达式来判断一个网址是否为HTTPS协议!
使用正则表达式,可以很轻松的对已知的网址做出HTTP与HTTPS协议的判断!
$url = 'https://www.feiniaomy.com/';
$preg = '/^http(s)?:\\/\\/.+/';
if(preg_match($preg,$url)){
echo '是HTTPS协议';
}else{
echo '不是HTTPS协议';
}
来源:https://www.feiniaomy.com/post/718.html
如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!
txttool.com 说一段 esp56物联 查询128 IP查询