Jak sprawdzić, czy strona php była dostępna przez http lub https?PHP: HTTP lub HTTPS?
Odpowiedz
$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'?'https':'http';
$protocol = isset($_SERVER["HTTPS"]) ? 'https' : 'http';
te powinny zarówno praca
W drugiej wersji protokół HTTPS musi być pisany wielkimi literami. – Tim
Jeżeli wniosek został wysłany z HTTPS trzeba będzie dodatkowy parametr w $_SERVER superglobalną - $ _SERVER [ 'HTTPS']. Można sprawdzić, czy jest ona ustawiona czy nie
if(isset($_SERVER['HTTPS'])) {
Problem z tym podejściem polega na tym, że nie zawsze działa, ponieważ dokumentacja "$ _SERVER" mówi: "Wpisy w tej tablicy są tworzone przez serwer sieciowy. Nie ma gwarancji, że każdy serwer WWW dostarczy dowolne z tych ; serwery mogą pomijać niektóre lub dostarczać inne niewymienione tutaj. " – Bruno
Jeśli serwer jest poprawnie skonfigurowany, nie powinien stanowić problemu. Lepiej najpierw wypróbować to podejście i zastosować ataki hakerskie, jeśli się nie powiedzie. –
@EranGalperin, Tęskniłeś za sednem. Prawidłowo skonfigurowany serwer może pominąć wpisy $ _SERVER. Jest to wyraźnie dozwolone w dokumentacji. – Pacerier
$_SERVER['HTTPS']
To zawierają „niepusty” wartość, jeżeli wniosek został wysłany przez HTTPS
powinny mieć możliwość zrób to, sprawdzając wartość $_SERVER['HTTPS']
(powinna być ustawiona tylko przy użyciu https).
Zobacz http://php.net/manual/en/reserved.variables.server.php.
, więc jeśli używam HTTPS i serwer nie tworzy tego $ _SERVER ['HTTPS'], to znaczy, że to fałszywy HTTPS? – PSyLoCKe
Może to być bardziej skomplikowane w zależności od tego, gdzie PHP znajduje się w twoim środowisku, ponieważ twoje pytanie jest dość szerokie. Może to zależeć od tego, czy istnieje równoważnik obciążenia i jak jest on skonfigurowany. Oto kilka pokrewnych pytania:
Jeśli żądanie jest wysyłane przez HTTPS będzie mieć dodatkową zmienną serwera o nazwie 'https'
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') { //HTTPS }
Należy użyć tej odpowiedzi podczas korzystania z interfejsu ISAPI z usługami IIS. –
- 1. Dlaczego PHP "SERVER_PROTOCOL" pokazuje HTTP/1.1, nawet jeśli używasz https?
- 2. LinkedIn OAuth2.0 przekierowanie URL dla iOS bez http lub https
- 3. ASP.net sprawdź, czy strona jest http lub https
- 4. Angularfire2: "location.protocol" musi być http lub https (aplikacja Meteor)
- 5. Wykrywanie żądań HTTPS w PHP
- 6. HTTPS na żądanie HTTP JSONP
- 7. Przełączanie Wiris http na https
- 8. Jak przekierować HTTPS na HTTP?
- 9. HTTPS-> HTTP przez Fiddlera
- 10. Swift/https: NSURLSession/NSURLConnection HTTP obciążenie udało
- 11. Zezwalanie na ładowanie zasobów HTTP przez HTTPS
- 12. Odpowiedź wieloczęściowa HTTP przy użyciu języka Perl lub PHP
- 13. Https z Http w kolbie Python
- 14. Przekierowanie pojedynczej strony http do https
- 15. Siła Gradle używać HTTP zamiast HTTPS
- 16. open-uri nie rediruje http: https
- 17. Przekierowanie względne HTTP IIS do HTTPS
- 18. Aplikacja internetowa Azure przekierowania http do https
- 19. HTTP kod błędu: 302 Dzwoniąc https WebService
- 20. Zachowaj protokół HTTP/HTTPS w przekierowaniach .htaccess
- 21. Które przeglądarki obsługują "//" zamiast "http: //" i "https: //"?
- 22. Przekierowanie HTTP do HTTPS z Apache
- 23. Trwałe przekierowanie ze strony http do https
- 24. Https do http przekierowania za pomocą htaccess
- 25. DjangoCMS: wyłącz logowanie przez http, wymusza https
- 26. Express (node.js) przy użyciu HTTPS i HTTP
- 27. PHP: HTTP Basic - Wylogowanie
- 28. PHP cURL nie działa z HTTPS
- 29. Jak zabezpieczyć strony php/html/https?
- 30. Znajdź metodę HTTP w PHP
Jeśli przydałoby się dowiedzieć więcej o twojej konfiguracji PHP (na której serwerze działa, na przykład). – Bruno
Poniższe odpowiedzi, które odnoszą się tylko do sprawdzania $ _SERVER ["HTTPS"], nie są kompletne. Proszę zobaczyć http://stackoverflow.com/questions/1175096/how-to-find-out-if-youre-using-https-without-serverhttps dla pełnej odpowiedzi. – AnthonyVO