Foros del Web » Programando para Internet » PHP »

No actualiza la base de datos

Estas en el tema de No actualiza la base de datos en el foro de PHP en Foros del Web. Hola, en un sistema que estoy haciendo tengo al inicio una pagina en la que el usuario ingresa nombre y contraseña, de ser correctos en ...
  #1 (permalink)  
Antiguo 24/06/2008, 18:39
 
Fecha de Ingreso: noviembre-2007
Mensajes: 28
Antigüedad: 16 años, 5 meses
Puntos: 0
No actualiza la base de datos

Hola, en un sistema que estoy haciendo tengo al inicio una pagina en la que el usuario ingresa nombre y contraseña, de ser correctos en la base de datos en su campo estado le pongo "on" y creo variables de sesion además le mando la pagina principal en donde tengo un frame de la siguiente manera

/********index.php****************/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<frameset rows="1,*" cols="*" framespacing="0" frameborder="no" border="0" bordercolor="#F1F3F8">
<frame src="../frame.php" name="topFrame" scrolling="NO" marginwidth="0" marginheight="0" allowtransparency="true">
<frame src="menu_almacen.php">
</frameset><noframes></noframes>
<body>
</body>
</html>

La pagina ../frame se encuentra de la siguiente manera

/**********frame.php*****************/"no se me ocurrio otro nombre"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script>
function cerrar_sesion(){
window.open("destroy.php");
//window.location.href='destroy.php';
}
</script>
</head>
<body onUnload="cerrar_sesion();">
</body>
</html>

y en el archivo menu_almacen.php se encuentra propiamente dicho el menu con el que interactua el usuario.

El usuario puede navegar por el menu sin problemas (sin que se destruya la sesion) y cuando cierra el navegador con la X entonces se ejecuta lo que hay en el archivo frame.php, el cual manda llamar al archivo destroy.php que destruye la sesion y cambia el estado en la base de datos a "off" segun sea el usuario, todo lo hace perfecto en la maquina en donde estoy programando y además tengo la BD, sin embargo al accesar desde una pequeña red que tengo instalada al cerrar el navegador desde la X se ejecuta frame.php y porlo tanto destroy, pero no me modifica el estado en la base de datos... Espero me puedan ayudar, les dejo tambien el codigo que hay en destroy.php, y de antemano por las respuestas gracias
/************destroy.php****************/
<?php
session_start();
$idUser = $_SESSION[id];
session_destroy();
include ("conect/conec.php");
$link=conectar();
mysql_query("update usuario set conectado = 0 where clave = '$idUser'",$link);
echo '<script> location = "index.php" </script>';
?>
  #2 (permalink)  
Antiguo 25/06/2008, 01:23
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 6 meses
Puntos: 48
Respuesta: No actualiza la base de datos

En destroy.php comprueba el valor de la sesion, $_SESSION['id']. Lo mas probable es que este vacia porque no esta abriendo la misma sesion. Las sesiones tal como las usas necesitan las cookies para pasar el id de sesion desde el navegador al servidor PHP. Y las cookies dependen de la configuracion del navegador. Ademas, llamas a destroy.php con javascript, lo que puede añadir mas problemas.
  #3 (permalink)  
Antiguo 25/06/2008, 08:58
 
Fecha de Ingreso: noviembre-2007
Mensajes: 28
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: No actualiza la base de datos

No habia pensado en eso que me comentas, voy a verificarlo y te comento, gracias
  #4 (permalink)  
Antiguo 25/06/2008, 13:17
 
Fecha de Ingreso: noviembre-2007
Mensajes: 28
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: No actualiza la base de datos

Gracias por la respuesta, lo he solucionado de la siguiente manera con Ajax, solo pongo el codigo de frame.php lo demás es igual

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<
html>
<
head>
<
title>Documento sin t&iacute;tulo</title>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<
script type="text/javascript">
var 
http crearAjax();

function 
crearAjax()
{
    var 
xmlhttp=false;
     try
    {
      
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (
e)
    {
        try
        {
               
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
          }
        catch (
E)
        {
               
xmlhttp false;
          }
     }

    if (!
xmlhttp && typeof XMLHttpRequest!='undefined')
    {
          
xmlhttp = new XMLHttpRequest();
    }
    return 
xmlhttp;
}

  
window.onbeforeunload = function(){
            
guardar_info();
        }

        function 
guardar_info(){
             
http.open("GET""destroyclose.php"true);
             
http.onreadystatechange=function()
            {
                if (
http.readyState == 1){
            
alert("Cerrando Sesion");
                }
                if (
http.readyState == 4){
                    
results http.responseText;
                    
alert("Listo");
                }       
            }
            
http.send(null);
        } 
</script>
</head>
<body>
</body>
</html> 
Espero les sirva a quienes buscan algo similar
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 08:51.