gratiszona
Estas en: gratiszona >> apuntes >> php

Autentificacion HTTP con PHP

Las caracteríticas de autentificación HTTP en PHP solo estan disponibles cuando se está ejecutando como un módulo en
Apache y hasta ahora no lo estan en la versión CGI. En un script PHP como módulo de Apache, se puede usar la función
Header() para enviar un mensaje de "Autentificación requerida"al navegador cliente haciendo que muestre una ventana de
entrada emergente con nombre de usuario y contraseña. Una vez que el usuario ha rellenado el nombre y la contraseña, la
URL que contiene el script PHP vuelve a ser llamada con las variables $PHP_AUTH_USER, $PHP_AUTH_PW y
$PHP_AUTH_TYPE rellenas con el nombre de usuario, la contraseña y el tipo de autentificación respectivamente. Sólo
autentificación "Básica"esta soportada en este momento. Consulte la función Header() para más información.
Un fragmento de script de ejmplo que fuerce la autentificación del cliente en una página sería como el siguiente:

Ejemplo de autentificación HTTP

<?php
if(!isset($PHP_AUTH_USER)) {
Header("WWW-Autentificación: Basic realm=\"Mi Reino\"");
Header("HTTP/1.0 401 No autorizado");
echo "Texto a enviar si pulsa el botón Cancelar\n";
exit;
} else {
echo "Hola $PHP_AUTH_USER.<P>";
echo "Ha introducido $PHP_AUTH_PW como su contraseña.<P>";
}
?>

En vez de, sencillamente, mostrar $PHP_AUTH_USER y $PHP_AUTH_PW, seguramente quiera comprobar la validez del
nombre de usuario y la contraseña. Tal vez enviando una consulta a una base de datos o buscando el usuario en un fichero
dbm.
Vigile aquí los navegadores Interner Explorer con bugs. Parecen muy quisquillosos con el orden de las cabeceras. Enviar la
cabecera WWW-Autentificación antes que la cabecera HTTP/1.0 401 parece ser el truco por ahora.
Para prevenir que alguien escriba un script que revele la contraseña de una página que ha sido autentificada a través de
algún mecanismo externo tradicional, las variables PHP_AUTH no serán rellenadas si algún tipo de autentificación externo
ha sido activado para una página en particular. En este caso, la variable $REMOTE_USER puede ser usada para identificar
al usuario autentificado externamente.
Nota, a pesar de todo, lo ya dicho no proteje de que alguien que controle una URL no autentificada robe contraseñas de
URLs autentificadas en el mismo servidor.
Tanto Netscape como Internet Explorer borrarán la caché de la ventana de autentificación en el navegador local después de
recibir una respuesta 401 del servidor. Esto puede usarse, de forma efectiva, para "desconectar"a un usuario, forzandole a
reintroducir su nombre y contraseña. Algunas personas usan esto para "hacer caducar"entradas, o para proveer un botón de
"desconectar".

Ejemplo de autentificación HTTP forzando una reentrada

<?php
function authenticate() {
Header( "WWW-Autentificación: reino básico=’Test Autentificación Sistema ’");
Header( "HTTP/1.0 401 No autorizado");
echo "Debe introducir un nombre de usuario y contraseña válidos para acceder a
este recurso\n";
exit;
}
if(!isset($PHP_AUTH_USER) || ($SeenBefore == 1 && !str-cmp($
OldAuth, $PHP_AUTH_USER)) ) {
authenticate();
}
else {
echo "Bienvenido: $PHP_AUTH_USER<BR>";
echo "Old: $OldAuth";
echo "<FORM ACTION=\"$PHP_SELF\" METHOD=POST>\n";
echo "<INPUT TYPE=HIDDEN NAME=\"SeenBefore\" VALUE=\"1\">\n";
echo "<INPUT TYPE=HIDDEN NAME=\"OldAuth\" VALUE=\"$PHP_AUTH_USER\">\n";
echo "<INPUT TYPE=Submit VALUE=\"Re Authenticate\">\n";
echo "</FORM>\n";
}
?>

Este comportamiento no es requerido por el estándar de autentificación básica de HTTP, por lo que nunca debe depender
de esto. Pruebas con Lynx han demostrado que Lynx no borra las credenciales de autentificación con una respuesta 401 del
servidor, por lo que pulsando atrás y después adelante abriría el recurso de nuevo (siempre que los requerimientos de
contraseña no hayan cambiado).
Además note que esto no funciona usando el servidor IIS de Microsoft y la versión CGI de PHP debido a una limitación
del IIS


Anterior:
crear gif php


Siguiente:
enviar archivos con php

 articulos relacionados
introduccion a php
sintaxis basica de php
comentarios en php
tipos de datos en php
conversion de cadenas en php
arrays en php
declaracion de tipos
variables en php
ambito de las variables
variables externas a php
constantes en php
expresiones en php
operadores aritmeticos, asignacion, incremento, decremento, logicos, cadenas
if , else, elseif en php
while y do while en php
bucle for en php
foreach en php
break y continue en php
switch en php
require en php
include en php
require_once
funciones en php
class: clases en php
manejo de errores en phph
creacion de imagenes gif
autentificacion http con php
envio de archivos
conexiones en php
conexiones persistentes en php



Actualizado: 12/06/2008

Mejor Internet Explorer o

Si has encontrado esta web de tu agrado, ¡ diselo a tus amigos ! Nos ayudas a cubrir gastos si con un simple SMS te bajas a tu movil un logo, un tono o una melodia polifonica desde:

www.gratiszona.com/moviles
www.conmovil.com


¿Quieres LIGAR? Envía un mensaje con la palabra LIGAR.592 al 5511 y comienza a ligar y hacer amigos. ¡ASI DE FACIL!. OJO: no te equivoques al escribir o no funcionara







· ·
 apuntes
   comunicaciones
   javascript
   lenguaje c
   php
 autoayuda
 bolsa
 bricolage
 chistes
 deportes
 email
 empleo
 fotografia digital
 marcas movil
 mascotas
 motor
 moviles
 mp3
 ocio
 pisos
 plantas
 programas
 recetas
 sabiasque
 salud
 thermomix
 tienda
 timos
 trucos
 trucos juegos
 virus y seguridad
 webmaster

Ir a inicio  Añadir a favoritos  recetas de cocina  moviles y juegos
Google