PHP Detect URL Protocol - http vs https
I've written a little function to establish the current site url
protocol but I don't have SSL and don't know how to test if it works
under https. Can you tell me if this is correct?
function siteURL()
{
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$domainName = $_SERVER['HTTP_HOST'].'/';
return $protocol.$domainName;
}
define( 'SITE_URL', siteURL() );
Is it necessary to do it like above or can I just do it like?:function siteURL()
{
$protocol = 'http://';
$domainName = $_SERVER['HTTP_HOST'].'/'
return $protocol.$domainName;
}
define( 'SITE_URL', siteURL() );
Under SSL, doesn't the server automatically convert the url to https
even if the anchor tag url is using http? Is it necessary to check for
the protocol?Thank you!
Answer:
I know it's late, although there is a much more convenient way to solve this kind of problem! the solutions shown above are quite messy, and if someone should ever check back on this, there's how i would do:
$protocol = stripos($_SERVER['SERVER_PROTOCOL'],'https') === true ? 'https://' : 'http://';or even without condition if you don t like
$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,strpos( $_SERVER["SERVER_PROTOCOL"],'/'))).'://';
Source