index.php
Código:
control.php<html> <head> <title>Autentificación PHP</title> </head> <body> <h1>Autentificación PHP</h1> <form action="control.php" method="POST"> <table align="center" width="225" cellspacing="2" cellpadding="2" border="0"> <tr> <td colspan="2" align="center" <?if ($_GET["errorusuario"]=="si"){?> bgcolor=red><span style="color:ffffff"><b>Datos incorrectos</b></span> <?}else{?> bgcolor=#cccccc>Introduce tu clave de acceso <?}?></td> </tr> <tr> <td align="right">USER:</td> <td><input type="Text" name="usuario" size="8" maxlength="50"></td> </tr> <tr> <td align="right">PASSWD:</td> <td><input type="password" name="contraseña" size="8" maxlength="50"></td> </tr> <tr> <td colspan="2" align="center"><input type="Submit" value="ENTRAR"></td> </tr> </table> </form> </body> </html>
Código:
seguridad.php<? //vemos si el usuario y contraseña es váildo if ($_POST["usuario"]=="miguel" && $_POST["contraseña"]=="qwerty"){ //usuario y contraseña válidos //defino una sesion y guardo datos session_start(); $_SESSION["autentificado"]= "SI"; header ("Location: aplicacion.php"); }else { //si no existe le mando otra vez a la portada header("Location: index.php?errorusuario=si"); } ?>
Código:
aplicacion.php<? //Inicio la sesión session_start(); //COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO if ($_SESSION["autentificado"] != "SI") { //si no existe, envio a la página de autentificacion header("Location: index.php"); //ademas salgo de este script exit(); } ?>
Código:
Todo el codigo anterior funciona a la perfección el unico detalle es que yo tengo un registro de usuarios, y para ello tube que modificar el archivo control.php y quedo asi:<?include ("seguridad.php");?> <html> <head> <title>Aplicación segura</title> </head> <body> <h1>Si estás aquí es que te has autentificado</h1> <br> ---- <br> Aplicación segura <br> ---- <br> <br> <a href="salir.php">Salir</a> </body> </html>
control.php
Código:
Este codigo hace la comprobación, si los datos no son correctos lo manda al index.php para iniciar sesion, si los datos son correctos lo manda a aplicacion.php, el unico problema es que los usuarios pueden entrar desde el navegador a aplicacion.php, y es ese el error que aun no logro solucionar no se que estoy haciendo espero puedan ayudarme. De antemano gracias <?php session_start(); mysql_connect("localhost","miusuario","micontraseña"); mysql_select_db("mibase") or die('No se puede seleccionar la base de datos'); if ($_POST['usuario']) { $contraseña=$_POST['contraseña']; if ($contraseña==NULL) { echo "La contraseña no fue enviada"; }else{ $query = mysql_query("SELECT usuario,contraseña FROM usuarios WHERE usuario = '$usuario'") or die(mysql_error()); $data = mysql_fetch_array($query); if($data['contraseña'] != $contraseña) { header("Location: index.php?errorusuario=si"); }else{ $_SESSION["autentificado"]= "SI"; header ("Location: aplicacion.php"); } } } ?>