Foros del Web » Programando para Internet » PHP »

Comprobar si existe session_start()

Estas en el tema de Comprobar si existe session_start() en el foro de PHP en Foros del Web. Hola que tal, como puedo comprobar que ya se a inicializado la sesion con session_start(); Lo que pasa es que estoy trabajando con ajax, tengo ...
  #1 (permalink)  
Antiguo 04/06/2011, 13:44
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 9 meses
Puntos: 41
Comprobar si existe session_start()

Hola que tal, como puedo comprobar que ya se a inicializado la sesion con session_start();

Lo que pasa es que estoy trabajando con ajax, tengo un include en archivo1.php que llama a archivo2.php, archivo1.php ya tiene iniciada la sesion, y al momento de realizar una nueva peticion con ajax, la sesion ya no existe, y no puedo poner session_start() en archivo2.php por que me marca error y me dice que ya está iniciada la sesion, alguna sugerencia?
  #2 (permalink)  
Antiguo 04/06/2011, 13:54
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Comprobar si existe session_start()

ese es el problema de las sesiones automáticas, usa:

@session_start();

y se salta el warning

te recomiendo desactivar las sesiones automáticas en el server php.ini: (session.auto_start= 0)
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 06/06/2011, 11:20
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 9 meses
Puntos: 41
Respuesta: Comprobar si existe session_start()

Cita:
Iniciado por maycolalvarez Ver Mensaje
ese es el problema de las sesiones automáticas, usa:

@session_start();

y se salta el warning

te recomiendo desactivar las sesiones automáticas en el server php.ini: (session.auto_start= 0)
Gracias por responder, session.auto_start = 0 así lo tengo en el php.ini y @session_start(); o no me funciona, o algo raro pasa que me borra lo que tengo en la variable de session, lo que quiero aser es mantener un objeto (array) en una variable de session para poder estar sacando datos de ahí con ajax
  #4 (permalink)  
Antiguo 06/06/2011, 11:59
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Comprobar si existe session_start()

Quieres comprobar si existe? Entonces en archivo1.php puedes abrir la sesión y enseguida crear una con X nombre:
Código PHP:
session_start();
$_SESSION['on'] = true
Ya donde mandas la petición ajax, compruebas si dicha sesión es true, si no es así, la abres y listo

Espero te sirva
Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #5 (permalink)  
Antiguo 06/06/2011, 12:17
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Comprobar si existe session_start()

Una forma de verificar si hay algún error y si existe una sesión es algo así
Código PHP:
Ver original
  1. <?php
  2. $error = ob_get_clean();
  3.  
  4. if(!empty($error)){
  5.     echo 'Ya existe una sesión.<br />';
  6. }else{
  7.     echo 'Sesión creada.<br />';
  8. }
  9.  
  10. $error = ob_get_clean();
  11.  
  12. if(!empty($error)){
  13.     echo 'Ya existe una sesión.<br />';
  14. }else{
  15.     echo 'Sesión creada.<br />';
  16. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 06/06/2011, 14:45
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: Comprobar si existe session_start()

seguramente lo que dice abimaelrc es lo más acertado pero yo pregunto, no es suficiente con inicializarla con @ delante y ya ?
@session_start();
  #7 (permalink)  
Antiguo 06/06/2011, 15:14
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Comprobar si existe session_start()

@ solamente te evitará el warning en caso de servidores con sesiones automáticas, o las consecuentes llamadas a session_start provocadas por includes.

debe de ser una de las primeras lineas de cualquier script que trabaje con sesiones, a no ser que hagas un session_name que por ende debe de ser antes de session_start

otro problema puede ser la caché del navegador, al usar ajax es usual que la primera petición se realice con éxito por el cual el navegador la cachea, en consecuencia las demás peticiones no se efectuarán sino que el navegador devolverá la pagina cacheada, esto se corrige expirando la caché desde el servidor (con php y los headers necesarios) y luego borrar la caché del navegador esa vez actual para poder continuar con el proceso
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #8 (permalink)  
Antiguo 06/06/2011, 15:19
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Comprobar si existe session_start()

Cita:
Iniciado por Sourcegeek Ver Mensaje
Quieres comprobar si existe? Entonces en archivo1.php puedes abrir la sesión y enseguida crear una con X nombre:
Código PHP:
session_start();
$_SESSION['on'] = true
Ya donde mandas la petición ajax, compruebas si dicha sesión es true, si no es así, la abres y listo

Espero te sirva
Saludos!
yo creo que esta es la mejor opción
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #9 (permalink)  
Antiguo 06/06/2011, 16:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Comprobar si existe session_start()

Puede ser que tu explorador de internet no este enviando el valor de la cookie de sesión al servidor, por lo tanto aunque pongas session_start() no la reconoce, o piensa que es una nueva, prueba enviar la constante SID que tiene el nombre de la sesión junto con el id de sesión por tu request en AJAX para rescatar la sesión en el servidor.

Saludos.
  #10 (permalink)  
Antiguo 06/06/2011, 16:37
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 9 meses
Puntos: 41
Respuesta: Comprobar si existe session_start()

Gracias a todos por sus respuestas, realizé lo que me sugirieron, puse @session_start(); pero no me funcionó, utilize el ejemplo de abimaelrc, me aparece el mensaje de session iniciada pero aun no puedo recuperar el objeto, por ultimo, GatorV, como seria el uso de la constante SID? busqué ejemplos pero no lo veo muy claro.

Lo que antes habia echo y me habia funcionado (en mi maquina local) era enviar los objetos serializados por medio de la URL, en mi máquina si los pude obtener, todo se ve bien, pero lo pruebo en otra computadora y marca error de URL no valida, creo que es por que está muy larga la url, son bastantes cosas las que tiene el array ( y crecera mas ) es por eso que estoy buscando la manera de guardar los objetos en sesiones, gracias.
  #11 (permalink)  
Antiguo 06/06/2011, 20:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Comprobar si existe session_start()

Prueba imprimir:
<?php echo SID; ?> para que veas que valor tiene, es simplemente pasar ese parámetro en tu llamada AJAX.
  #12 (permalink)  
Antiguo 06/06/2011, 22:17
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Comprobar si existe session_start()

¿que tipo de objeto intentas almacenar en sessión?: porque no puedes serializar instancias de objetos con resource, además de que la definición de dichos objetos (include o class) debe estar antes de la llamada de session_start, de lo contrario no los puede deserializar.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #13 (permalink)  
Antiguo 07/06/2011, 09:29
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 9 meses
Puntos: 41
Respuesta: Comprobar si existe session_start()

Cita:
Iniciado por maycolalvarez Ver Mensaje
¿que tipo de objeto intentas almacenar en sessión?: porque no puedes serializar instancias de objetos con resource, además de que la definición de dichos objetos (include o class) debe estar antes de la llamada de session_start, de lo contrario no los puede deserializar.
Un array

Etiquetas: ajax, sesiones
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 00:30.