Foros del Web » Programando para Internet » PHP »

las variables de sesion no se conservan

Estas en el tema de las variables de sesion no se conservan en el foro de PHP en Foros del Web. Hola, pues creo que el problema ya esta en muchos foros pero he hecho todo lo posible por solucionar mi problema, leyendo en todas partes ...
  #1 (permalink)  
Antiguo 05/09/2011, 23:32
 
Fecha de Ingreso: mayo-2011
Mensajes: 105
Antigüedad: 12 años, 11 meses
Puntos: 3
Pregunta las variables de sesion no se conservan

Hola, pues creo que el problema ya esta en muchos foros pero he hecho todo lo posible por solucionar mi problema, leyendo en todas partes etc...

Mi problema es que no todos los archivos de mi sitio pueden acceder a las variables de sesion, al navegar entre las paginas se pierden.

No es problema del path donde se guardan las sesiones y no es problema de la inicializacion de la sesion en cada pagina, puesto que en el mismo pc tengo otro sitio el cual tambien maneja las variables de sesion y funciona correctamente!!!

No se que estoy pasando por alto, ayuda!!!

este es el codigo que inicia la sesion una vez validada:

Código PHP:
public function iniciarsesion($alias,$conn){
if (
$alias == 'ninguno'){
echo 
"<script>alert('No se ha podido iniciar sesion');</script>";
echo 
"<script>document.location.href = 'index.php';</script>";
}                
else{
session_start();
$_SESSION['usuario'] = $alias;
$_SESSION['autenticado'] = "ok";
echo 
"<script>document.location.href = 'index.php';</script>";
}

este codigo es el que pongo al principio de cada archivo:

Código PHP:
<? 
session_start
(); ob_start();
?>
este es el codigo que destruye la sesion:


Código PHP:
$_SESSION = array();

$session_name session_name();

unset(
$_SESSION['usuario']);
unset(
$_SESSION['autenticado']);

session_destroy();

if(isset(
$_COOKIE[$session_name])){

if(
setcookie(session_name(),'',time()-3600,'/')){
    
    
header("Location:index.php");
    exit();

Que estoy pasando por alto?
  #2 (permalink)  
Antiguo 05/09/2011, 23:48
 
Fecha de Ingreso: mayo-2011
Mensajes: 105
Antigüedad: 12 años, 11 meses
Puntos: 3
Respuesta: las variables de sesion no se conservan

Anexo estos datos del navegador chrome acerca de la cookie almacenada:

Nombre: PHPSESSID
Contenido: 0ibg1ldli9aciktgfjg7ufh2r0
Dominio: localhost
Ruta: /
Enviar para: Cualquier tipo de conexión
Accesible para secuencia de comandos: Sí
Creado: martes 6 de septiembre de 2011 00:43:58
Caduca: Al cerrar el navegador
  #3 (permalink)  
Antiguo 06/09/2011, 02:26
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: las variables de sesion no se conservan

Te da algún error o algún warning? Te pregunto porque el problema lo tienes tener por hacer dos veces session_start().

Por otro lado, ten en cuenta que el javascript se puede desactivar desde los navegadores y eso te dará problemas. Si un usuario desactiva su JS en su navegador y luego accede a tu sitio web se saltará el control de usuarios, ya que ni le saldrán las ventanas de indicación de que no ha iniciado sesión ni le hará la redirección. Te recomiendo que redirecciones desde PHP, no desde JS.

un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #4 (permalink)  
Antiguo 06/09/2011, 10:33
 
Fecha de Ingreso: mayo-2011
Mensajes: 105
Antigüedad: 12 años, 11 meses
Puntos: 3
Respuesta: las variables de sesion no se conservan

Pues me daba un error de caché pero dices que es por tener 2 veces session_start(), entonces como debo optimizar mi codigo para que esto no ocurra? ademas, lo del redireccionamiento con js no tengo inconveniente, porque lo puedo hacer con PHP como me estas sugiriendo,laincognita es: ¿Dónde estan las variables de session?
  #5 (permalink)  
Antiguo 06/09/2011, 11:06
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: las variables de sesion no se conservan

Lo primero que hay que hacer para manejar sesiones es colocar como primer linea de código después del <?php
es el session_start()
no puedes ponerlo dentro de una función, o mejor dicho no tendrá efecto.
La sesión la debes iniciar siempre, y en la primer linea.
Las validaciones las debes hacer sobre las variables de sesión, no sobre la sesión en sí.
  #6 (permalink)  
Antiguo 06/09/2011, 13:13
 
Fecha de Ingreso: mayo-2011
Mensajes: 105
Antigüedad: 12 años, 11 meses
Puntos: 3
Respuesta: las variables de sesion no se conservan

No consigo solucionarlo aun. Ya rectifique que en cada archivo al principio del codigo ponga las lineas <?php session_start(); ob_start()?> si quito session_start() de mi funcion de inicio de sesion obviamente la sesion nunca se inicia.... en el index.php se reconoce la sesion pero al navegar a otro archivo se pierden... a pesar de que en ese archivo esta <?php session_start(); ob_start()?> al comienzo. Me estoy volviendo locoooo, como dije lo peor es que tengo otro proyecto en el mismo pc y este si funciona....
  #7 (permalink)  
Antiguo 06/09/2011, 13:28
 
Fecha de Ingreso: septiembre-2011
Ubicación: Montevideo, Uruguay
Mensajes: 14
Antigüedad: 12 años, 7 meses
Puntos: 4
Respuesta: las variables de sesion no se conservan

Por un lado, indefectiblemente hay que poner el <?php session_start() ?> en cada uno de los arhivos del sitio.

Por otro lado, de ignorancia pregunto...:

Código PHP:
Ver original
  1. public function iniciarsesion($alias,$conn){
  2. if ($alias == 'ninguno'){
  3. echo "<script>alert('No se ha podido iniciar sesion');</script>";
  4. echo "<script>document.location.href = 'index.php';</script>";
  5. }                
  6. else{
  7. $_SESSION['usuario'] = $alias;
  8. $_SESSION['autenticado'] = "ok";
  9. echo "<script>document.location.href = 'index.php';</script>";
  10. }
  11. }

Supongo que tenemos que omitir que la variable $alias (línea 2) ya fue inicializada, verdad?

Última edición por TinchoUY; 06/09/2011 a las 13:29 Razón: Highlight mostró línea y edito
  #8 (permalink)  
Antiguo 06/09/2011, 14:05
 
Fecha de Ingreso: mayo-2011
Mensajes: 105
Antigüedad: 12 años, 11 meses
Puntos: 3
Respuesta: las variables de sesion no se conservan

Efectivamente la variable alias ya se ha inicializado con esta funcion de validacion:

Código PHP:
Ver original
  1. public function validasesion($idusuario, $contrasena, $conn){
  2. $sqlconsulta = "select idusuario, login, password, idestado from usuario where idusuario = '".$idusuario."' or login = '".$idusuario."' and
  3. password = '".$contrasena."'";
  4. $ejec = mysql_query($sqlconsulta,$conn);
  5. $registros = mysql_num_rows($ejec);
  6. $fila = mysql_fetch_row($ejec);
  7. $alias = "";
  8. if ($registros <= 0){
  9.     echo "<script>alert('El usuario introducido no existe o no es valido.');</script>";
  10.     $alias = "ninguno";
  11.     return $alias;
  12. }
  13. else{
  14. if ($fila['0'] != $idusuario){
  15. echo $fila['0']." ".$fila['1']." ".$idusuario." ".$registros."<script>alert('El login introducido no es valido.');</script>";
  16. $alias = "ninguno";
  17. return $alias;
  18. }
  19. else{
  20. if($fila['2'] != $contrasena){
  21. echo "<script>alert('La clave introducida no es valida.');</script>";
  22. $alias = "ninguno";
  23. return $alias;
  24. }
  25. else{
  26. if ($fila['3'] != 1){
  27. echo "<script>alert('El usuario que esta intentando ingresar no esta habilitado.');</script>";
  28. $alias = "ninguno";
  29. return $alias;
  30. }
  31. }
  32. }
  33. }
  34.  
  35. if ($registros == 1){
  36. $alias = $fila['0'];
  37. return $alias; 
  38. }
  39. }


el anterior metodo valida el usuario y la contraseña introducidos, luego si es verdadero retorna el alias....

Ese alias retornado entra como parametro en la funcion Iniciar Sesion:

Código PHP:
Ver original
  1. $alias = $_POST['login'];
  2. $contrasena = $_POST['password'];
  3.  
  4.  
  5. include ('claseconexion.php');
  6. include ('claseusuario.php');
  7. $us = new usuario();
  8. $conectar = new conectarse();
  9. $conn = $conectar->get_conexion();
  10. $cerrar = $conectar->close_conexion();
  11.  
  12. $nick = $us->validasesion($alias,$contrasena,$conn);
  13. $us->iniciarsesion($nick,$conn);
  14.  
  15. $cerrar;

Vuelvo y repito, el problema es que la sesion no hace puente entre dos paginas.... en el index.php si se inicia la sesion, pero en los demas archivos se pierde...
  #9 (permalink)  
Antiguo 06/09/2011, 14:44
 
Fecha de Ingreso: mayo-2011
Mensajes: 105
Antigüedad: 12 años, 11 meses
Puntos: 3
Respuesta: las variables de sesion no se conservan

Hice una pequeñaprueba con otra pagina que no tuviera tanta estructura, y la sesion SI SE CONSERVA!!!

Ahora la pregunta es: ¿Que podría tener una pagina que hiciera que las sesiones no se reconocieran?
  #10 (permalink)  
Antiguo 06/09/2011, 15:00
 
Fecha de Ingreso: mayo-2011
Mensajes: 105
Antigüedad: 12 años, 11 meses
Puntos: 3
Respuesta: las variables de sesion no se conservan

SOLUCIONADO!!!
Algunas correcciones de salidas html, ruta de sesiones en php.ini...

Etiquetas: sesiones_en_php, variables_sesion_php
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 11:20.