Hintergrund: Website (Beispiel.com), DNS-Setup durch cloudflare pro Plan, bietet dies "flexible ssl" (read here), was bedeutet, dass ssl nur zwischen Client und Cloudflare und nicht zwischen Cloudflare und Server existiert, so dass dedizierte IP nicht benötigt und keine speziellen Setups auf dem Server benötigen. Der Server ist so eingerichtet, dass er keine ssl verwendet (nur eine generische Website), aber die flexible SSL-Funktion von cloudflare kümmert sich um den ssl-Aspekt.PHP https überprüfen mit flexiblen ssl (cloudflare), wie vor?
Sprache: PHP (codeignighter, aber das tut wirklich wichtig)
Ziel: wenn zu Domain "exmple.com/ " Surfen oder "http: // exmple.com/", um eine Variable zu erzeugen "http: // example.com" und beim Browsen zu "https: // example.com/*", um eine Variable "https: // example.com" zu generieren.
Was sollte funktionieren (aber tut):
$root = '';
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off')
{
//it doesnt reach here...
$root .= 'https://';
}
else
{
$root .= 'http://';
}
$root .= "".$_SERVER['HTTP_HOST'];
$root .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
ich es immer tun machen: „//example.com“, aber das tut wirklich das Problem für mich zu lösen. Gedanken? Sollte ich einen Stringvergleich durchführen, um die https-Ness zu bestimmen?
Ich bin sicher, der Grund dafür ist, wenn eine Anfrage den Server (https oder http) erreicht, kommt es über Port 80 und es wird nicht als ssl erkannt, so dass $ _SERVER ['HTTPS'] nicht definiert ist. Ich könnte eine benutzerdefinierte ssl zwischen dem Server und Cloudflare einrichten, wäre aber schöner (weniger Aufwand), wenn ich nur einige regexp verwenden und die URL irgendwie vergleichen könnte.
Ich möchte auch mögliche Probleme und Schwachstellen kennen.
Thanks :)
Ich vermute, das funktioniert für Full SSL, aber nicht für Flexible SSL. Meine Antwort kann beide behandeln, aber wenn Sie nur Full SSL verwenden, ist es in Ordnung, diese Antwort zu übernehmen. – Mygod
$ _SERVER ['HTTP_X_FORWARDED_PROTO'] arbeitet für mich – code2be