Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-06-2006
javila javila is offline
Registrado
 
Registrado: jun 2006
Posts: 5
Poder: 0
javila Va por buen camino
Angry Problema con $_SESSION

Hola, tengo un pequñito problema que llevo todo el día intentando solucionarlo pero no hay forma. Os explico.

Tengo por un lado este trozo de fichero que recibe datos de un formulario, entonces en caso de que el usuario tenga uno de los roles definifos, nos cargará a la página index.php.

Código PHP:
if ($correcto) {
$sql_sesion "SELECT login, rol_user, password FROM usuario WHERE login='$usuario' AND password='$password' "
$inicio_sesion pg_query($conexion$sql_sesion);
if(
$row pg_fetch_array($inicio_sesion)){
session_start();
$_SESSION['iniciosesion'] = TRUE;
$_SESSION['login'] = $usuario;
$_SESSION['password'] = $password;
$_SESSION['rol_user'] = $row["rol_user"];
switch(
$_SESSION['rol_user']){
case 
Cliente:
$_SESSION['cabeza']="cabeza_cliente.php";
header("Location: index.php");
break;
case 
Hostelero:
$_SESSION['cabeza']="cabeza_hostelero.php";
header("Location: index.php");
break;
case 
Administrador:
$_SESSION['cabeza'] = "cabeza_admin.php";
header("Location: index.php"); 
break;

y en la primera linea del index.php incluimos este otro fichero:

Código PHP:
<? 
session_start
();
//Elige que cabeza cargar
if($_SESSION['iniciosesion']){ require_once ($_SESSION['cabeza']); echo "intento";}
else{ require_once (
'cabeza.php'); echo "no puedo";}
?>
Mi problema viene al ejecutarlo. Me aparece un error muy bonito al cargar index.php, que no se donde proviene.


Código:
Fatal error: main(): Failed opening required '' (include_path='.:/usr/share/php:/usr/share/pear') in /home/al064993/public_html/EligeCabeza.php on line 4
Muchas gracias por adelantado
Responder Con Cita
  #2  
Antiguo 06-06-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

De momento sólo se me ocurre decir que el error parece claro: no existe el archivo que se trata de incluir, esto es, no existe en la ruta que se indica. A ver por qué razón esa ruta lleva a otro sitio...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 06-06-2006
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Hola

Peor aun yo diría que en $_SESSION['cabeza'] no hay ningún contenido, si te fijas el error es
Código:
Failed opening required ''
entre las comillas debería aparecer el nombre del archivo que intenta abrir y como se ve no hay nada.

Una duda ¿en $_SESSION['rol_user'] guardas una cadena de texto? lo digo porque lo comparas con, en teoría, constantes
Código:
case Cliente:
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente

Última edición por kayetano fecha: 06-06-2006 a las 09:04:46.
Responder Con Cita
  #4  
Antiguo 06-06-2006
javila javila is offline
Registrado
 
Registrado: jun 2006
Posts: 5
Poder: 0
javila Va por buen camino
Arrow

Mi duda es ahora, como lo cambio? Esque no lo tengo muy claro...
¿Poniendo las comillas?

Última edición por javila fecha: 06-06-2006 a las 09:53:10.
Responder Con Cita
  #5  
Antiguo 06-06-2006
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Hola

Prueba con esto
Código PHP:
switch($_SESSION['rol_user']){
case 
"Cliente":
$_SESSION['cabeza']="cabeza_cliente.php";
header("Location: index.php");
break;
case 
"Hostelero":
$_SESSION['cabeza']="cabeza_hostelero.php";
header("Location: index.php");
break;
case 
"Administrador":
$_SESSION['cabeza'] = "cabeza_admin.php";
header("Location: index.php"); 
break;

Si en $_SESSION['rol_user'] guardas una cadena de texto, simplemente tienes que entrecomillar los valores del "case".
Ten en cuenta las mayusculas y las minusculas.

También te aconsejo que despues de un "header('Location ...')" pongas la sentencia "exit()". (manias mias)
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #6  
Antiguo 06-06-2006
javila javila is offline
Registrado
 
Registrado: jun 2006
Posts: 5
Poder: 0
javila Va por buen camino
Vale, muchas gracias. Ahora estoy en el trabajo y no puedo comprobarlo. A medio día lo pruebo y ya os comento los resultados.

Gracias
Responder Con Cita
  #7  
Antiguo 06-06-2006
javila javila is offline
Registrado
 
Registrado: jun 2006
Posts: 5
Poder: 0
javila Va por buen camino
Talking

Bueno, el error era mucho más simple. Después de pasarme ayer todas la tarde y la noche intentando solucionar el error, ahora he descubierto que si, el fallo era que no entraba al bucle, pero no hacian falta las comillas, sino que administrador, cliente y hostelero eran en minuscula y no en mayúscula. Ahora todo funciona perfectamente.

Muchas gracias por todo
Responder Con Cita
  #8  
Antiguo 06-06-2006
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Hola

Y dices que no le pones comillas, yo te aconsejo que utilices comillas para las comparaciones entre cadenas de caracteres. Si no utilizas comillas estas comparando con una constante que no has definido pero que, segun el manual de PHP toma el como valor el propio nombre de la constante
Cita:
Si usas una constante todavia no definida, PHP asume que estás refiriéndote al nombre de la constante en si. Se lanzará un aviso si esto sucede. Usa la función defined() para comprobar la existencia de dicha constante.
Esto puede causar problemas, por ejemplo si en un momento determinado defines una constante con el mismo nombre y diferente valor o peor aun si los desarrolladores de PHP deciden cambiar el funcionamiento de las constantes.

Y lo mas peor de lo peor, estas haciendo algo que no es correcto pero que como te ha funcionado (por pura churra) pues lo dejas como está, pero seguro que no tenías ni idea de que estabas haciendo una comparación con constantes.

Te aconsejo que hagas las cosas como Dios manda, en resumen, las cadenas de texto llevan comillas.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #9  
Antiguo 06-06-2006
javila javila is offline
Registrado
 
Registrado: jun 2006
Posts: 5
Poder: 0
javila Va por buen camino
Hola de nuevo. Es que, resulta que si las uso las comillas, no me entra dentro del case. Por eso las he tenido que volver a quitar.
Responder Con Cita
  #10  
Antiguo 06-06-2006
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Hola

Pues simplemente estas tapando un error en alguna parte de tu código con otro error. Yo no puedo hacer mas que aconsejarte tu eres el que decide finalmente.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:09:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi