Autor Zpráva
xlifer
Profil
Chci použít toto řešení, ale asi nebude fungovat vždy, resp. 100% spolehlivě?
$protocol = isset($_SERVER['HTTPS']) ? "https://" : "http://";

Toto řešení by mělo být více "vychytané", ale nejsem si jistý
$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5)) == "https" ? "https" : "http";
$protocol = isset($_SERVER["HTTPS"]) ? "https://" : "http://";

Existuje vůbec nějaký "100%" způsob, jak zachytit spolehlivě protokol webu?

Pročítal jsem i nějaké zahraniční fóra, odkud pochází výše uvedené řešení, ale u všech způsobů se řeší, že to není 100%, tak jsem s toho jelen...

Poradíte prosím jak z toho ven?
Alphard
Profil
Vlastní zkušenosti nemám, v rychlosti jsem našel ještě How to find out if you're using HTTPS without $_SERVER['HTTPS'].
xlifer
Profil
Alphard:
Díky za tip, toto vlákno jsem taky prohlížel... těch způsobů je jak jsem psal opravdu hodně, ale vždy se tam objevuje tvrzení, že to nefunguje spolehlivě a vždy.
TomášK
Profil
Spolehlivě a vždy to nedokážeš, web-server může být nastavený tak, že to zatají, resp. nebudou nastavené proměnné, ze kterých jde poznat protokol. S tím na straně php nic neuděláš. Pokud je představený nějaký load-balancer, který řeší HTTPS a pak to HTTP distribuuje na další web-servery, může se snadno stát, že se informace o původním protokolu po cestě ztratí. Jsou to specifické případy, které zřejmě nemusíš řešit, ale stát se můžou a 100 % pak změní na 99.9 %.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: