Menentukan protokol URL tapak semasa (http atau https) adalah penting untuk memastikan operasi laman web yang selamat dan konsisten. Walau bagaimanapun, apabila membangunkan secara tempatan atau tanpa SSL, menguji ketepatan fungsi tersebut boleh terbukti mencabar.
Fungsi yang disediakan "siteURL" cuba mewujudkan protokol berdasarkan kehadiran Kunci 'HTTPS' dalam tatasusunan $_SERVER dan nilai tidak kosong atau 'mati'nya. Sebagai alternatif, ia menyemak sama ada 'SERVER_PORT' ialah 443. Jika mana-mana syarat dipenuhi, ia mengembalikan "https://", sebaliknya "http://".
Dengan ketiadaan SSL, menentukan protokol dengan tepat memerlukan pemeriksaan tatasusunan $_SERVER. Walau bagaimanapun, jika SSL aktif, pelayan menukar URL secara automatik kepada https walaupun URL tag sauh menggunakan http. Akibatnya, nampaknya tidak perlu untuk menyemak protokol.
Untuk menangani perkara ini, pelaksanaan yang dipertingkatkan dicadangkan dengan menyemak penunjuk protokol HTTPS dan HTTP dalam $_SERVER tatasusunan. Jika mana-mana syarat ini dipenuhi, fungsi akan mengembalikan protokol yang betul.
<code class="php">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://'; }</code>
Pendekatan ini memastikan ketepatan untuk kedua-dua kes, sama ada SSL didayakan atau tidak.
Atas ialah kandungan terperinci Berikut ialah beberapa pilihan tajuk, memfokuskan pada masalah dan penyelesaian: Pilihan 1 (Terus dan ringkas): Cara Menentukan Protokol URL Tapak yang Betul dalam PHP (http vs https) Pilihan 2 (Menekankan cha. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!