Restrinxir acceso a páxinas

De Manuais Informática - IES San Clemente.
Ir a la navegación Ir a la búsqueda


Nesta sección imos explicar como podemos restrinxir o acceso a segundo que páxinas, para que só as persoas autorizadas poidan acceder a certas partes do noso sitio web.

Atención: O acceso restrinxido a páxinas usando as variables globais $PHP_AUTH_USER, $PHP_AUTH_PW e $PHP_AUTH_TYPE só funciona se PHP foi instalado como un módulo de Apache, se foi instalado como un CGI os exemplos desta sección non funcionarán.

Para conseguir a autenticación nas páxinas usaremos o sistema de autenticación do protocolo HTTP, este sistema baséase nas variables de servidor $_SERVER['PHP_AUTH_USER'] e $_SERVER['PHP_AUTH_PW'].

1.- $_SERVER['PHP_AUTH_USER']. Nome de usuario introducido.
2.- $_SERVER['PHP_AUTH_PW']. Contrasinal introducido.

Para que o navegador nos mostre a fiestra de petición de nome de usuario e contraseña basta con enviar a seguinte cabeceira:

<?php

if (!isset($_SERVER['PHP_AUTH_USER'])) {
	header('WWW-Authenticate: Basic realm="Acceso restrinxido"');
        header('HTTP/1.0 401 Unauthorized');
        echo 'Requerida autenticación para acceder a esta páxina.';	
        exit;
}
else {
echo "<p>Introduciu como nome de usuario: {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>Introduciu como contrasinal: {$_SERVER['PHP_AUTH_PW']}</p>";
}
?>

Isto provoca que se mostre a fiestra de nome de usuario e contraseña e os datos introducidos asígnense ás variables $_SERVER['PHP_AUTH_USER'] e $_SERVER['PHP_AUTH_PW'].

A partir de aquí realizaremos as comprobacións necesarias para asegurarnos que os datos introducidos son os correctos.

No seguinte exemplo pediremos autorización e comprobaremos se o nome de usuario é marta e a contraseña abc123 se é así teremos acceso ao resto da páxina.

<?phpif (($_SERVER['PHP_AUTH_USER'] != "marta") || ($_SERVER['PHP_AUTH_PW'] != "abc123")) {
    header('WWW-Authenticate: Basic realm="Acceso restrinxido"'); 
    header('HTTP/1.0 401 Unauthorized');
    echo 'Autorizacion requerida para acceder a esta paxina.';
    exit;
}
?>
<html>
      <head>
           <title>Exemplo de PHP</title>
      </head>
      <body>
           Conseguiu o acceso a zona restrinxida</B>.
      </body>
</html>


--Veiga (discusión) 20:43 11 ene 2016 (CET)