PHP判斷http或https的連線

Codeigniter 的 base_url 要弄成判斷 http 或是 https 真麻煩

今天找語法就找了四個版本

一開始找到的版本不知道為何都不生效

今天只想先記錄一下,下次再來研究到底為什麼會這樣

SSL也不是買憑證唷,是用cloudflare提供的


版本一:$root = ($_SERVER[‘SERVER_PORT’] == 443 ? ‘https’ : ‘http’);


版本二:$root = “http”.((isset($_SERVER[‘HTTPS’]) && $_SERVER[‘HTTPS’] == “on”) ? “s” : “”);


版本三:$root = (empty($_SERVER[‘HTTPS’]) OR strtolower($_SERVER[‘HTTPS’]) === ‘off’) ? ‘http’ : ‘https’;


版本四:

$isSecure = false;
if (isset($_SERVER[‘HTTPS’]) && $_SERVER[‘HTTPS’] == ‘on’) {
$isSecure = true;
}
elseif (!empty($_SERVER[‘HTTP_X_FORWARDED_PROTO’]) && $_SERVER[‘HTTP_X_FORWARDED_PROTO’] == ‘https’ || !empty($_SERVER[‘HTTP_X_FORWARDED_SSL’]) && $_SERVER[‘HTTP_X_FORWARDED_SSL’] == ‘on’) {
$isSecure = true;
}
$root = $isSecure ? ‘https’ : ‘http’;

 


我也放了一份在 gist上面 唷

下一篇應該就會解釋這四種方法為什麼可以用,為什麼不能用了