Ver Mensaje Individual
  #8 (permalink)  
Antiguo 14/03/2010, 02:25
yairohn
 
Fecha de Ingreso: marzo-2010
Mensajes: 8
Antigüedad: 14 años, 1 mes
Puntos: 0
De acuerdo Respuesta: ¿Que piensa de estas dos opciones?

Bueno como lo que pides es una comparación, antes que nada déjame decirte que la opción 1, tiene un error de lógica. Pues primero creas la cookie y luego preguntas si está 'set/ activada’ que no haga nada, lo cual siempre será verdadero y jamás entrará a tu else que es donde aumentas el contador.

Y la segunda opción que presentas tiene dos (2) deficiencias.
Numero 1:
Cada vez que el usuario cierre el navegador y vuelva a entrar el contador aumentará, dado que la variable de sesión se pierde.
Numero 2:
Aunque ya hayan pasado los 1800 segundos, se requiere de dos (2) refresh para que el contador aumente, dado que en el primero entrará al else y eliminara la variable de sesión habría que recargar nuevamente para que entre al if.

Nota:
Para eliminar la variable de sesión prefiero hacer $_SESSION['ctrlViews']=false; y para preguntar si está creada basta con poner if ($_SESSION['ctrlViews']).

Tu ejemplo es bastante sencillo y por lo que veo en tu UPDATE no necesitas la ip, si solo necesitas aumentar el contador 1 vez cada 30 mint por maquina basta con hacer esto:
if(!isset($_COOKIE['ctrlViews']))
{
setcookie('ctrlViews',"ok",time()+1800);

$sent="UPDATE url SET ccounter = ccounter + 1 WHERE for_ads = '$idAds'";
mysql_query($sent) or die(mysql_error());
}
OJO por que si la persona elimina la cookie manualmente antes de los 30 mints podra incrementar el contador.
Para una solucion mas segura habria que guardar la ip en la base de datos.

Última edición por GatorV; 15/03/2010 a las 00:37