Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/05/2007, 13:14
Valentinoo
 
Fecha de Ingreso: abril-2007
Mensajes: 40
Antigüedad: 17 años, 1 mes
Puntos: 0
propagacion sesiones en php

Buenos Días,

Soy novato en PHP y tengo muchísimas dudas. Yo estoy haciendo un pequeño sitio web en el que incluyo un formulario de autentificación de usuarios. Al introducir los datos en el formulario y enviarlos, en el caso de que coinciden con los de la BD, el usuario se autentifica y le abro una sesión. El problema viene a la hora de propagar la sesión para poder comprobar si el usuario esta autentificado o no.

La estructura es:

Tengo 2 paginas: login.php y admin.php

Codigo pagina login.php

Cita:
<?php
session_start();
if (!isset($_session['estado'])){
if (($_POST['correo']!="") and ($_POST['clave']!="")) {
header("Cache-control:private"); // IE 6 Fix
$correo=$_POST['correo'];
$clave=$_POST['clave'];
//Envio los datos a la function comprobar par aver si coinciden con los de la BD. Si coinciden devuelve “autentificado” sino “anónimo”.
$_session['estado']=comprobar($correo,$clave);
if ($_session['estado']=="autentificado") {
$msg="Bienvenido";
}else{
$msg='Acceso Denegado<br><a href="login.php">Volver</a>';
session_unset();
session_destroy();
}
}else{
session_destroy();

}

?>

<?php
function form_login(){
echo'
<form action="login.php" method="post">
<table>
<tr>
<td><span>Login de Usuario</span><br><br></td>
</tr>
<tr>
<td>E-mail<br /><input type="text" name="correo"></td>
</tr>
<tr>
<td>Clave<br /><input type="password" name="clave"></td>
</tr>
<tr>
<td><input id="boton_login" type="submit" name="enviar" value="Login" ></td>
</tr>
<tr>
<td style="text-align:center">[ <a href="recup_pass.php" title="¿Perdiste tu contrase&ntilde;a?">¿Perdiste tu contrase&ntilde;a? </a> | <a href="registro.php" title="¿Registro de Nuevo Usuario?">¿Registro de Nuevo Usuario?</a> ] </td>
</tr>
</table>
</form>';
}

function comprobar($correo,$clave){
include("conexion.inc");

//Establecemos la conexion con el Servidor
$IDconexion=mysql_connect("$servidor","$user","$pa sswd") or die ("ERROR");

//Seleccionamos la BD
mysql_select_db("gvsoftware",$IDconexion);

//Creamos la Consulta
$comprobarUsuario="SELECT * FROM registros WHERE correo='$correo' AND clave='$clave'";

//Ejecutamos la Consulta
$busqueda=(mysql_num_rows(mysql_query($comprobarUs uario,$IDconexion)));

//Comprobamos el Resultado
If ($busqueda!=0) {
return "autentificado";
}else{
return "anonimo";
}

//Cerrar la conexion con la BD
mysql_close($IDconexion);
}

?>

<?php
if (!isset($_POST['enviar'])) {
form_login();
}else{
if ($_session['estado']=="autentificado"){
echo '<table style="text-align:center"><tr><th>'.$msg.'</th></tr></table><br>';
echo '<table style="text-align:center"><tr><td>Panel de Administraci&oacute;n</td></tr>';
echo '<tr><td><a href="admin.php?'.session_name().'='.session_id(). '"><img style="border:0" src="image/admin.png"></a></td></tr>';
echo '</table>';
}else{
echo '<table style="text-align:center"><tr><th>'.$msg.'</th></tr></table><br>';
}
}
?>
Y el codigo de la pagina admin.php es:

Cita:
<?php
session_start();
if ($_SESSION["estado"]!="autentificado"){
header("Location: login.php");
}
?>
El problema es que al parecer el valor de $_SESSION['estado'] se pierde. ¿Por que? ¿Son correctos mis scripts?

Un saludo,

Valentin