¿Cómo verificar si la página se llama desde ‘https’ o ‘http’ en PHP?

El propósito de este artículo es verificar si la página se llama desde ‘HTTPS’ o ‘HTTP’, podemos usar los siguientes dos enfoques.

Enfoque 1: verifique si la conexión usa SSL y si el valor de $_SERVER[‘HTTPS’] está configurado, entonces podemos decir que la conexión está protegida y se llama desde ‘HTTPS’. Si el valor está vacío, esto significa que el valor está establecido en ‘0’ o ‘desactivado’, entonces podemos decir que la conexión no es segura y la página se llama desde ‘HTTP’.

$_SERVER es una array que contiene toda la información sobre los encabezados de las requests, las rutas y las ubicaciones de los scripts. Tendrá un valor ‘no vacío’ si la solicitud se envió a través de HTTPS y vacío o ‘0’ si la solicitud se envió a través de HTTP.

Sintaxis:

if (isset($_SERVER['HTTPS']))
{
 // page is called from https
 // Connection is secured
}
else
{
 // page is called from http
 // Connection is not secured
}

Diagrama de flujo:

Diagrama de flujo 1

Ejemplo:

PHP

<?php
  // checking if $_SERVER['HTTPS'] is set or not
  // i.e. if it is set that mean value is '1' or 'on'
  // and page is called from HTTPS 
    
  if (isset($_SERVER['HTTPS'])) {
    echo "Page is called from HTTPS and connection is secured.";
  }
  else
  {
    // if $_SERVER['HTTPS'] is not set mean
    // value is '0' or 'off'
    echo "Warning : Connection is not secured,Page is called from HTTP";
  }
?>

Producción:

Warning : Connection is not secured,Page is called from HTTP

Enfoque 2: un problema con el enfoque anterior es que en algunos servidores, $_SERVER[‘HTTPS’] no está definido y esto podría generar un mensaje de error al verificar que la página se llame desde ‘HTTPS’ o desde ‘HTTP’. Entonces, para superar esto, también debemos verificar el número de puerto del servidor, si el número de puerto utilizado es 443, la conexión se realiza a través de ‘HTTPS’.

Pseudocódigo:

check if $_SERVER['HTTPS'] is set and $_SERVER['HTTPS']
is set to 'on' then Connection is Secured and through 
HTTPS request

OR 

if  $_SERVER['HTTPS'] is set and $_SERVER['SERVER_PORT'] 
is 443 ( https use 443 ) then Connection is secured 

else
    
Connection is not secured and made through HTTP request

Sintaxis:

if ((isset($_SERVER['HTTPS']) && 
        (($_SERVER['HTTPS'] == 'on'))) 
 || (isset($_SERVER['HTTPS']) && 
           $_SERVER['SERVER_PORT'] == 443))
  {
   Page is called through HTTPS 
 }
 else
  {
   Page is called through HTTPS
  }

Diagrama de flujo:

Diagrama de flujo 2

Ejemplo:

PHP

<?php
  // checking if $_SERVER['HTTPS'] is set and its value is 'on' 
  // or '1' and if server port number is 443 then we can say the 
  // connection is made through HTTPS
 if (isset($_SERVER['HTTPS']))
 {
     if ($_SERVER['HTTPS'] == 'on')
     {    
     } 
 } 
else if (isset($_SERVER['HTTPS'])) 
{
    if ($_SERVER['SERVER_PORT'] == 443)
    {
      echo "Connection is secured and page is called from HTTPS";
    }
}
  else 
  {
    // Connection is made through HTTP
    echo "Connection is not secured and page is called from HTTP";
  }
?>

Producción:

Connection is not secured and page is called from HTTP

Publicación traducida automáticamente

Artículo escrito por amnindersingh1414 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *