quinqui... amigos... creo haber encontrado la solución pero quisiera mostrarles lo que hice.
La tabla de la BDD es así:
CONTADOR4
id 1, 2, 3, 4...
id_rubro 1, 2, 3, 4...
visitas xx, xx, xx, xx...
Con el código que me pasó el genio de
quinqui más una parte del otro código que había puesto, armé lo siguiente:
micrositio.php (llamo al contador.php con un include)
Lleva en la cabecera el inicio de sesion
Código PHP:
session_start();
contador.php
Código PHP:
//se requiere el archivo para validar los datos de usuario de bdd para conectar
require('configuracion.php');
//se asignan la variables
$idrubro = trim($_GET['idrubro']);
$sql = "SELECT visitas FROM contador4 WHERE id_rubro = '$idrubro'"; // consultas a la BD cual es en numero que hay actualmente en el campo de la BD contador
$result = mysql_query($sql , $conexion) or die ( mysql_error() );
$row = mysql_fetch_array($result);
$visitas = $row['visitas']; // este es el valor de contador
// manejamos la fechahora del ultimo acceso como "segundos"
// vale decir, como un numero entero
$ultimo_acceso = $_SESSION["ult_acceso"]["$idrubro"];
// obtenemos los segundos del momento actual:
$ahora = mktime(date("G"), date("i")+0, date("s")+0, date("n"), date("j"), date("Y"));
// si han pasado mas de 3600 segundos (1 hora) desde
// el ultimo acceso y ahora:
if ($ahora - $ultimo_acceso >= 3600)
{
$visitas = ($visitas + 1);
// guardas la visita en la base de datos
$sql2 = "UPDATE contador4 SET visitas = '$visitas' WHERE id_rubro = '$idrubro' "; // actualizas en la BD el numero de contador
$result2 = mysql_query($sql2 , $conexion) or die ( mysql_error() );
}
// aki guardas en la sesion el momento actual
$_SESSION["ult_acceso"]["$idrubro"] = $ahora;
// aki siguen tus codigos...
//creamos el condicionamiendo para loguearlo o no.
$sql3 = "SELECT * FROM contador4 WHERE id_rubro = '$idrubro'";
$result3 = mysql_query($sql3, $con) or die("Error al leer base de datos: ".mysql_error);
$row = mysql_fetch_array($result);
echo '<table width="20%" border="1" height="25">';
echo '<tr>';
echo '<td>Visitas: ' .$visitas . '</td>';
echo '<td>id_rubro: ' .$idrubro . '</td>';
echo '</tr>';
echo '</table>';
De esta forma, si es que no está mal hecha, la consulta busca el $idrubro de la tabla y si lo encuentra, automaticamente le suma 1 si se encuentra dentro de los 3600 seg, le suma 1 y no vualve a hacerlo por mas que se presione F5 y la misma sesion va sumándole visitas a los otros $idrubros.
Hasta ahora lo probé y funcionó. Si uds. ven algo q está mal, espero sus comentarios, por supuesto.
Igualmente, millones de gracias a todos y en especial a ti
quinqui, maestro... por tu tiempo y tus ejemplos.
Un abrazo gigante. Marx.
PD: Con respecto a la sesion abierta cada vez que entra un visitante... esa sesion expira sola, se cierra sola o me falta agregarle alguna línea mas?