Quijost

Por favor ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Búsqueda Avanzada  

Noticias:

Deja tu post en el foro para hacer algun tipo de consulta

Autor Tema: duda con sesiones  (Leído 7067 veces)

0 Usuarios y 1 Visitante están viendo este tema.

dante

  • Usuario nuevo
  • *
  • Karma: +1/-0
  • Desconectado Desconectado
  • Mensajes: 21
    • Ver Perfil
duda con sesiones
« en: Septiembre 06, 2010, 01:38:10 am »

hola

Estoy realizando un sitio web y estoy en la parte de las sesiones. EL problema es el siguiente cuando se crean las variables de sesion me sale el siguiente error

Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in <b>Unknown</b> on line <b>0</b><br />

y no se como quitarlo o como corregirlo

Muchas gracias
En línea

shakaran

  • Soporte
  • Administrator
  • Usuario profesional
  • *****
  • Karma: +12/-0
  • Desconectado Desconectado
  • Sexo: Masculino
  • Mensajes: 485
  • Un buen soporte lo es todo
    • Ver Perfil
    • Shakaran
Re:duda con sesiones
« Respuesta #1 en: Septiembre 06, 2010, 01:45:39 am »

¿podrías poner el trozo de código para que podamos solucionarlo?

Sin ver código es difícil darte ayuda.

PD: Usa los bbcodes para que se resalte el coloreado de código.
En línea
Ángel Guzmán Maeso
Quijost Founder - Backend Engineer & Main support

dante

  • Usuario nuevo
  • *
  • Karma: +1/-0
  • Desconectado Desconectado
  • Mensajes: 21
    • Ver Perfil
Re:duda con sesiones
« Respuesta #2 en: Septiembre 06, 2010, 16:15:35 pm »

hola

este el codigo que tome de su pagina para solucionar el problema con la funcion session_start():
   ini_set('session_save_path', '/home/dante/tmp');
   session_name('dante');
   if(@session_start() == false){session_destroy();session_start();}

y esta es la funcion que me valida el login

function entrada_sistema($usuario, $clave){
      $sql="SELECT id_usuario, email FROM usuario WHERE email='".$usuario."' AND clave='".$clave."' AND estado_usuario='A' ";
      $resultado=mysql_query($sql);
      if(mysql_num_rows($resultado)==1){
         $datos = mysql_fetch_array($resultado);
         $ramdomico=mt_rand();
         $_SESSION[random]=$ramdomico;
         $_SESSION[id_usuario]=$datos['id_usuario'];
         $_SESSION[usuario]=$datos['email'];
         $sqlauditoria = "INSERT INTO auditoria (id_usuario, usuario, num_sesion, hora_entrada, hora_salida) VALUES ('".$datos['id_usuario']."','".$datos['email']."','".$ramdomico."','".date("Y-m-d h:i:s")."','')";
         mysql_query($sqlauditoria);
         echo 'var estado="existe"; var empresa="'.$datos['id_usuario'].'"; var pagina="./scripts/panel.php"; ';
      }else{   echo 'var estado="no_existe"; ';   }
   }

el problema es cuando trato de iniciar sesion nuevamente
En línea

shakaran

  • Soporte
  • Administrator
  • Usuario profesional
  • *****
  • Karma: +12/-0
  • Desconectado Desconectado
  • Sexo: Masculino
  • Mensajes: 485
  • Un buen soporte lo es todo
    • Ver Perfil
    • Shakaran
Re:duda con sesiones
« Respuesta #3 en: Septiembre 06, 2010, 16:25:23 pm »

Puedes crearte una carpeta llamada "lib" (de library o biblioteca en español) y guardar el siguiente trozo de código como un archivo llamado session.php:
Código: [Seleccionar]
<?php
ini_set
('session_save_path''/home/dante/tmp');
session_name('dante');
if(@
session_start() == false){session_destroy();session_start();}

En toda página donde requieras estar autentificado haces un:

Código: [Seleccionar]
<?php
require_once('lib/session.php');

Creo que tu problema viene de que no incluyes o inicias la sesión en el resto de archivos que lo requieren.
En línea
Ángel Guzmán Maeso
Quijost Founder - Backend Engineer & Main support

dante

  • Usuario nuevo
  • *
  • Karma: +1/-0
  • Desconectado Desconectado
  • Mensajes: 21
    • Ver Perfil
Re:duda con sesiones
« Respuesta #4 en: Septiembre 06, 2010, 16:30:48 pm »

Gracias por tu pronta respuesta. De hehco si tengo las cosas de esa forma

in include llamado sesion.php que tiene el codigo de la sesion.php    
Código: [Seleccionar]
ini_set('session_save_path', '/home/dante/tmp');
session_name('dante');
if(@session_start() == false){session_destroy();session_start();}

y en los archivos que necesito la sesion o donde necesito la funcion sesion_start() simplemente reemplazo el sesion_start() por el include sesion.php

pero la cosa es que eso arroja errores aveces
En línea

dante

  • Usuario nuevo
  • *
  • Karma: +1/-0
  • Desconectado Desconectado
  • Mensajes: 21
    • Ver Perfil
Re:duda con sesiones
« Respuesta #5 en: Septiembre 06, 2010, 18:20:29 pm »

al parecer en este post de php hablan del asunto: http://php.net/manual/es/session.configuration.php

yo puse en mi archivo sesion.php lo siguiente

ini_set("session.use_only_cookies", 0);
ini_set('session_save_path', '/home/dante/tmp');
session_name('dante');
if(@session_start() == false){session_destroy();session_start();}

al parecer funciona pero tengo una inquietud en los posibles problemas que se puedan presentar
« última modificación: Septiembre 06, 2010, 18:25:04 pm por dante »
En línea

shakaran

  • Soporte
  • Administrator
  • Usuario profesional
  • *****
  • Karma: +12/-0
  • Desconectado Desconectado
  • Sexo: Masculino
  • Mensajes: 485
  • Un buen soporte lo es todo
    • Ver Perfil
    • Shakaran
Re:duda con sesiones
« Respuesta #6 en: Septiembre 07, 2010, 14:41:22 pm »

Debes estar haciendo algo incorrecto en alguna parte del código.

Poner ini_set("session.use_only_cookies", 0); no esta muy recomendado, ya que las sesiones se almacenaran en el lado del cliente (y puede ser un riesgo de seguridad). Por eso esta activado por defecto a partir de PHP 5.3.0 (actualmente en Quijost usamos PHP 5.3.3 http://quijost.com/phpinfo.php).

Quizás viendo más código, se pueda ver donde esta realmente el problema, pero con lo que muestras y comentas no se puede deducir el problema.
En línea
Ángel Guzmán Maeso
Quijost Founder - Backend Engineer & Main support

dante

  • Usuario nuevo
  • *
  • Karma: +1/-0
  • Desconectado Desconectado
  • Mensajes: 21
    • Ver Perfil
Re:duda con sesiones
« Respuesta #7 en: Septiembre 07, 2010, 15:52:03 pm »

Gracias por la respuesta

Ya tengo un archivo llamado sesion.php con el codigo de las sesiones pubicado por usted y ese archivo lo incluyo en los lugares donde necesito la funcion session_start

esta es mi funcion para ejecutar la entrada al sistema

   function entrada_sistema($usuario, $clave){
      $sql="SELECT id_usuario, email FROM usuario WHERE email='".$usuario."' AND clave='".$clave."' AND estado_usuario='A' ";
      $resultado=mysql_query($sql);
      if(mysql_num_rows($resultado)==1){
         $datos = mysql_fetch_array($resultado);
         $ramdomico=mt_rand();
         $_SESSION[random]=$ramdomico;
         $_SESSION[id_usuario]=$datos['id_usuario'];
         $_SESSION[usuario]=$datos['email'];
         $sqlauditoria = "INSERT INTO auditoria (id_usuario, usuario, num_sesion, hora_entrada, hora_salida) VALUES ('".$datos['id_usuario']."','".$datos['email']."','".$ramdomico."','".date("Y-m-d h:i:s")."','')";
         mysql_query($sqlauditoria);
         echo 'var estado="existe"; var empresa="'.$datos['id_usuario'].'"; var pagina="./scripts/panel.php"; ';
      }else{   echo 'var estado="no_existe"; ';   }
   }

cuando me logueo lo hace bien y me lanza a la pagina que le indico pero cuando retrocedo y trato de loguearme nuevamente me arroja el error antes mencionado

Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in <b>Unknown</b> on line <b>0</b><br />

y pues la solucion que he encontrado es la de activar el ini_set("session.use_only_cookies", 0); y pues esta funcionando pero se que eso esta desaconsejado asi que no se como solucionarlo o que hacer
En línea

shakaran

  • Soporte
  • Administrator
  • Usuario profesional
  • *****
  • Karma: +12/-0
  • Desconectado Desconectado
  • Sexo: Masculino
  • Mensajes: 485
  • Un buen soporte lo es todo
    • Ver Perfil
    • Shakaran
Re:duda con sesiones
« Respuesta #8 en: Septiembre 09, 2010, 01:50:51 am »

Revisare tu código más detenidamente para encontrar cual es la causa del problema. Puede que me lleve un tiempo.
En línea
Ángel Guzmán Maeso
Quijost Founder - Backend Engineer & Main support

dante

  • Usuario nuevo
  • *
  • Karma: +1/-0
  • Desconectado Desconectado
  • Mensajes: 21
    • Ver Perfil
Re:duda con sesiones
« Respuesta #9 en: Septiembre 28, 2010, 18:40:20 pm »

gracias por la ayuda brindada.

Pero tengo otro inconveniente relacionado con las sesiones ya qeu cuando quiero hacer un session_destroy() no me funciona y me arroja  error y quisiera saber si esta relacionado con los problemas antes mencionados ya que asi como necesito hacer sesiones tambien necesito destruirlas

Gracias
En línea

shakaran

  • Soporte
  • Administrator
  • Usuario profesional
  • *****
  • Karma: +12/-0
  • Desconectado Desconectado
  • Sexo: Masculino
  • Mensajes: 485
  • Un buen soporte lo es todo
    • Ver Perfil
    • Shakaran
Re:duda con sesiones
« Respuesta #10 en: Septiembre 28, 2010, 18:42:14 pm »

¿que error te da y que código usas?
En línea
Ángel Guzmán Maeso
Quijost Founder - Backend Engineer & Main support

dante

  • Usuario nuevo
  • *
  • Karma: +1/-0
  • Desconectado Desconectado
  • Mensajes: 21
    • Ver Perfil
Re:duda con sesiones
« Respuesta #11 en: Octubre 08, 2010, 16:51:49 pm »

Hola

perdona la tardanza en mi respuesta pero lo que me sale cuando hago sesion destroy es lo siguiente:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@dante.quijost.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

y el codigo que uso es un link que llama a una pagina php con el siguiente codigo:

<?php
   session_unset();
   session_destroy();      
   header("Location: ../index.php");
?>

asi que no se por que no funciona o que estoy haciendo mal muchas gracias
En línea

shakaran

  • Soporte
  • Administrator
  • Usuario profesional
  • *****
  • Karma: +12/-0
  • Desconectado Desconectado
  • Sexo: Masculino
  • Mensajes: 485
  • Un buen soporte lo es todo
    • Ver Perfil
    • Shakaran
Re:duda con sesiones
« Respuesta #12 en: Octubre 08, 2010, 22:41:19 pm »

Creo que tienes dos errores, uno que no has iniciado la sesión con session_start (sino esta iniciada, no la puede destruir php y por eso genera un error 500) y segundo que si utilizaste nuestro ejemplo tendrás un session save path que debes poner también.

Resumiendo, un mejor código de logout que puedes utilizar (cambialo a tu usuario y configuración):

Código: [Seleccionar]
<?php
ini_set
('session_save_path''/home/tuusuario/tmp');
session_name('tuusuario');
if(@
session_start() == False){session_destroy();session_start();}
if(
session_is_registered('alguna_variable_de_sesion'))
{
    
$_SESSION = array();
    
session_unset();
    
session_destroy();
    
header('Location: /');
    exit;
}
# Si la variable no esta registrada, el usuario no deberia estar en el logout
# luego lo redireccionamos a la pagina principal
else header('Location: /');
?>

Pruebalo y nos comentas
En línea
Ángel Guzmán Maeso
Quijost Founder - Backend Engineer & Main support

dante

  • Usuario nuevo
  • *
  • Karma: +1/-0
  • Desconectado Desconectado
  • Mensajes: 21
    • Ver Perfil
Re:duda con sesiones
« Respuesta #13 en: Octubre 09, 2010, 16:15:04 pm »

Gracias por el codigo pero aun no funciona me sique saliendo el mismo error Internal Server Error, Los ususario si hacen sesion y la variable de sesion queda registrada pero no se por que no la puedo destruir.
En línea

shakaran

  • Soporte
  • Administrator
  • Usuario profesional
  • *****
  • Karma: +12/-0
  • Desconectado Desconectado
  • Sexo: Masculino
  • Mensajes: 485
  • Un buen soporte lo es todo
    • Ver Perfil
    • Shakaran
Re:duda con sesiones
« Respuesta #14 en: Octubre 09, 2010, 18:09:17 pm »

Me parece que no lo estas haciendo bien y que no nos pones el ejemplo tal cual lo tienes, sino nos especificas todo conforme es claro que puede diferir y no te funciona.

Viendo los archivos de tu cuenta, vemos que existe un archivo /benc/clases/usuario.php
donde tienes una función:

Código: [Seleccionar]
function salida_sistema(){
$sql="update auditoria set aud_hor_sal = '". date("h:i:s") . "' where aud_ran = '". $_SESSION[random] . "'";
$resultado = pg_query(conex(),$sql);
session_unset();
session_destroy();
header("Location: ../index.php?msg=cerrar");
exit;
}

En el index.php no se ve ninguna opción que analice el msg=cerrar (quizás lo tengas en un include), pero aparte tienes un <a href='./salida'>Cerrar sesion</a> y tu archivo salida es una regla rewrite tal que:
RewriteRule ^(.*)salida(.*)$ salida_sistema.php [L]

Pero ese archivo salida_sistema.php no existe, luego lo que se produce es un error 404, que como tampoco tienes un archivo para errores 404 produce tu error 500, luego tu problema no es con las sesiones es con los archivos que faltan en tu sitio.

Aparte tu código esta poco estructurado y parece que tiene muchos recortes, te recomendaría aprender bien php y rehacer un sitio desde cero, intentando escribir un mejor código, ya que sino en un futuro se te darán muchos errores como estos.
En línea
Ángel Guzmán Maeso
Quijost Founder - Backend Engineer & Main support
 

Página generada en 0.124 segundos con 24 consultas.