Saludos, primero que nada esta web es muy buena, mucho contenido eh sacado de aquí, entre ellos, me tope con un error que aun no logro resolver, espero puedan ayudarme, la cosa es esta, lo que quiero hacer, es que solo usuarios registrados puedan ver cierto contenido, para ello me base en este código:
index.php
Código:
<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>
control.php
Código:
<?
//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");
}
?>
seguridad.php
Código:
<?
//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();
}
?>
aplicacion.php
Código:
<?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>
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:
control.php
Código:
<?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");
}
}
}
?>
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