Php

Tengo una página de internet que llama a otra quiero hacer en php una rutina que cuando llegue a esta segunda página me pregunte por una contrase#a(Passowrd) si la misma es correcta que presente la página sino que vuelva a la página anterior. Gracias.

1 Respuesta

Respuesta
1
Te lo explico con un ejemplo totalmente operativo. Si tienes algún problema no dudes en indicármelo.
Un saludo
<?php
if(!isset($PHP_AUTH_USER) || empty($PHP_AUTH_USER) ||empty($PHP_AUTH_PW)) {
Header( "WWW-Authenticate: Basic realm=\"Atenticación, por favor teclee sus datos de acceso\"");
Header( "HTTP/1.0 401 No autorizado");
echo "Texto a enviar si pulsa el botón Cancelar\n";
}
elseif(!empty($PHP_AUTH_USER) && !empty($PHP_AUTH_PW)){
//Se consulta a una base de datos para conocer si el susario esta registrado
//o en un archivo tabulado en lineas con el nombre de cuenta y contraseña
//por ejemplo cuenta|contraseña (fíjate que se utiliza | como separador)
//si el usuario esta registradp podemo indicar $login="TRUE"
//y si no esta registrado $login="FALSE"
//como ejemplo imaginemos que no esta registrado
$login="FALSE";
if($login=="FALSE"){
//Se vuelve a pedir que introduzca la centa de acceso, fíjate en el mensaje de error
//que aparece en la ventana de solicitud
Header( "WWW-Authenticate: Basic realm=\"Error en su envio de autenticación\"");
Header( "HTTP/1.0 401 No autorizado");
//tambien se podría enviar a una pagina de error eliminando los header anteriores
//Header("Location:pagina_error.php")
}
elseif($login=="TRUE") {
//tambien se podría enviar a una pagina de exito
//Header("Location: pagina_exito.php")
echo "Hola $PHP_AUTH_USER.<P>";
echo "Ha introducido $PHP_AUTH_PW como su contraseña.<P>";
}
}
?>
¿Cómo hago el archivo que tenga los users y las contrase#as? Perdona y gracias.
Imagninemos que tienes un formulario de suscripción, el proceso sería el siguiente:
1 Rellenar por el usuario el formulario
2 Confirmar que no existe ninguna cuenta con los datos suministrados, en el caso de que existar producir mensaje de error
3 Incluir en el archivo los datos del formulario
El código seria:
<?
//primeramente confirmamos que no se ha rellenado el formulario y que los
//campos del formulario se han rellenado los dos
if(!$confirmacion || empty($cuenta) || empty($contrasena)){
//tambien podriamos obligar que los campos tuvieran un mínimo de caracteres
//y un máximo, pero no considero que tenga dificultad ese tema
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="<? echo $PHP_SELF;?>">
<table width="50%" cellspacing="1" bgcolor="#666666" align="center">
<tr>
<td>
<table width="100%" cellspacing="0" bgcolor="#cccccc">
<tr bgcolor="#666666" align="center">
<td colspan="2"><b><font color="#FFFFFF">LOGIN</font></b></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<? if($error_datos){?>
<tr align="center" valign="top">
<td colspan="2"><font color="#FF0000" size="2">La cuenta existe</font></td>
</tr>
<?}?>
<tr>
<td align="right"><b><font color="#666666">Cuenta:</font></b></td>
<td>
<input type="text" name="cuenta">
</td>
</tr>
<tr>
<td align="right"><b><font color="#666666">Contraseña:</font></b></td>
<td>
<input type="password" name="contrasena">
</td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" name="Submit" value="Enviar">
<input type="hidden" name="confirmacion" value="1">
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
<? }
else{
//Si se ha enviado el formulario correctamente
//confirmamos que no hay ninguna cuenta con los datos suministrados
//abrimos el archivo con las cuentas, que se creara si no existe cuentas.txt
$desc=fopen("cuentas.txt", "a+");
$error=0;
while(!feof($desc)){
$linea=fgets($desc, 256);
//comprobamos que no exista ninguna cuenta igual a los datos enviados
$dato=split("\|",$linea);
if($cuenta==$dato[0]){$error=1;}
}
fclose($desc);
if(!$error){
//como $error=0 no existe una cuenta igual
//la incluimos en el archivo cuentas.txt
$desc=fopen("cuentas.txt", "a+");
$dato=$cuenta."|".$contrasena."\n";
fputs($desc, $dato);
fclose($desc);
//en este punto podemo mandar al usuario a una pagina de exito
//header("Location:pagina_exito.php");
echo "Se ha creado su cuenta";
}
else{
//aqui como $error=1, es decir, la cuenta existe
//volvemos al formulario e imprimos un error
header("Location:$PHP_SELF?error_datos=1");
}
}
?>
</body>
</html>
Ya que tenemos creado el archivo de cuentas pasamos a la autenticación del usuario:
...}
elseif(!empty($PHP_AUTH_USER) && !empty($PHP_AUTH_PW)){
$desc=fopen("cuentas.txt", "a+");
while(!feof($desc)){
$linea=fgets($desc, 256);
$dato=split("\|",$linea);
if($PHP_AUTH_USER==$dato[0]&&$PHP_AUTH_PW==$dato[1]){$login="TRUE";}
else{$login="FALSE";}
}
fclose($desc);
if($login=="FALSE"){
//Se vuelve a pedir que introduzca la centa de acceso, fijate en el mensaje de error
//que aparece ...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas