
Problema: INSERT INTO no añade más que un registro
Publicado por connectee (3 intervenciones) el 28/04/2015 19:03:45
Hola!
Intento registrar (listar) el acceso de cada usuario (su id y el tiempo de acceso)
a una pagina web de acceso restringido en una tabla SQL (llamada accesos).
El problema es que se genera un único registro.
Los siguientes accesos no generan registros en la tabla.
He comprobado que borrando el registro (dejar la tabla sin registros),
el acceso de un usuario vuelve a generar un registro nuevo y
otra vez no se puede añadir otro registro.
Para comprobar si el script está bien he creado una lista de accesos de los usuarios a un fichero.
Es decir, más o menos lo mismo como la tabla SQL, pero con fichero (accesos.txt).
En el script del ejemplo ambas maneras (del SQL y del fichero) van paralelas.
También intento mantener un sintaxis parecido para las dos maneras.
El script del fichero va perfecto:
en cada acceso en fichero se añade una línea con la fecha, la hora y id del usuario.
En la tabla SQL queda con el único primer registro.
¿Dónde me equivoco?
Intento registrar (listar) el acceso de cada usuario (su id y el tiempo de acceso)
a una pagina web de acceso restringido en una tabla SQL (llamada accesos).
El problema es que se genera un único registro.
Los siguientes accesos no generan registros en la tabla.
He comprobado que borrando el registro (dejar la tabla sin registros),
el acceso de un usuario vuelve a generar un registro nuevo y
otra vez no se puede añadir otro registro.
Para comprobar si el script está bien he creado una lista de accesos de los usuarios a un fichero.
Es decir, más o menos lo mismo como la tabla SQL, pero con fichero (accesos.txt).
En el script del ejemplo ambas maneras (del SQL y del fichero) van paralelas.
También intento mantener un sintaxis parecido para las dos maneras.
El script del fichero va perfecto:
en cada acceso en fichero se añade una línea con la fecha, la hora y id del usuario.
En la tabla SQL queda con el único primer registro.
¿Dónde me equivoco?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
// declaro una función que registra la entrada de un usuario en un fichero
function registrar_acceso_fichero($id_usuario){
$ahora = time();
$mensaje = @strftime("%d-%m-%Y %H:%M:%S ", $ahora);
if($id_usuario != -1){
$mensaje .= "El usuario con id $id_usuario "."ha entrado a la zona privada.";
}
else{
='editor_indent'>$mensaje .= "Intento fallido de acceso a la zona privada.";
='editor_indent'>}
$archivo = fopen("accesos.txt", "a+"); // fopen(ruta al archivo, modo de acceso )
fwrite($archivo, "$mensaje \n"); // fwrite(archivo, cadena de texto) y salto de línea \r\n
fclose($archivo);
}
// declarar función
function registrar_acceso_db($id_usuario){
$ahora = time();
$fecha_mysql = @strftime("%d-%m-%Y %H:%M:%S ", $ahora);
/*incapsulo la sentencia INSERT con la variable $consulta1 */
$consulta = "INSERT INTO accesos (idusuario, hora_acceso) VALUES ('$id_usuario', '$fecha_mysql')";
/* introduzco la vriable $resultado: mysql_query añade la fila*/
$resultado = mysql_query($consulta);
}
// el script empieza aquí
session_start();
mysql_connect("localhost", "root", "");
mysql_select_db("curso_php_");
$usuario = $_POST[usuario]; // asignar los valores del formulario a dos variables
$contrasena = $_POST[contrasena];
$consulta = "SELECT * FROM usuarios WHERE nombreusuario = '$usuario' AND contrasenausuario = '$contrasena'";
$resultado = mysql_query($consulta);
if(mysql_num_rows($resultado) != 0){
$_SESSION["autorizado"] = TRUE;
// (identificador de resultado, fila, nombre de campo o su número)
$id = mysql_result($resultado, 0, "idusuario");
registrar_acceso_fichero($id); // llamo la función para escribir el registro en un fichero
registrar_acceso_db($id); // llamo la función para escribir el registro en una tabla de db
header("location: zona_privada.php");
}
else{
session_destroy();
registrar_acceso_fichero(-1);
registrar_acceso_db(-1);
header("location: no_autorizado.html");
}
?>
Valora esta pregunta


0