Die Bestimmung des aktuellen Site-URL-Protokolls (http oder https) ist für die Sicherstellung von entscheidender Bedeutung Sicherer und konsistenter Website-Betrieb. Bei der lokalen Entwicklung oder ohne SSL kann sich das Testen der Genauigkeit solcher Funktionen jedoch als schwierig erweisen.
Die bereitgestellte Funktion „siteURL“ versucht, das Protokoll basierend auf dem Vorhandensein des zu erstellen „HTTPS“-Schlüssel im $_SERVER-Array und sein nicht leerer oder „off“-Wert. Alternativ prüft es, ob der „SERVER_PORT“ 443 ist. Wenn eine der Bedingungen erfüllt ist, wird „https://“ zurückgegeben, andernfalls „http://“.
Wenn kein SSL vorhanden ist, muss zur genauen Bestimmung des Protokolls das Array $_SERVER untersucht werden. Wenn jedoch SSL aktiv ist, konvertiert der Server die URL automatisch in https, auch wenn die Ankertag-URL http verwendet. Daher kann es unnötig erscheinen, nach dem Protokoll zu suchen.
Um dieses Problem zu beheben, wird eine verbesserte Implementierung vorgeschlagen, bei der sowohl HTTPS- als auch HTTP-Protokollindikatoren im $_SERVER überprüft werden Array. Wenn eine dieser Bedingungen erfüllt ist, gibt die Funktion das richtige Protokoll zurück.
<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>
Dieser Ansatz gewährleistet Genauigkeit in beiden Fällen, unabhängig davon, ob SSL aktiviert ist oder nicht.
Das obige ist der detaillierte Inhalt vonHier sind einige Titeloptionen, die sich auf das Problem und die Lösung konzentrieren: Option 1 (direkt und prägnant): So ermitteln Sie das richtige Site-URL-Protokoll in PHP (http vs. https) Option 2 (Betonung des Cha. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!