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.
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 ...