Autentificación

¿Cóm hago la autentificación de un usuario en una web? ¿Se pueed hacer con PHP?
1

1 Respuesta

251.100 pts. Objetivos: Trabajar como WebMaster Freelance en...
Sí, y funciona muy bien. Te cuento:
Para resolver este problema, se utiliza la función Header(). Esta función debe ser llamada antes de que se haya producido ninguna salida del fichero html que se está generando. Esta función envía una línea a la cabecera HTML que se está generando. Y con esta función es posible enviar un mensaje de "Autentificación Requerida " que forzará al usuario a completar los datos solicitados.
El funcionamiento es muy sencillo. Una vez que el usuario ha completado los datos que se le piden, se fuerza una nueva llamada al script con las variables $PHP_AUTH_USER, $PHP_AUTH_PW y $PHP_AUTH_TYPE que contendrán el nombre del usuario, el password y el tipo de autentificación.
Un ejemplo sencillo es:
<?php
if(!isset($PHP_AUTH_USER)){
Header("WWW-Authenticate: Basic realm=\$quot;mi Realm\"");
Header("HTTP/1.0 401 Unauthorized")
echo "TeXto para enviar si se utiliza el botón de Cancelar");
exit;
} else{
echo " Hola $PHP_AUTH_USER <p>";
echo " Tu contraseña es $PHP_AUTH_PW <p>";
}
?>
Hay que tener mucho cuidado con el orden en el que se envían los diferentes tipos de cabeceras. Esta cabecera de autentificación, debe ir siempre delante de la del tipo HTTP/1.0 401.
Otro ejemplo sencillo es:
<?php
function autentificacion() {
Header( "WWW-authenticate: basic realm='Sistema de autentificacion'");
Header( "HTTP/1.0 401 Unauthorized");
echo "You must enter a valid login ID and password to access this resource\n";
exit;
}
if(!isset($PHP_AUTH_USER) || ($SeenBefore == 1 && !strcmp($OldAuth, $PHP_AUTH_USER)) ) {
autentificacion();
}
else {
echo "Welcome: $PHP_AUTH_USER
";
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";
}
?>
Nota: Sólo vale para PHP como módulo de Apache.
Si no te funciona, me lo dices.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas