Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/12/2011, 22:13
Avatar de NnikoO
NnikoO
 
Fecha de Ingreso: agosto-2008
Ubicación: Rosario
Mensajes: 245
Antigüedad: 15 años, 8 meses
Puntos: 0
Pregunta Problema con sesiones, Alluda!

Hola gente, espero que anden todos bien! Estoy teniendo un inconveniente con unas sesiones. A la hora de iniciar sesión, que el usuario quede logueado mientras recorre las paginas, y que por decisión propia realice un logout para cerrarla, todo anda de maravillas. El error esta cuando muestro el nombre del usuario logueado, paso a explicar mas detalladamente:

En cada página, tengo un código que comprueba si hay una sesión iniciada, de ser así, arriba a la izquierda se muestra el nombre del usuario, con la opción de salir. Esto se mantiene poco tiempo, luego de recorrer 2 o 3 secciones, el nombre del usuario se reemplaza por la palabra root, como si se perdiera la variable que trae el nombre del usuario logueado. Me gustaria una solucion para eso, que hace rato que vengo probando cosas, y nada surte efecto.
Les dejo los códigos:

Formulario de ingreso, que inicia la sesión:

Código PHP:
<?
if ($_SESSION["validar"] == "autorizado"
{
    
$msjsesion "<span class=valid>Sesi&oacute;n iniciada.</span>";
}
else
{
    if (isset(
$_POST['ingresar']))
      {
        
$user $_POST["user"];
    
        include(
"admin/config.php");
        
        
$link mysql_connect($servidor$usuario$pass);        
            
        
$bd mysql_select_db($basedato$link);
        
        
$sql "SELECT * FROM clientes WHERE mail='" $_POST['user'] . "' 
                        AND pass='" 
$_POST['pass'] . "'"
        
        
$resultado mysql_query($sql$link);
        
      if(
mysql_num_rows($resultado)!=0)
       {
         
session_start();
         
$_SESSION["validar"]= "autorizado";
         
$_SESSION["usuario"] = $user;
         
header ("Location: index.php");
       }
        else 
       {
        
$msjingresar "<span class=error>Los datos ingresados anteriormente son incorrectos.</span>";
        }     
    
       
mysql_free_result($resultado);
       
mysql_close($link);
     }
}
?> 

<div id="identificar">
    <? if(!isset($msjsesion)){ ?> <? echo $msjingresar?>
    <form action="" method="post" name="login">
        <table width="250" border="0" cellpadding="5" style="margin:5px 0 0 0;">
        <tr><td colspan="2"><h1>Identificarme:</h1></td></tr>
            <tr>
                <td><label for="usuario">E-Mail:</label></td> 
                <td><input name="user" type="text" style="width:150px;" value="<? $_POST["user"]; ?>" /></td>
            </tr>
            <tr>
                <td><label for="pass">Contraseña:</label></td>
                <td><input name="pass" type="password" style="width:150px;" value="<? $_POST["pass"]; ?>" /></td>
            </tr>
            <tr>
                <td><input name="ingresar" type="submit" value="Ingresar" /></td>
                <td align="right"><p><a href="registro.php" title="Registrarse">Nueva Cuenta</a></p></td>
            </tr>
        </table>
    </form>
    <? }else
            {        
                echo 
$msjsesion
            } 
    
?>
</div>
Y el código que hay en cada página, que comprueba si hay una sesión iniciada, y muestra el nombre del usuario logueado:
Código PHP:
session_start();
$_SESSION["autorizado"];

if (
$_SESSION["validar"] != "autorizado") {
    
    
$msj "";
}    
else
{
    
$msj "<span class='mail' align='center'>Usuario: " $_SESSION["usuario"] . "</span><br><a href='salir.php' class='enlace_c'>Salir</a>";


Creo que no es algo muy complicado, pero que por ahora pasa la barrera de mis conocimientos lamentablemente, jajajaja. Espero que puedan ayudarme. Muchas gracias de antemano.
Abrazo.


<< niko >>