Tengo el siguiente problema con mi página:
En cada página, llamo a la funcion header para que mire si existe una variable de sesion o no. Si no existe, se me cargará un menú donde saldrán las opciones de identificarse y registrarse. Si existe, dependiendo del usuario se cargarán unas opciones u otras:
Saludo.php:
Código:
cabecera.php:<?php include "../funciones/diseño/cabecera.php"; $dni=$_SESSION ['dni']; $conexion= mysql_connect("localhost","root","") or die("error al conectar"); mysql_select_db("cybernanis",$conexion) or die("error al elegir base de datos"); $mensajeinfo="INFORMACION"; incluirCabecera($mensajeinfo); $consulta="select nombre from clientes where dni = '$dni'"; $usuario = mysql_query($consulta,$conexion) or die("error al iniciar usuario"); $nombre= mysql_fetch_array($usuario); $mensaje="Buenos dias "; $mensaje .= $nombre['nombre']; $mensaje .=", seleccione una de las opciones del menú.<br /> En caso de duda consulte la ayuda"; echo $mensaje; incluirPie(); ?>
Código:
header.php:<?php function incluirCabecera($mensajeinfo) { require_once 'header.php';//mira las sesiones require_once 'tabla1.php';//tables para el diseño echo "<H4>" . $mensajeinfo . "</H4>"; require_once 'tabla2.php'; } function incluirPie() { require_once 'tabla3.php'; require_once 'footer.php'; } ?>
Código:
h2.php: (menú de los identificados)<?php session_start(); /* Se crea todo el diseño de la página dependiendo del usuario*/ if (isset($_SESSION ['usuario'] )){ if(($_SESSION ['usuario'] )!=""){ include 'h2.php'; }else{ include 'h1.php'; } } else { include 'h1.php'; } ?>
Código:
<?php session_start(); /* Se crea todo el diseño de la página dependiendo del usuario*/ ?> <html> <head> <link rel="STYLESHEET"type="text/css" href="../css/estilocuerpo.css"> </head> <body link="yellow" vlink="#ffffcc" alink="#black"> <? //link para los enlaces normales //vlink para los enlaces visitados //alink para los enlaces activos ?> <table width="100%" cellspacing="0" cellpadding="0" border="0"> <tr> <table width="100%" cellspacing="2" cellpadding="2" border="0" bgcolor="white"> <tr align="left"> <td width="20%"></td> <td width="30%"><IMG height=40 alt="" src="logo.gif" width=120 border=0></td> <td width="50%"><SPAN style="font-size:28pt;"> <b>pagina web</b> </span> </td> </tr> </table> </tr> <?php /* ************************************************************** Se crea el menú según el usuario que vaya a entrar Dependiendo del usuario del que se trate se mostrará un menu u otro ************************************************************** */ if (isset($_SESSION ['usuario'] )){ //menu superior ?> <tr> <style type =text/css> .blanco{font-size:16px; color:white;} </style> <table width="100%" cellspacing="2" cellpadding="2" border="2" bordercolor="white" bgcolor="#1C85BD"> <tr align="center"> <td width="80%" bgcolor="white"></td> <td width="10%">mandar email</td> <td width="10%"><a class="blanco" href="..funciones\salir.php" title="desconectar">salir</a></td> </tr> </table> </tr> <? } ?> <tr> <table width="100%" cellspacing="4" heigh="100%" cellpadding="5" border="0"> <tr> <td WIDTH="200" valign="top"><table border="1" cellpadding="5" bgcolor="#1C85BD" width="100%" > <?php switch ($_SESSION ['usuario']) { case 'clientes': { ?> menú cliente <?php break; } case 'administrador': { ?> menú administrador <?php break; } } //final ?> </table> </td> <td WIDTH="75%"><table border="0" width="100%"> <tr> <td valign="top">
El problema es que en saludo.php (la primera pagina que sale tras identificarse) si intento mostrar el nombre del usuario, cuando accedo una vez al menú la siguiente página se me carga con el menú inicial de identificarse y registrarse en vez de con el de su propio usuario. En cambio si elimino las tres lineas que acceden a la base de datos $consulta="select nombre from clientes where dni = '$dni'";
$usuario = mysql_query($consulta,$conexion) or die("error al iniciar usuario");
$nombre= mysql_fetch_array($usuario);
Luego me va bien el menú, es decir si es el administrador, pinche en la opcion que pinche en la siguiente página se me muestra el menú del administrador.
He hecho pruebas, y la sesion sigue existiendo solo que se me queda $_SESSION[‘USUARIO’]=”” y no se porque.
Que tiene que ver la consulta con la sesion? Qué hago mal?