Foros del Web » Programando para Internet » PHP »

Ayuda con contador y sesiones

Estas en el tema de Ayuda con contador y sesiones en el foro de PHP en Foros del Web. Holas... ke tal?? estoy haciendo un contador usando php y mysql y el problema ke tengo es ke cada vez ke actualizo la pagina se ...
  #1 (permalink)  
Antiguo 16/02/2003, 23:25
Avatar de Rocket  
Fecha de Ingreso: diciembre-2001
Ubicación: Santiago, Chile
Mensajes: 272
Antigüedad: 16 años
Puntos: 4
Ayuda con contador y sesiones

Holas... ke tal??

estoy haciendo un contador usando php y mysql y el problema ke tengo es ke cada vez ke actualizo la pagina se le suma 1 al contador y lo ke kiero es ke el contador funcione por cada visita al sitio y no cada vez ke se actualiza la pagina, se ke eso se hace con sesiones pero no se como puedo usarlas ya ke soy nuevo en el PHP.

no se si kedo claro, ojala ke si

esta es la pagina para ke la vean
http://200.83.21.156/

gracias
  #2 (permalink)  
Antiguo 16/02/2003, 23:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bien sencillo ...

Al entrar a tu página algun usuario registras un "flag" de estado que indique q "entró" a tu página ..

A su vez en todas las páginas (por lo menos en esa q contabilizas) miras si está creada esa variable de sesion "flag" (bandera, estado) .. Si no está creada .. cuentas una nueva vista .. si no lo está .. la creas:

Código PHP:
<?
session_start
();
if (!isset(
$_SESSION['visita'])){
$_SESSION['visita']="";
} else {
// tu lógica q haga el conteo de la visita.
}
?>
He usado la variable de nombre "visita" para la session . Se usa como "flag" .. y se mira si está definida o no .. por lo tanto no hace falta ni q tenga algun valor determinado ...

Recuerda q session_start() ha de estar al principio de tu script o antes de cualquier HTML por delante ..

Usando sessiones .. conseguiras el efecto q tu contador no cuente recargas de página o incluso si lo usas en varias páginas tu contador .. q no te cuente visitas q vengan de otras paginas de tu sitio .. Lo q no evitará es q si cierra el navegador y vuelve a entrar al instante se detecte como nueva visita y se contabilice .. Ese "porblemilla" lo prodrias arreglar usando cookies .. cosa q tiene sus problema tambien (si el cliente no las acepta .. o se las borra .. etc).

Un saludo,
  #3 (permalink)  
Antiguo 17/02/2003, 15:45
 
Fecha de Ingreso: febrero-2003
Mensajes: 6
Antigüedad: 14 años, 10 meses
Puntos: 0
Asignarle un valor nulo a una sesión puede traer problemas a la larga, además de que esa sesión ni siquiera se ha registrado.

Lo mejor para evitar eso es:

if(!session_is_registered('visitas')) {
[conectate a la base de datos y actualizala con una visita más]
session_register('visitas');
}

Listo.

Un Saludo.-

P.D: Tomo por entendido que tienes session_start() en algún otro archivo madre. Si no es así, debes agregarlo antes de cualquier cosa.
  #4 (permalink)  
Antiguo 17/02/2003, 17:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Mensaje Original por César López
Asignarle un valor nulo a una sesión puede traer problemas a la larga, además de que esa sesión ni siquiera se ha registrado.

Lo mejor para evitar eso es:

if(!session_is_registered('visitas')) {
[conectate a la base de datos y actualizala con una visita más]
session_register('visitas');
}

Listo.

Un Saludo.-

P.D: Tomo por entendido que tienes session_start() en algún otro archivo madre. Si no es así, debes agregarlo antes de cualquier cosa.
Si registras variables de session usando el array superglobal $_SESSION['variable'] ... las funciones session_is_register() no actuan .. Por eso uso isset() como una variable cualquiera. Al NO ser globales .. tampoco me importa si tiene valor o no .. pues lo uso como flag como he comentado ...

Todo esto no lo digo yo .. lo dice:
Cita:
session_is_registered() returns TRUE if there is a variable with the name name registered in the current session.

Note:
If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is used, use isset() to check a variable is registered in $_SESSION.

Caution:
If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered() and session_unregister().
Tu método es valido si registra variables via session_register como así lo haces en tu ejemplo .. Pero han llegado nuevos tiempos para PHP xD (desde 4.1.x en adelante) .. Usa en la medída de lo posible $_SESSION ..

Un saludo ..
  #5 (permalink)  
Antiguo 18/02/2003, 15:59
Avatar de Rocket  
Fecha de Ingreso: diciembre-2001
Ubicación: Santiago, Chile
Mensajes: 272
Antigüedad: 16 años
Puntos: 4
Gracias a los dos, use lo ke me dijo Cesar la otra no me funciono.

Cluster me podrias decir por favor por ke no pudo haber funcionado.

gracias.
  #6 (permalink)  
Antiguo 18/02/2003, 18:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No te va porque me equivoqué

Código PHP:
<?
session_start
();
if (!isset(
$_SESSION['visita'])){
$_SESSION['visita']="";
// tu lógica q haga el conteo de la visita.
}
?>
Negé el isset .. por lo tanto es SI NO está definida la variable de sesion "visita" -> se registra la variable de session y se cuenta la visita .. Si no está definida esa variable .. no se hace nada.

Un saludo,
  #7 (permalink)  
Antiguo 18/02/2003, 19:15
Avatar de Rocket  
Fecha de Ingreso: diciembre-2001
Ubicación: Santiago, Chile
Mensajes: 272
Antigüedad: 16 años
Puntos: 4
voy a probar pero creo ke ese cambio tambien lo hice y no me funciono.

te aviso...
  #8 (permalink)  
Antiguo 18/02/2003, 19:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Funciona solo en PHP 4.1.x o superior .. (lo probé y funciona correctamente)

Un saludo,
  #9 (permalink)  
Antiguo 10/07/2003, 17:27
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
gracias cluster... ;)
__________________
3w.valenciadjs.com
3w.laislatv.com
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 03:05.