¿Cómo puedo saber si se accedió a una página php a través de http o https?PHP: HTTP o HTTPS?
Respuesta
$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'?'https':'http';
$protocol = isset($_SERVER["HTTPS"]) ? 'https' : 'http';
Estos deben tanto el trabajo
En la segunda versión, HTTPS debe estar en mayúsculas. – Tim
Si la solicitud se envía con HTTPS tendrá un parámetro adicional en el $_SERVER superglobal - $ _SERVER [ 'HTTPS']. Puede comprobar si se establece o no
if(isset($_SERVER['HTTPS'])) {
El problema con este enfoque es que no siempre funciona, ya que la documentación '$ _SERVER' dice:" Las entradas en este conjunto son creadas por el servidor web. No hay garantía de que cada servidor web proporcione alguno de estos ; los servidores pueden omitir algunos, o proporcionar otros que no se enumeran aquí ". – Bruno
Si el servidor está configurado correctamente, no debería ser un problema. Es mejor probar este enfoque primero y recurrir a hacks si falla –
@EranGalperin, Te estás perdiendo el punto. Un servidor configurado correctamente puede omitir las entradas $ _SERVER. Está explícitamente permitido en la documentación. – Pacerier
$_SERVER['HTTPS']
Este contendrá un valor 'no vacío' si la solicitud se envía a través de HTTPS
usted debería ser capaz de Haga esto verificando el valor de $_SERVER['HTTPS']
(solo debe establecerse cuando se usa https).
entonces, si uso HTTPS y el servidor no crea este $ _SERVER ['HTTPS'], ¿eso significa que es un HTTPS falso? – PSyLoCKe
Esto puede volverse más complicado dependiendo de dónde se encuentre PHP en su entorno, ya que su pregunta es bastante amplia. Esto puede depender de si hay un equilibrador de carga y cómo está configurado. Aquí hay algunas preguntas relacionadas:
Si su solicitud es enviada por HTTPS que tendrá una variable de servidor adicional llamado 'HTTPS'
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') { //HTTPS }
Debería usar esta respuesta cuando use ISAPI con IIS. –
- 1. Redireccionando de HTTP a HTTPS con PHP
- 2. URL sin "http | https"
- 3. http a https redirección
- 4. HTTP y HTTPS iframe
- 5. Mixto http/https sitio
- 6. Cookie a través de HTTP y HTTPS en PHP
- 7. PHP - reemplace http con https en la URL
- 8. ASP.net compruebe si la página es http o https
- 9. despegar el protocolo HTTP o HTTPS de una cadena JavaScript
- 10. Respuesta multiparte HTTP usando Perl o PHP
- 11. PHP CURL y HTTPS
- 12. IIS7: HTTP-> HTTPS Cleanly
- 13. ¿Cómo redirige HTTPS a HTTP?
- 14. nginx redirigir HTTPS a HTTP
- 15. HTTPS-> HTTP via Fiddler
- 16. HTTPS a HTTP solicitud JSONP
- 17. Detectando solicitudes HTTPS en PHP
- 18. mismo localStorage para http y https?
- 19. WCF con custombinding en http y https
- 20. Ajax usando https en una página http
- 21. http to https a través de .htaccess
- 22. Mercurial - HTTPS o SSH?
- 23. Reescritura de URL https: // http: // en IIS7
- 24. ASP.NET MVC3 redirigir desde https a http
- 25. Puede window.location cambiar de https a http
- 26. HTTP, HTTPS, SSL compartido y SEO
- 27. Redirección permanente de http a https página
- 28. PHP https publicar datos XML con cURL
- 29. ¿Es HTTPS con estado o sin estado?
- 30. ¿Cómo se quita http, https y la barra de la entrada del usuario en php
Si Sería útil saber más sobre su configuración de PHP (en qué servidor se está ejecutando, por ejemplo). – Bruno
Las respuestas a continuación que solo se refieren a la comprobación $ _SERVER ["HTTPS"] no están completas. Consulte http://stackoverflow.com/questions/1175096/how-to-find-out-if-youre-using-https-without-serverhttps para obtener una respuesta completa. – AnthonyVO