Foros del Web » Programando para Internet » PHP »

Historial de visitantes a la base de datos por php

Estas en el tema de Historial de visitantes a la base de datos por php en el foro de PHP en Foros del Web. Hola, quisiera poder hacer esto pero no lo he conseguido... Quisiera por medio de php poder ver el historial o "log" de lo que ha ...
  #1 (permalink)  
Antiguo 15/06/2011, 07:22
 
Fecha de Ingreso: octubre-2008
Mensajes: 162
Antigüedad: 9 años, 6 meses
Puntos: 11
Historial de visitantes a la base de datos por php

Hola, quisiera poder hacer esto pero no lo he conseguido... Quisiera por medio de php poder ver el historial o "log" de lo que ha estado pasando en la base de datos, quienes se han conectado, salido, borrado, etc... ¿Como se hace esto???

estoy usando autentificator para el acceso y permiso de usuarios...

muchas gracias.
  #2 (permalink)  
Antiguo 15/06/2011, 08:15
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 6 años, 11 meses
Puntos: 261
Respuesta: Historial de visitantes a la base de datos por php

Cita:
Iniciado por moisesneveu Ver Mensaje
...quisiera poder hacer esto pero no lo he conseguido...
Hay varias formas de hacerlo dependiendo de la cantidad/información que quieras adquirir.

Que tienes hecho? Muéstranos algo para poder orientarte.

Saludos,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #3 (permalink)  
Antiguo 15/06/2011, 08:42
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.650
Antigüedad: 10 años, 1 mes
Puntos: 336
Respuesta: Historial de visitantes a la base de datos por php

yo hago esto:

primero creo una tabla llamada "logs" con los siguietnes campos

id INT PK AUTOINCREMENT
what VARCHAR(100) // que hizo
who INT // id de quien lo hizo
where VARCHAR(15) // IP de donde se hizo
when DATETIME // Cuando se hizo

luego en un archivo de coneccion por ejemplo coneccion.php (el mismo que usas para conectarte), agregas esta función:

Código PHP:
function mysql_log_query($query){
  
$action=strtoupper(substring($query,0,strpos($query," "))); //tomas la primera palabra de la query en mayuscula
  
if($action=="INSERT" or $action=="UPDATE" or $action=="DELETE"){ // en los casos ponemos todos los eventos que tengan relacion con modificaciones en la BD
      // en ese ejemplo he usado insertar, actualizar y eliminar, pero puedes agregar más
      
$save=str_replace("'"," ",$query);
      
mysql_query("INSERT INTO logs VALUES ('','".$save."','".$_SESSION['usuario']."','".$_SERVER['REMOTE_ADDR']."',NOW());");
      
// guardas en la tabla log esta acción, fijate que la query se guarda sin comillas, se guarda el usuario, su ip y la fecha-hora actual
  
}
  return 
mysql_query($query); // y por supuesto tenemos que ejecutar la consulta

ahora cada vez que quieras hacer una sentencia sql en vez de poner mysql_query pones mysql_log_query

por ejemplo:

mysql_log_query("UPDATE tabla SET x=1 WHERE y=2");

guardara en tu log esto:

ID: 1
what: UPDATE tabla SET x=1 WHERE y=2
who: (mi id)
where: 127.0.0.1
when: 2011-06-15 10:49:25

te lo recomiendo, de este modo no solo tendrás registros de cada acción, también podrás filtrar las consultas si quieres y agregar mas seguridad :)
__________________
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

Última edición por stramin; 15/06/2011 a las 08:50
  #4 (permalink)  
Antiguo 15/06/2011, 10:59
 
Fecha de Ingreso: octubre-2008
Mensajes: 162
Antigüedad: 9 años, 6 meses
Puntos: 11
Respuesta: Historial de visitantes a la base de datos por php

Excelente, se ve muy bueno y te agradezco mucho por compartirlo...

Mira, he puesto el codigo en mi conexión me ha quedado asi:

conexion.php

Código PHP:
<?php

$conexion 
mysql_connect("localhost""user""pass") or trigger_error(mysql_error(),E_USER_ERROR); 
mysql_select_db("bd"$conexion);
 
 
function 
mysql_log_query($query){ 
  
$action=strtoupper(substring($query,0,strpos($query," "))); //tomas la primera palabra de la query en mayuscula 
  
if($action=="INSERT" or $action=="UPDATE" or $action=="DELETE"){ // en los casos ponemos todos los eventos que tengan relacion con modificaciones en la BD 
      // en ese ejemplo he usado insertar, actualizar y eliminar, pero puedes agregar más 
      
$save=str_replace("'"," ",$query); 
      
mysql_query("INSERT INTO logs VALUES ('','".$save."','".$_SESSION['usuario']."','".$_SERVER['REMOTE_ADDR']."',NOW());"); 
      
// guardas en la tabla log esta acción, fijate que la query se guarda sin comillas, se guarda el usuario, su ip y la fecha-hora actual 
  

  return 
mysql_query($query); // y por supuesto tenemos que ejecutar la consulta 
}  
 
?>
update.php

Código PHP:
<?php

include "conexion.php";

if(isset(
$_GET['id'])){
$id $_GET['id'];

$sql mysql_log_query("SELECT * FROM empresa WHERE folio = $id"$conexion)
or die(
mysql_error());
$row mysql_fetch_array($sql);

$mensaje "Actualizar los datos del usuario <b>$row[rut]</b>";
}
if(isset(
$_POST['actualizar']) && $_POST['actualizar'] == 'Actualizar'){
// comprobamos que no lleguen campos vacios
if(!empty($_POST['rut']) && !empty($_POST['nombre']) && !empty($_POST['direccion'])){

$folio $_POST['folio'];
$rut $_POST['rut'];
$nombre $_POST['nombre'];

// la consulta UPDATE
$sqlUpdate mysql_log_query("UPDATE empresa SET rut = '$rut',nombre = '$nombre',direccion = '$direccion' WHERE folio = '$folio'"$conexion)
or die(
mysql_error());
echo 
"Registro actualizado correctamente";
}else{
echo 
"debe llenar todos los campos";
}
}else{
echo 
"<p>".$mensaje."</p>";
?>

Y todo el resto....
Pero lo malo es que no actualiza... ¿Esta mal ubicada la función? o que puede ser por que tampoco me funciona con insertar o con borrar

muchas gracias.
  #5 (permalink)  
Antiguo 15/06/2011, 12:47
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.650
Antigüedad: 10 años, 1 mes
Puntos: 336
Respuesta: Historial de visitantes a la base de datos por php

hola, la funcion recibe solo un parametro, no 2:

mysql_log_query("UPDATE empresa SET rut = '$rut',nombre = '$nombre',direccion = '$direccion' WHERE folio = '$folio'", $conexion)

si sigue sin actualizar entonces puede que tengas que especificar la variable de conexion en las 2 consultas de la función:

mysql_query("INSERT INTO logs VALUES ('','".$save."','".$_SESSION['usuario']."','".$_SERVER['REMOTE_ADDR']."',NOW());",$conexion);

return mysql_query($query,$conexion);
__________________
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
  #6 (permalink)  
Antiguo 15/06/2011, 21:44
 
Fecha de Ingreso: abril-2011
Mensajes: 121
Antigüedad: 7 años
Puntos: 1
Respuesta: Historial de visitantes a la base de datos por php

Que bueno. No lo habia pensado. se ve bueno y lo que ce probar pero no me funciona no se por que. sería posible que dieran un ejemplo de esto??? pequeñito solamente ya que no se uqe estoy haciendo mal. que esten todos bien.

edito....

Se puede hacer lo mismo pero para llevar un log del acceso, salida y donde estuvieron los usuarios?=

salu2
  #7 (permalink)  
Antiguo 16/06/2011, 11:55
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.650
Antigüedad: 10 años, 1 mes
Puntos: 336
Respuesta: Historial de visitantes a la base de datos por php

sip, cuadno alguien ingrese o salga de la página puedes insertar un registro en esa misma tabla dejando el campo what como "Ha ingresado" o "Ha egresado"
__________________
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

Etiquetas: historial, visitante
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 19:58.