Foros del Web » Programando para Internet » PHP »

duda con consultas y sesiones

Estas en el tema de duda con consultas y sesiones en el foro de PHP en Foros del Web. hola, ya he hecho esta pregunta antes pero ahora está mas completa. Tengo el siguiente problema con mi página: En cada página, llamo a la ...
  #1 (permalink)  
Antiguo 15/06/2006, 04:24
 
Fecha de Ingreso: febrero-2006
Mensajes: 297
Antigüedad: 11 años, 9 meses
Puntos: 1
duda con consultas y sesiones

hola, ya he hecho esta pregunta antes pero ahora está mas completa.
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:
<?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();
?>
cabecera.php:

Código:
<?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';
}
?>
header.php:

Código:
<?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';
}

?>
h2.php: (menú de los identificados)

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?
  #2 (permalink)  
Antiguo 16/06/2006, 04:06
 
Fecha de Ingreso: febrero-2006
Mensajes: 297
Antigüedad: 11 años, 9 meses
Puntos: 1
Pregunta duda con consultas y sesiones

Puede existir alguna relación con las consultas y las sesiones? es decir, puede ser que cada vez que haga una consulta a una base de datos $_SESSION['USUARIO'] pierda su valor y se quede vacio? Es que estoy intentando aplicar la logica y no le veo el sentido, pero el caso es que si no hago consulta a la base de datos la sesion se mantiene bien. no lo entiendo.
  #3 (permalink)  
Antiguo 16/06/2006, 04:09
 
Fecha de Ingreso: septiembre-2005
Mensajes: 99
Antigüedad: 12 años, 3 meses
Puntos: 0
Hola,

Pues no deberia importar, yo hago muchas consultas y no pierde su valor, el valor lo pierde al destruir la variable, la sesion o cerrar el navegador. Seguro que estas haciendo mal otra cosa.
Si no pon el trozo de codigo para que lo podamos ver mejor.

Saludos
  #4 (permalink)  
Antiguo 16/06/2006, 04:19
 
Fecha de Ingreso: febrero-2006
Mensajes: 297
Antigüedad: 11 años, 9 meses
Puntos: 1
ayer escribi un mensaje con el código, pero nadie contestó, por eso he cambiado la pregunta y estoy intentado resolverlo sola pero no se ni que preguntar. Si te interesa verlo, el titulo del mensaje es se pierde la sesion con una cara triste al lado. Es algo que no entiendo, porque si quito las consultas todo va bien.
  #5 (permalink)  
Antiguo 16/06/2006, 04:52
 
Fecha de Ingreso: septiembre-2005
Mensajes: 99
Antigüedad: 12 años, 3 meses
Puntos: 0
He mirado tu codigo, no se lo que tienes en la funcion de cabecera pero por lo que veo es posible que sea porque cuando vas a hacer uso de las variables de sesion necesitas poner primero session_start(); y ponlo siempre al principio de la pagina.
Prueba a ver si es eso
  #6 (permalink)  
Antiguo 16/06/2006, 05:53
 
Fecha de Ingreso: febrero-2006
Mensajes: 297
Antigüedad: 11 años, 9 meses
Puntos: 1
Cómo que no sabes lo que tiene cabecera? A continuación lo pone. A lo mejor no utilizo los nombres adecuados para el nombre de las funciones pero incluir cabecera, incluye las tablas para el diseño de la página y header, que es dónde utilizo session start y dependiendo del tipo de usuario cargo h1 (menu para los que no se han identificado) y h2 (menu para clientes, administrador,...) Y luego en h2 miro el tipo de usuario y carga su menu correspondiente. Si hago incluir_cabecera en todas las páginas que se carguen, no me valdria el session_start del header.
(NO se si me explico pero lo que quiero es que con cada página se mire el tipo de usuario,para que no se cargue un menú equivocado. He intentado una variación de la autentificación que usan muchos de $_session['conectado']=1 solo que aprovecho para cargar los diferentes menus.)
  #7 (permalink)  
Antiguo 16/06/2006, 06:13
 
Fecha de Ingreso: septiembre-2005
Mensajes: 99
Antigüedad: 12 años, 3 meses
Puntos: 0
Perdona no lo habia visto, de todas formas yo probaria a poner el session_start(); en saludo.php
  #8 (permalink)  
Antiguo 19/06/2006, 10:40
 
Fecha de Ingreso: febrero-2006
Mensajes: 297
Antigüedad: 11 años, 9 meses
Puntos: 1
De acuerdo

Muchisimas gracias! Era eso . Lo que pensaba yo es que al incluir header que ya hacia session_start, valia para saludo tambien. NO se me habia ocurrido pensar que haría falta escribirlo otra vez.
gracias por contestar!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:50.