Foros del Web » Programando para Internet » PHP »

Problema con el $_SESSION

Estas en el tema de Problema con el $_SESSION en el foro de PHP en Foros del Web. Hola Estoy haciendo un portal y soy nuevo en esto del PHP asi que estoy probando codigos que encuentro en internet. Para que un usuario ...
  #1 (permalink)  
Antiguo 10/08/2004, 21:49
DracoTronick
Invitado
 
Mensajes: n/a
Puntos:
Pregunta Problema con el $_SESSION

Hola
Estoy haciendo un portal y soy nuevo en esto del PHP asi que estoy probando codigos que encuentro en internet. Para que un usuario registrado vea otra pagina que uno no registrado probe este codigo:

<?
session_start("nick");
$var = isset ($_SESSION["nick"]) ;
if ($var == FALSE) {
header("Location: http://localhost/rauphp/no_reg.php"); //Lleva a la pag de usuarios no registrados
exit(); }
if ($var == TRUE AND $var != "SI") {
header ("Location: http://localhost/rauphp/reg.php"); //Lleva a la pag de usuarios registrados

exit(); }
?>

Bueno, el problema es el siguiente...no lleva al usuario registrado a la pagina que deberia llevar. Si uno no registrado entra le muestra "no_reg.php" (esta parte funciona bien) pero cuando te registras no te lleva a "reg.php" queda en blanco, no tira ningun tipo de error ni nada de eso. Solo se queda en blanco.
Bueno, cualquier ayuda sera bien recibida.
Gracias!!
  #2 (permalink)  
Antiguo 10/08/2004, 22:20
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Demasiados errores para tan pocas líneas de código...
Creo que deberías empezar leyendo un tutorial básico de PHP... en la primera de las FAQ's tienes varios links.
Cito a Cluster:
Cita:
Iniciado por Cluster
hacer "ingenería inversa" suele ser más complicado (si no se tiene mucha idea) que empezar de cero
Saludos
  #3 (permalink)  
Antiguo 11/08/2004, 06:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues si .. la verdad que hay demasiados errores. (deberías leer cualquier manual de PHP y sobre todo revisar como estás usando las funciones que empleas ya).

Las sesiones en PHP es bastante importante que se lea sobre su teoría .. Pese que aquí he "corregido" los errores que tenías .. esto no implica que tenga que funcionar para tu caso concreto por qué estás asumiento cierta configuración de PHP sobre sesiones donde "asumes" que vas a propagar el SID en cookies y además que usarás un navegador que acepte cookies.

Código PHP:
<? 
session_start
(); 
if (!isset (
$_SESSION["nick"])){ 
header("Location: http://localhost/rauphp/no_reg.php"); //Lleva a la pag de usuarios no registrados
exit();
} else {
header ("Location: http://localhost/rauphp/reg.php"); //Lleva a la pag de usuarios registrados
exit();

?>
Por cierto .. no sé si en "reg.php" verificaras la existencia de esa variable de sesión (por ese if(isset....) .. ) por qué de nada sirver tener un "redireccionador" que se base su seguridad en sesiones si en la página que redireccionas finalmente no haces el "seguimiento" del usuario registrado (con ese mismo if() ..)

Un saludo,

PD: jpinedo .. me voy anotar esa frase que me citastes en mi agenda xDDDD.

Última edición por Cluster; 11/08/2004 a las 06:33
  #4 (permalink)  
Antiguo 11/08/2004, 08:31
DracoTronick
Invitado
 
Mensajes: n/a
Puntos:
Muchas gracias por la respuesta
Les cuento que SI estoy leyendo un manual de PHP (el de la Edit Anaya, "programacion PHP") pero en ningun lado de este manual habla sobre el $_SESSION, por eso no sabia bien que estaba haciendo...y por eso recurro a Uds grandes conocedores de PHP y porque no....."gurus" de la programacion (a ver si elogiandolos me ayudan...XDD)
Entonces, al principio de "reg.php" deberia tener un if que chequee si la sesion esta iniciada o no?.
Pero ahora se me plantea otra duda...esto no me tiraba error, sino que no hacia el segundo if (que si esta registrado lo lleve a "reg.php")
¿sera porque en reg.php no estoy haciendo ese if que dice Cluster?
  #5 (permalink)  
Antiguo 11/08/2004, 08:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero ahora se me plantea otra duda...esto no me tiraba error, sino que no hacia el segundo if (que si esta registrado lo lleve a "reg.php")

Bueno .. el problema es con ese "AND" y ese "SI" que niegas (!=) .. reamente no sé cuando cuando defines valor a $_SESSION['nick'] .. pero no creo que sea "SI" de valor (o sí?) .. será "pepito" . "fulanito" .. También debes conocer que para operadores lógicos .. el AND y su equivalenet && (el que más veras que se usa normalmente) tiene sus diferencias en cuanto al orden que se efectua la comparación .. Revisa el manual oficial de PHP:
http://www.php.net/manual/en/languag...ors.precedence

Además . .cuando usas sesiones puedes "confiar" para ese nivel de validación en la existencia de dicha variable de sesión $_SESSION['variable'] .. no es necesario ve otro valor más de dicha variable (salvo que ese script en concreto requiera que sea tal usuario por ejemplo bajo el valor de "nick").

más información (actualizada):
www.php.net/session

Un saludo,

PD: Tira a la basura ese libro de Anaya xDD .. comprate uno más actualizado. Los arrays superglobales como $_SESSION, $_POST y demás están disponibles desde hace unos años.
  #6 (permalink)  
Antiguo 11/08/2004, 08:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Y .. por supuesto en reg.php (o páginas que requieran autentificación) debes hacer una validación simple tipo:

Código PHP:
<? 
session_start
(); 
if (!isset (
$_SESSION["nick"])){ 
header("Location: http://localhost/rauphp/no_reg.php"); //Lleva a la pag de usuarios no registrados 
exit(); 
}

// resto de tu página . .Puedes usar el código anterio bajo un "include()" si quieres (para no ir pegando este código en todos tus scripts)
Un saludo,
  #7 (permalink)  
Antiguo 11/08/2004, 21:02
DracoTronick
Invitado
 
Mensajes: n/a
Puntos:
Bueno Cluster, use el codigo que corregiste y funciona de maravilla, MUCHAS GRACIAS!!!
Me podrias recomendar algun manual de PHP? (si es en español mejor)

Gracias de nuevo!!
  #8 (permalink)  
Antiguo 11/08/2004, 22:29
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
Te recomiendo totalmente: http://www.desarrolloweb.com/articul....php?manual=12

Leelo completo, no es muy largo y es bien sencillo. Tiene de todo un poco. Lo escencial para que aprendas. Un saludo!
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #9 (permalink)  
Antiguo 12/08/2004, 06:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues .. recomendar un manual .. En las FAQ's tiene mi lista de
"recomendados" .. aunque estoy por quitar el de "desarrolloweb" .. no se ha actualizado en el uso de los arrays superglobales y sobre todo el de capítulo sobre sesiones está obsoleto.

Un saludo,
  #10 (permalink)  
Antiguo 12/08/2004, 17:25
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
Hombre... pero el de desarrolloweb es bastante completo y sencillo. Para un novato esta muy bien. No lo quites, dejalo, habla con la gente de desarrollo web para que le hagan una actualización a esas secciones del manual y así pueda estar al dia.

Un saludo!
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #11 (permalink)  
Antiguo 12/08/2004, 18:45
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Claro drcyber... lo mejor es contactarlos para que actualicen. Pero mientras no lo hagan, creo que no es buena idea recomendarlo... al menos las secciones que están desactualizadas.
O en lugar de quitarlo, poner en los recomendados de las FAQ's una "descripción?" del sitio que diga que tal o cual secciones están desactualizadas... de ese modo creo que la información para los usuarios de este foro que vayan a parar a esa FAQ estará más completa.

Saludos
  #12 (permalink)  
Antiguo 12/08/2004, 20:24
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
Claro... aunque yo siempre lo recomiendo debido a lo sencillo que es. Yo aprendí PHP con ese manual. Había leido muchos otros manuales antes pero no captaba, pero con el de desarrolloweb pude tener el impulso para seguir.

Para mi es un excelente manual, y lo recomiendo porque a mi particularmente me sirvió de mucho. Un saludo!
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #13 (permalink)  
Antiguo 13/08/2004, 06:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por drcyber
Hombre... pero el de desarrolloweb es bastante completo y sencillo. Para un novato esta muy bien. No lo quites, dejalo, habla con la gente de desarrollo web para que le hagan una actualización a esas secciones del manual y así pueda estar al dia.

Un saludo!
Bueno . por mi parte en el capítulo de sesiones en su tiempo les hice mi comentario (y a otro artículo que tienen sobre autentificación de usuarios con sesiones) .. pero no pasó nada.

Por eso, siempre que Uds. recomiendan ese tutorial o mejor dicho el tema concreto de sesiones .. les hago la observación y les remito a la documentación OFICIAL de PHP al respecto donde siempre estará más actualizada (y de primera mano .. y más en ingles).

Un saludo,
  #14 (permalink)  
Antiguo 13/08/2004, 07:09
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
Claro claro, nada como PHP.net...

Un saludo Cluster.
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
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 12:36.