Foros del Web » Programando para Internet » PHP »

Problema raro con include(); y e if

Estas en el tema de Problema raro con include(); y e if en el foro de PHP en Foros del Web. Hola, tengo un script en php que me está dando problemas. Aquí les dejo el script: Código PHP: session_start (); if( $_SESSION [ 'logged' ]== ...
  #1 (permalink)  
Antiguo 31/05/2003, 16:13
Abs
 
Fecha de Ingreso: enero-2003
Mensajes: 216
Antigüedad: 14 años, 10 meses
Puntos: 0
Problema raro con include(); y e if

Hola, tengo un script en php que me está dando problemas. Aquí les dejo el script:

Código PHP:

session_start
();

if(
$_SESSION['logged']=="y"){
include(
"pagina_restringida.php");


}

else{
include(
"error_log.php");


Este script verifica que si la variable sesion logged=y es que el usuario está logeado y le incluye la página para usuarios, si no, muestra la del error. El problema es que en cualquier caso, sea y o sea lo que sea, siempre me incluye las dos. Lo mismo pasa con un echo, sea cual sea el caso, me muestra los dos...
¿alguien sabe lo que pasa?

Saludos
  #2 (permalink)  
Antiguo 31/05/2003, 20:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Los dos?

Código PHP:
if ($_SESSION['logged']=="y") {
   include(
"pagina_restringida.php");
} else {
   include(
"error_log.php");

Así debería ir .. (una u otra o siempre el mismo include en caso de que falle el condicional (de que no se pueda leer la variable de sesión) .. pero NUNCA los dos ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 01/06/2003, 08:20
Abs
 
Fecha de Ingreso: enero-2003
Mensajes: 216
Antigüedad: 14 años, 10 meses
Puntos: 0
Cita:
Los dos?


PHP:--------------------------------------------------------------------------------
if ($_SESSION['logged']=="y") {
include("pagina_restringida.php");
} else {
include("error_log.php");
}

--------------------------------------------------------------------------------


Así debería ir .. (una u otra o siempre el mismo include en caso de que falle el condicional (de que no se pueda leer la variable de sesión) .. pero NUNCA los dos ...

Un saludo,
¿Cómo? no te entiendo cluster, ¿puedes especificar mas???? Por cierto sigue sin funcionar como tu dices... me sigue incluyendo las dos páginas sea cual sea el resultado del condicional: pagina_restringida.php y error_log.php. No lo entiendo, nunca me ha pasado esto. ¿¿Alguien sabe que pasa??

Saludos
  #4 (permalink)  
Antiguo 01/06/2003, 12:40
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Tu codigo es correcto, y lo que Cluster dice es que mientras tu (IF..ELSE) este bien escrito, NUNCA deberías recibir los dos resultados.

Por que no muestras un poco mas de código?

Saludos!
__________________
Manoloweb
  #5 (permalink)  
Antiguo 01/06/2003, 12:44
Abs
 
Fecha de Ingreso: enero-2003
Mensajes: 216
Antigüedad: 14 años, 10 meses
Puntos: 0
Hola,

Bueno, al final lo he solucionado con un exit;
Gracias de todos modos por interesaros.

Saludos
  #6 (permalink)  
Antiguo 01/06/2003, 22:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126


Pues no debería ocurrir eso y menos solucionarlo con un EXIT;

Mira que yo uso constantemente estrucutras condicionales de ese típo (llamando un "include" u otro) y funciona perfecto (o uno u otro .. y sin exit...)

Sería bueno que pusieras el código completo que usas (con tus exit .. )

Un saludo,
  #7 (permalink)  
Antiguo 02/06/2003, 11:29
Abs
 
Fecha de Ingreso: enero-2003
Mensajes: 216
Antigüedad: 14 años, 10 meses
Puntos: 0
Hola,

Toma cluster, aquí tienes todo el código relacionado:

logueo.php:

Código PHP:
mysql_connect("localhost","freegamesonline","191288");
mysql_select_db("freegamesonline_es_db");
mysql_query("SELECT password FROM usuarios where usuario='$user'");
if(
$row mysql_fetch_array($query))
{
if(
$row["password"] == "$pass"){

session_start();
$_SESSION['usuariox']="$user";
$_SESSION['logged']="y";
header("Location: index.php");
exit;

}

else {

echo 
"<font face="verdana" size="1"><div align="center">
Nombre de usuario o contraseña incorrecto. <br>Por favor vuelve a introducir los datos. Si no estás registrado pulsa <a href="
http://usuarios.lycos.es/freegamesonline/nuevo_usuario.php">aqui</a><br>
<form method="post" action="user.php"Usuario : <input type="text" name="user"><br>Password: <input type="text" name="pass"><br><input type="submit" value="Entrar"></form></font></div>";
}
else 

echo "
<font face=Tahoma size=2><center><b>Usuario no existente en la base de datos</b></center>"; 

y este, el código de que me da problemas:

Código PHP:

session_start
();
if (
$_SESSION['logged']=="y") {
   include(
"pagina_restringida.php");
   } else {
   include(
"error_log.php");
   

bueno ahí lo tienes Cluster, para que le heches un vistazo. Ah! y una pregunta también sobre un problema raro... ¿porque esta línea me da el error de parse error expecting "T_string"....
en unos host funciona y en otros no.... y los tengo los dos igual configurados... ¿alguien lo sabe?

Código PHP:
"<font face="verdana" size="1"><div align="center">
Nombre de usuario o contraseña incorrecto. <br>Por favor vuelve a introducir los datos. Si no estás registrado pulsa <a href="
http://usuarios.lycos.es/freegamesonline/nuevo_usuario.php">aqui</a><br>
<form method="post" action="user.php"Usuario : <input type="text" name="user"><br>Password: <input type="text" name="pass"><br><input type="submit" value="Entrar"></form></font></div>"; 
Supuestamente, cuando pongo una etiqueta font, o b o links, me suelen salir mal... no lo entiendo, en unos servers funciona y en otros no... a otra gente le funciona el mismo código, a mi no... ¿alguien sabe por qué?

Saludos
  #8 (permalink)  
Antiguo 02/06/2003, 14:56
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Código PHP:


"<font face="verdana" size="1"><div align="center">

Nombre de usuario o contraseña incorrecto. <br>Por favor vuelve a introducir los datos. Si no estás registrado pulsa <a href="
http://usuarios.lycos.es/freegamesonline/nuevo_usuario.php">aqui</a><br>

<form method="post" action="user.php"Usuario : <input type="text" name="user"><br>Password: <input type="text" name="pass"><br><input type="submit" value="Entrar"></form></font></div>"; 
Esa linea esta mal porque dentro de una cadena limitada por " no puedes poner " a no ser que las escapes con \. Asi tendria que ser:
Código PHP:


"<font face=\"verdana\" size=\"1\"><div align=\"center\">

Nombre de usuario o contraseña incorrecto. <br>Por favor vuelve a introducir los datos. Si no estás registrado pulsa <a href=\"http://usuarios.lycos.es/freegamesonline/nuevo_usuario.php\">aqui</a><br>

<form method=\"post\" action=\"user.php\"> Usuario : <input type=\"text\" name=\"user\"><br>Password: <input type=\"text\" name=\"pass\"><br><input type=\"submit\" value=\"Entrar\"></form></font></div>"

Fijate lo distinto que se ve con el resalto de sintaxis (espero no haberme olvidado ninguno). La unica razon por la que puede funcionar es porque PHP asuma que quieres concatenar.

Y sobre tu problema con los includes, ¿ podrias poner que ficheros incluyes en cada uno de los ficheros? No vaya a ser que estes incluyendo recursivamente un fichero y en un momento te muestre una cosa y en otro otra.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 02/06/2003, 16:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues eso que comenta josemi .. tal vez el problema seá del código que usas en tus include .. Pero no tiene mucha lógica que el "IF" (condicional) no "funcione" y dé una u otra alternativa (o bien una siempre si fuera el caso que no se puede leer el valor de esa variable de sessión ...)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 03/06/2003, 17:00
Abs
 
Fecha de Ingreso: enero-2003
Mensajes: 216
Antigüedad: 14 años, 10 meses
Puntos: 0
gracias josemi,

pues los includes que utilizo en ese script son simples páginas html....

No tiene porque pasar eso que me pasaba...

Saludos
  #11 (permalink)  
Antiguo 04/06/2003, 09:18
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

¿Y cual era el flujo de las paginas que originaban el conflito? Porque por lo que he visto tienes:

logeo.php: donde tienes el formulario de meter el usuario, que llama a user.php

user.php: que no he visto el codigo, pero supongo que sera el que busca el usuario en la BD y crea la sesion (aunque tambien la creas en una opcion de logeo.php)

xxx.php: la pagina donde tienes el codigo que te da el problema, que incluye la pagina restringida o la pagina de error.

Por cierto, cuando dices que incluye los dos, ¿cual incluye primero? Para saber cual se ejecuta antes. ¿Y estas seguro que en pagina restringida o en la de error no se incluye ningun codigo que pueda incluir a la otra o a este mismo codigo? Y por cierto, ¿no sera el codigo de despues del if el que genera la segunda salida?

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 10:43.