Ich habe eine kleine Funktion geschrieben, um das aktuelle Site-URL-Protokoll einzurichten, aber ich habe kein SSL und weiß nicht, wie ich testen soll, ob es unter https funktioniert. Kannst du mir sagen, ob das richtig ist?
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() );
Ist es notwendig, es wie oben zu machen oder kann ich es einfach so machen?:
function siteURL()
{
$protocol = 'http://';
$domainName = $_SERVER['HTTP_HOST'].'/'
return $protocol.$domainName;
}
define( 'SITE_URL', siteURL() );
Konvertiert der Server unter SSL die URL nicht automatisch in https, selbst wenn die URL des Ankertags http verwendet? Muss das Protokoll überprüft werden?
Danke dir!
Antworten:
Es ist nicht automatisch. Ihre Top-Funktion sieht in Ordnung aus.
quelle
//mysqite.com
anstatthttps://mysitecom
Ich weiß, dass es spät ist, obwohl es einen viel bequemeren Weg gibt, diese Art von Problem zu lösen! Die anderen Lösungen sind ziemlich chaotisch; so würde ich es machen:
... oder auch ohne Bedingung, wenn Sie es vorziehen:
Schau es dir an
$_SERVER["SERVER_PROTOCOL"]
quelle
stripos
anstelle von verwendenstrpos
?$_SERVER['SERVER_PROTOCOL']
Welche Art von HTTP-Serverkonfiguration wird zum SpeichernHTTP/1.0
oderHTTP/1.1
abhängig von der Protokollversion verwendet, umhttps
Informationen zu dieser Zeichenfolge zu speichern, die aus der http-Abfrage stammen?Das funktioniert bei mir
quelle
Einige Veränderungen:
quelle
kurzer Weg
quelle
REQUEST_SCHEME
ist nicht zuverlässigDa das Testen der Portnummer meiner Meinung nach keine gute Praxis ist, lautet meine Lösung:
Die
HTTPS
Konstante gibtTRUE
if zurück, wenn sie$_SERVER['HTTPS']
gesetzt ist und gleich "1", "true", "on" oder "yes" ist. Gibt sonst FALSE zurück.quelle
Für jedes System außer IIS reicht dies völlig aus, um die URL der Site selbst zu definieren:
oder
hängt davon ab, was Sie genau wollen: HTTP_HOST vs. SERVER_NAME
quelle
Im Falle eines Proxys geben die
SERVER_PORT
möglicherweise nicht den richtigen Wert an, so dass dies für mich funktioniert hat -quelle
Verwenden Sie diese Servervariable, um die Protokolldetails abzurufen:
Beachten Sie, dass diese Servervariable unzuverlässig ist. Weitere Informationen finden Sie unter: Ist $ _SERVER ['REQUEST_SCHEME'] zuverlässig?
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich bin heute darauf gestoßen, da ich dies auf meiner Website testen musste. Es scheint, dass die obigen Antworten unnötig kompliziert sind. Um das Site-Protokoll zu erstellen, müssen Sie lediglich testen
$_SERVER['HTTPS']
Wenn das Protokoll HTTPS verwendet,
$_SERVER['HTTPS']
wird 'on' zurückgegeben. Wenn nicht, bleibt die Variable leer. Beispielsweise:// test if HTTPS is being used. If it is, the echo will return '$SSL_test: on'. If not HTTPS, '$SSL_test' will remain empty.
$SSL_test = $_SERVER['HTTPS'];
Mit den oben genannten Informationen können Sie HTTPS einfach und sauber testen und entsprechend implementieren. :) :)
quelle
hat eine Funktion mit der Antwort von Rid Iculous erstellt , die auf meinem System funktioniert hat.
Ich hoffe es hilft
quelle
Ich habe die am häufigsten gewählte Antwort getestet und es hat bei mir nicht funktioniert. Am Ende habe ich Folgendes verwendet:
quelle
$_SERVER["HTTPS"]
und daher wird Ihr Code möglicherweise zurückgegeben,http://
selbst wenn dies der Fall sein solltehttps://
https
, warum sollte der Code dann immer noch zurückgegeben werdenhttps
?$_SERVER["HTTPS"]
Variable wird nie definiert.quelle
Aus CodeIgniter extrahiert:
quelle
Es ist die beste Lösung von https oder http verwenden Sie diese:
Es kann jedoch kein https oder http angezeigt werden, sodass nur der Inhalt Ihrer Website wie Bilder usw. verknüpft wird.
Wenn Sie Ihre Site in https umleiten möchten, fügen Sie diesen Code in die .htaccess-Datei ein:
Ändern Sie www.your-domain.com mit Ihrem Dowmain-Namen.
quelle
Hier ist , wie ich es tun ... es ist eine Kurzschrift
if else
- Version Rid Iculous die Antwort ...quelle
Ich denke, die komplette Funktion sollte so aussehen:
Anmerkungen:
quelle
Ich weiß, dass ich zu spät zu dieser Party komme, aber wenn Sie es vorziehen, $ _SERVER nicht zu verwenden, da dies stark entmutigt und auf einigen PHP-Frameworks sogar deaktiviert ist; und Sie einen Apache-Webserver haben, können Sie es Native Command thusly: -
quelle