Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/07/2010, 19:16
cyber_dark
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 13 años, 9 meses
Puntos: 3
Datos visibles solo para usuarios registrados

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