PHP Get Site URL Protocol – http vs https

현재 사이트 URL 프로토콜을 설정하기 위해 작은 함수를 작성했지만 SSL이 없고 https에서 작동하는지 테스트하는 방법을 모릅니다.이게 맞는지 말씀해 주시겠어요?

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() ); 

위와 같이 해야 하나요, 아니면 그냥 이렇게 하면 되나요?

function siteURL() {
$protocol = 'http://';
$domainName = $_SERVER['HTTP_HOST'].'/'
return $protocol.$domainName; } define( 'SITE_URL', siteURL() ); 

SSL에서는 앵커태그 URL이 http를 사용하고 있어도 서버는 자동으로 URL을 https로 변환하지 않습니까?프로토콜을 확인할 필요가 있습니까?

감사해요!



질문에 대한 답변



난 이거면 돼

if (isset($_SERVER['HTTPS']) &&
($_SERVER['HTTPS'] == 'on'
$_SERVER['HTTPS'] == 1)
isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
$_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$protocol = 'https://'; } else {
$protocol = 'http://'; } 



늦은 건 알지만 이런 문제를 해결할 수 있는 훨씬 더 편리한 방법이 있어!다른 솔루션은 매우 복잡합니다.이 방법은 다음과 같습니다.

$protocol = stripos($_SERVER['SERVER_PROTOCOL'],'https') === 0 ? 'https://' : 'http://'; 

…혹은 조건 없이 다음을 수행할 수도 있습니다.

$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,strpos( $_SERVER["SERVER_PROTOCOL"],'/'))).'://'; 

봐주세요




자동이 아닙니다.당신의 최상위 기능은 정상으로 보입니다.




일부 변경 사항:

function siteURL() {
$protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off')
$_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$domainName = $_SERVER['HTTP_HOST'];
return $protocol.$domainName; } 



지름길

$scheme = $_SERVER['REQUEST_SCHEME'] . '://';