Foros del Web » Programando para Internet » PHP »

no hace insercion en la bd con php

Estas en el tema de no hace insercion en la bd con php en el foro de PHP en Foros del Web. Que tal Tengo un problema al momento de que los usuarios inician sesion en la bd se genera una bitacora de la hora de netrada ...
  #1 (permalink)  
Antiguo 04/09/2012, 10:01
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
no hace insercion en la bd con php

Que tal

Tengo un problema al momento de que los usuarios inician sesion en la bd se genera una bitacora de la hora de netrada y salida , ip, navegador y el estatus de la sesion.

Mi problema es que cuando el usuario inicia sesion despues de haber cerrado la anterior ya no se vuelve a registrar en la bitacora

dejo el codigo que tengo

Validacion de sesiones y registro del acceso
Código PHP:
Ver original
  1. include("conexion.php");
  2.    
  3.     session_start();
  4.    
  5.     $correo = $_POST['log'];
  6.     $pwd = $_POST['pwd'];
  7.    
  8.     // $pass = md5($pwd);
  9.    
  10.     $validar = $conexion->query("SELECT * FROM usuarios WHERE correo = '$correo' AND pass = '$pwd'");
  11.     $row_validar = $validar->fetch_object();
  12.     // variables de insercion...
  13.     $id = $row_validar->id_usuario;
  14.     $ip = $_SERVER['REMOTE_ADDR'];
  15.     date_default_timezone_set("America/Mexico_City");
  16.     $hora = date("Y-m-d H:i:s",time());
  17.     $nav = $_SERVER['HTTP_USER_AGENT'];
  18.    
  19.    
  20.     // variables de sesion...
  21.     $nombre = $row_validar->nombre;
  22.     $p = $row_validar->id_privilegio;
  23.     // numero de filas...
  24.     if($validar->num_rows > 0)
  25.     {
  26.          $nvoAcceso = $conexion->query("INSERT INTO accesos VALUES ('$id','$ip','$hora','$hora','$nav','Iniciada')");
  27.          $_SESSION['activo'] = "1";
  28.          $_SESSION['nombre'] = $nombre;
  29.          if($p == 1);
  30.          {
  31.              header("location: inicio_admin.php");
  32.          }
  33.     }
  34.     else
  35.     {
  36.         header("location: index.php?error=1");
  37.     }

Cerrar sesion y cambiar el status a terminada y cambio la hora de salida

Código PHP:
Ver original
  1.     include("conexion.php");
  2.    
  3.     date_default_timezone_set("America/Mexico_City");
  4.     $hora = date("Y-m-d H:i:s",time());
  5.     $id = $_GET['id'];
  6.    
  7.     $hrsalida = $conexion->query("UPDATE accesos SET hrSalida = '$hora', sesionStatus = 'Terminada'  WHERE id_usuario = '$id'");
  8.  
  9.     header("location: index.php");

Gracias de antemano
  #2 (permalink)  
Antiguo 04/09/2012, 23:11
 
Fecha de Ingreso: agosto-2012
Mensajes: 4
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: no hace insercion en la bd con php

Que tal

pues como lo veo yo tu IF de la linea 24 lo tienes mal planteado por que es una variable que en teoria puede y no tener filas mas bien te recomendaria que usaras una forma diferente algo como una variable bandera en la cual que si ya fue logueado correctamente escriba, o si no valida nada y lo que quieres es guardar los registros nada mas pues quita tu IF

if($validar->num_rows > 0)

espero te sirva saludos
  #3 (permalink)  
Antiguo 05/09/2012, 00:34
 
Fecha de Ingreso: abril-2008
Mensajes: 88
Antigüedad: 16 años
Puntos: 5
Respuesta: no hace insercion en la bd con php

mmm... yo creo que es problema con la SESSION, creo que no las estas destruyendo bien... podrias instancearlas a NULL y luego validar a traves de la existencia de este valor o bien darles valor de FALSE, ...

otra cosa que debes hacer (a mi criterio) seria valiar por ID del usuario y no por el numero de filas. si existe el ID entonces que haga algo, si no que te muestre que resultado tiene la variable $validar, con un print_r($validar) podes saber que datos tiene. si va todo en blanco o vacios es porque el clavo esta en la parte donde le asignas valores a esta variable.

Etiquetas: bd, registro, variables, usuarios
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 21:30.