Cuando los usuarios diseñan y mantienen sitios, a menudo necesitan restringir el acceso a ciertos archivos o información importantes. Por lo general, podemos utilizar el mecanismo de autenticación de usuario basado en el protocolo HTTP integrado en el servidor WEB. Cuando un visitante navega por una página protegida, el navegador del cliente abrirá una ventana de diálogo solicitando al usuario que ingrese un nombre de usuario y contraseña para verificar su identidad y determinar si tiene derecho a acceder a la página. Se utilizan dos métodos para ilustrar su principio de implementación.
1. Utilice encabezados HTTP para implementar
encabezados. El encabezado es una cadena enviada por el servidor antes de transmitir información HTML al navegador mediante el protocolo HTTP. HTTP utiliza un modelo de desafío/respuesta para autenticar a los usuarios que intentan ingresar a áreas protegidas por contraseña. Específicamente, cuando un usuario realiza una solicitud al servidor WEB para acceder a un área protegida por primera vez, se inicia el proceso de desafío y el servidor devuelve un encabezado 401 especial, que indica que la identidad del usuario no ha sido verificada. Después de detectar la respuesta anterior, el navegador del cliente muestra automáticamente un cuadro de diálogo que solicita al usuario que ingrese un nombre de usuario y contraseña. Después de que el usuario completa la entrada y hace clic en Aceptar, su información de identificación se envía al servidor para su verificación. Si el nombre de usuario y contraseña ingresados por el usuario son válidos, el servidor WEB permitirá al usuario ingresar al área protegida y mantener la validez de su identidad durante todo el proceso de acceso. Por el contrario, si el nombre de usuario o la contraseña ingresados por el usuario no se pueden verificar, el navegador del cliente mostrará continuamente una ventana de entrada pidiéndole al usuario que intente ingresar la información correcta nuevamente. Todo el proceso continuará hasta que el usuario ingrese la ubicación de información correcta. También puede establecer el número máximo de intentos que el usuario puede realizar. Cuando se exceda, la solicitud de acceso del usuario se denegará automáticamente.
En el script PHP, use la función header() para enviar directamente el encabezado HTTP al navegador del cliente, de modo que la ventana de ingreso de nombre de usuario y contraseña aparezca automáticamente en el cliente para implementar nuestra función de autenticación de identidad. En PHP, la información ingresada por el usuario del cliente se guarda automáticamente en las tres variables globales $PHP_AUTH_USER, $PHP_AUTH_PW y $PHP_AUTH_TYPE después de transmitirse al servidor. Usando estas tres variables, podemos verificar la identidad del usuario en función de la información de la cuenta del usuario almacenada en el archivo de datos o la base de datos.
Sin embargo, se debe recordar a los usuarios que $PHP_AUTH_USER y $PHP_AUTH_PW solo se pueden usar en PHP instalado como módulo. y las tres variables $PHP_AUTH_TYPE. Si el usuario utiliza PHP en modo CGI, la función de verificación no se puede implementar. El método de instalación del módulo de PHP se adjunta al final de esta sección.
A continuación utilizamos la base de datos Mysql para almacenar la identidad del usuario. Necesitamos extraer el nombre de usuario y la contraseña de cada cuenta de la base de datos para compararlos con las variables $PHP_AUTH_USER y $PHP_AUTH_PW para determinar la autenticidad del usuario.
Primero, cree una base de datos en MySql para almacenar la información del usuario.
El nombre de la base de datos es XinXiKu y el nombre de la tabla es usuario. La definición de la tabla es la siguiente:
crear tabla usuario (
ID INT(4) NO NULO AUTO_INCREMENT,
nombre VARCHAR(8) NO NULO,
contraseña CHAR(8) NO NULA,
CLAVE PRINCIPAL(ID)
)
Descripción:
1. ID es un número de serie, que no es cero y se incrementa automáticamente. Es la clave principal;
2. nombre es el nombre de usuario y no puede estar vacío;
3. contraseña es la contraseña del usuario y no puede estar vacía;
El siguiente es el inicio de sesión del archivo de verificación del usuario. PHP
// Determina si el nombre de usuario está configurado.
si(!isset($PHP_AUTH_USER)) {
header("WWW-Authenticate:Basic domain="Función de autenticación"");
encabezado ("HTTP/1.0 401 no autorizado");
echo "Error de autenticación, ¡no tienes permiso para compartir recursos de red!";
salida();
}
/*Conectarse a la base de datos*/
$db=mysql_connect("localhost","root","");
//Seleccionar base de datos
mysql_select_db("XinXiKu",$db);
//Comprueba si el usuario existe
$resultado=mysql_query("SELECT * FROM usuario donde nombre='$PHP_AUTH_USER' y contraseña='$PHP_AUTH_PW'",$db);
si ($myrow = mysql_fetch_row($resultado)) {
//Las siguientes son operaciones relacionadas después de una autenticación exitosa
...
} demás {
//La autenticación no tuvo éxito, solicita al usuario que vuelva a ingresar
header("WWW-Authenticate:Basic domain="Función de autenticación"");
encabezado ("HTTP/1.0 401 no autorizado");
echo "Error de autenticación, ¡no tienes permiso para compartir recursos de red!";
salida();
}
?>
Descripción del programa:
En el programa, primero verifique si se ha configurado la variable $PHP_AUTH_USER. Si no está configurado, significa que se requiere autenticación. El script envía un encabezado de número de error HTTP 401 para indicarle al navegador del cliente que se requiere autenticación. El navegador del cliente muestra una ventana de autenticación, solicitando al usuario que ingrese el nombre de usuario y. Después de completar la entrada, la base de datos de conexión, verifique si el nombre de usuario y la contraseña son correctos. Si son correctos, permita el inicio de sesión para realizar operaciones relacionadas. Si es incorrecto, continúe solicitando al usuario que ingrese el nombre de usuario y la contraseña.
Descripción de la función:
1. isset(): se utiliza para determinar si a una variable se le ha asignado un valor. Dependiendo de si el valor de la variable existe, devuelve verdadero o falso
2. encabezado(): se utiliza para enviar encabezados HTTP específicos. Tenga en cuenta que cuando utilice la función header(), asegúrese de llamarla antes de cualquier código HTML o PHP que produzca la salida real.
3. mysql_connect(): abre la conexión del servidor MySQL.
4. mysql_db_query (): envía la cadena de consulta (consulta) a la base de datos MySQL.
5. mysql_fetch_row(): Devuelve cada campo de una sola columna.
2. Utilice la sesión para implementar la verificación del servidor.
Para las páginas que requieren autenticación, es mejor utilizar la verificación del servidor Apache. Sin embargo, la interfaz de verificación del servidor Apache no es lo suficientemente amigable. Además, PHP en modo CGI y PHP en IIS no se pueden verificar utilizando el servidor Apache. De esta manera, podemos usar la sesión para guardar la identidad del usuario entre diferentes páginas para lograr la verificación de identidad.
En el backend, también utilizamos la base de datos Mysql anterior para almacenar información del usuario.
Primero escribimos una interfaz de inicio de sesión de usuario, el nombre del archivo es login.php, el código es:
____________________________________________________________
<form action="login1.php">
Nombre de usuario:<input type="text" name="name"><br>
Contraseña :<input type="text" name="pass"><br>
<input type="submit" value="Login">
</form>
________________________________________________________
login1.php procesa el formulario enviado, el código es el siguiente:
$ db=mysql_connect ("localhost","root","");
mysql_select_db("XinXiKu",$db);
$resultado=mysql_query("SELECT * FROM usuario donde nombre='$nombre' y contraseña='$contraseña'",$db);
si ($myrow = mysql_fetch_row($resultado)) {
//Registrar usuario
inicio_sesión();
session_register("usuario");
$usuario=$mifila["usuario"];
// Verificación de identidad exitosa, realizar operaciones relacionadas
...
} demás {
echo "Error de autenticación, ¡no tienes permiso para compartir recursos de red!";
}
?>
Cabe señalar aquí que los usuarios pueden utilizar **http://nombrededominio/next.php?user=nombre de usuario** en operaciones posteriores para omitir la autenticación. Por lo tanto, las operaciones posteriores deben verificar primero si la variable está registrada: si está registrada, realice la operación correspondiente; de lo contrario, se considerará un inicio de sesión ilegal. El código relevante es el siguiente:
inicio_sesión();
si (!session_is_registered("usuario")){
echo "Error de autenticación, inicio de sesión ilegal!";
} demás {
//Inicia sesión exitosamente para realizar operaciones relacionadas
...
}
?>
Apéndice: Cómo instalar PHP en modo módulo
1. Primero descargue el archivo: mod_php4-4.0.1-pl2. [Si el suyo no es PHP4, ¡actualice lo antes posible!]
Después de descomprimir, hay tres archivos: mod_php4.dll, mod_php4.conf, readme.txt
2. Copie los archivos relacionados
mod_php4.dll al directorio de módulos del. Directorio de instalación de Apache.
Copie mod_php4.conf al directorio conf del directorio de instalación de Apache.
Copie el archivo msvcrt.dll al directorio de instalación de Apache.
3. Abra el archivo conf/srm.conf y agregue la oración
Incluir conf/mod_php4.conf.
Para hacer esto, antes, elimine todas las declaraciones de configuración sobre el modo CGI en su httpd.conf, es decir, la parte similar a la siguiente:
ScripAlias /php4/ "C:/php4/".
Aplicación AddType/x-httpd-php4 .php
Aplicación AddType/x-httpd-php4 .php3
Aplicación AddType/x-httpd-php4 .php4
Acción application/x-httpd-php4 /php4/php.exe
Si desea que PHP admita más sufijos, no hay problema. El archivo de configuración proporcionado mod_php4.conf ya admite tres sufijos: php, php3 y php4. Si desea admitir más sufijos, puede cambiar este archivo.
4.
Utilice <? phpinfo(); ?> para probar. Verá que el valor de la API del servidor es apache, no cgi, y también hay información sobre la información de los encabezados HTTP.