질문:
사용자가 현재 사이트 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() );
답변:
제공된 함수는 올바르며 다음 조건에 따라 프로토콜(http 또는 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://'; }
이 코드 조각은 $_SERVER['HTTPS']의 존재 여부와 해당 값이 'on' 또는 1인지 확인합니다. 또한 $_SERVER['HTTP_X_FORWARDED_PROTO']의 존재 여부와 해당 값이 'https'인지 확인합니다. '. 이 시나리오는 웹사이트에서 HTTPS를 사용하지만 $_SERVER['HTTPS']를 통해 프로토콜에 직접 액세스할 수 없는 경우에 발생합니다.
위 내용은 PHP에서 현재 사이트 URL 프로토콜을 확인하는 방법: 이 기능이 정확합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!