Bagaimana untuk Menentukan Protokol URL Tapak Semasa dalam PHP: Adakah Fungsi ini Betul?

Mary-Kate Olsen
Lepaskan: 2024-10-27 16:58:02
asal
856 orang telah melayarinya

 How to Determine the Current Site URL Protocol in PHP: Is this Function Correct?

PHP Dapatkan Protokol URL Tapak - http vs https

Soalan:

Seorang pengguna telah mencipta fungsi untuk mewujudkan protokol URL tapak semasa tetapi tidak pasti sama ada ia berfungsi di bawah HTTPS kerana mereka tidak mempunyai SSL. Mereka bertanya sama ada fungsi mereka betul:

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() );
Salin selepas log masuk

Mereka juga tertanya-tanya sama ada mereka boleh memudahkan fungsi seperti berikut:

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

Jawapan:

Fungsi yang disediakan adalah betul dan boleh menentukan protokol (http atau https) dengan berkesan berdasarkan syarat berikut:

  • Jika $_SERVER['HTTPS'] tidak kosong dan tidak sama dengan 'off '
  • Jika $_SERVER['SERVER_PORT'] bersamaan dengan 443

Walau bagaimanapun, terdapat cara yang lebih ringkas untuk mencapai hasil yang sama:

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://';
}
Salin selepas log masuk

Coretan kod ini menyemak kedua-dua kehadiran $_SERVER['HTTPS'] dan sama ada nilainya 'hidup' atau 1. Ia juga menyemak kehadiran $_SERVER['HTTP_X_FORWARDED_PROTO'] dan sama ada nilainya 'https '. Senario ini berlaku apabila tapak web menggunakan HTTPS, tetapi protokol tidak boleh diakses secara langsung melalui $_SERVER['HTTPS'].

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Protokol URL Tapak Semasa dalam PHP: Adakah Fungsi ini Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan