Foros del Web » Programando para Internet » PHP »

Contador

Estas en el tema de Contador en el foro de PHP en Foros del Web. Hola a todos los expertos del foro , bueno lo que necesito hacer es algo complicado para mi , pero seguro que para algunos de ...
  #1 (permalink)  
Antiguo 18/02/2010, 12:43
 
Fecha de Ingreso: noviembre-2009
Mensajes: 76
Antigüedad: 14 años, 5 meses
Puntos: 2
Contador

Hola a todos los expertos del foro , bueno lo que necesito hacer es algo complicado para mi , pero seguro que para algunos de vosotros sera pan comido.

Primero exponemos la necesidad :

Necesito crear un sistema promocional segun tiempo , es decir , necesito que al activarsele el sistema a un usuario de la web le de 3 dias de premium. Lo que hara el premium es simplemente , dar la opcion de cambiar una variable a 1 o 0 pero solo durante esos 3 dias puede ponerse a 1 y mientras la variable sea 1 el tiempo tiene que hacer cuenta atras , cuando se desactive , se tiene que restar el tiempo trascurrido mientras estubo activo de esos 3 dias iniciales , y si el tiempo de esos 3 dias llega a agotarse que automaticamente ponga la variable a 0.

En mi caso tengo 1 base de datos con 2 tablas que deseo utilizar.

Ya tengo hecho el sistema que lee la variable y da acceso

las dos tablas son : vip_users y users

En users tengo: id|nombre|email|accesovip ( acceso vip es la variable "1" activado "0" desactivado.

En vip_users tengo : id_user(el mismo que en users)|premium_dias|premium_comienzo|premium_fin


en este caso , lo que necesitaria es el codigo , que compruebe si el id_user tiene dias premium , y si los tiene activarse , al activarse apuntar el date en premium_comienzo , y al desactivarse , apunte el premium_fin , y que haga el calculo , premium_fin-premium_comienzo y que ese calculo lo reste de los dias premium .


Lo cierto es que no tengo muy claro como hacerlo , por lo tanto si alguien me puede dar ideas , o decirme una manera menos complicada de hacerlo , se lo agradeceria.
  #2 (permalink)  
Antiguo 18/02/2010, 12:47
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: Contador

¿quieres controlar digamos los minutos exacto que un usuario esta logueado en tu web? ¿e ir restando dichos minutos a los 3 dias de premium que tenga? aclarame y veo se te puedo ayudar con algo
  #3 (permalink)  
Antiguo 19/02/2010, 11:11
 
Fecha de Ingreso: noviembre-2009
Mensajes: 76
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: Contador

Cita:
Iniciado por Vun Ver Mensaje
¿quieres controlar digamos los minutos exacto que un usuario esta logueado en tu web? ¿e ir restando dichos minutos a los 3 dias de premium que tenga? aclarame y veo se te puedo ayudar con algo

Hola!

Veras , la situacion es la siguiente:

Tengo una web , donde los usuarios , pueden hacerse cuentas premium , y las cuentas premium tienen acceso a diferentes opciones en la web , toda la question de permisos premium ya la tengo programada , y se controla por la variable "premium" si esta variable es 1 tienes acceso a las partes premium de la web , si es 0 no las tienes , lo que realmente necesito , es que al recibir el premium , el usuario tenga un tiempo determinado de premium digamos que podria resumirse todo en 4 variables : premium|tiempo_premium|inicio|fin , la particularidad que tiene , es que los usuarios podran activar y desactivar su premium , es decir por ejemplo quieres ver una pelicula online que es solo para premium , entonces activas tu premium y tienes acceso a ella , despues de verla lo desactivas para que no pase el tiempo de premium tontamente. Pero ahi esta el problema , si es un tiempo fijo , bastaria con poner fecha_inicio y fecha_fin , y cuando fecha_fin = fecha_actual , que cambie el valor de premium a 0 , pero al ser de activacion y desactivacion por voluntad del usuario , lo que deberia hacer el script es fecha_fin-fecha_inicio y el valor del tiempo trascrurrido restarlo de tiempo_premium , digamos que para facilitarlo todo , el tiempo seria en segundos.



Tambien otra idea que se me ha ocurrido es que en vez de que ponga fechas , directamente , sume segundos en un campo de la base de datos , y que luego reste ese tiempo del tiempo_premium , y lo ponga a 0

Lo malo es que no se por donde empezar , estoy muy perdido , si me pudieses ayudar te lo agradeceria.
  #4 (permalink)  
Antiguo 19/02/2010, 11:19
 
Fecha de Ingreso: diciembre-2008
Mensajes: 454
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: Contador

las ideas tuyass son buenas, me gustan.

Aqui te dejo otra idea.

porque no creas dos campos de fecha_inicio | fecha_termino y cuando el usuario acceda y hagas el recnocimiento aprovechas y verificas estas fechas

me entiendes??
  #5 (permalink)  
Antiguo 19/02/2010, 11:32
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Contador

Lo que quieres entonces es contar "tiempo", no intervalos. Por lo tanto no tienes más opción que contarlo así, como tiempo: definir una unidad temporal y contar según eso. Yo definiría minutos, y por cada minuto transcurrido en modo "premium" actualizaría la información. Puedes hacerlo vía AJAX; el problema es que tienes que ingeniártelas para que el usuario no desactive javascript, o que si lo hace no tenga acceso al servicio premium. ¡Suerte!
  #6 (permalink)  
Antiguo 19/02/2010, 15:08
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: Contador

Cita:
Iniciado por dggluz Ver Mensaje
Lo que quieres entonces es contar "tiempo", no intervalos. Por lo tanto no tienes más opción que contarlo así, como tiempo: definir una unidad temporal y contar según eso. Yo definiría minutos, y por cada minuto transcurrido en modo "premium" actualizaría la información. Puedes hacerlo vía AJAX; el problema es que tienes que ingeniártelas para que el usuario no desactive javascript, o que si lo hace no tenga acceso al servicio premium. ¡Suerte!
Justo pensé lo mismo, eso de que se vaya gastando el tiempo real es jodido, quizas con algo de flash y actionscript, que pudieras unir la pelicula y el script que controla el estado en un mismo archivo flash..... porque manejando peticiones con ajax/javascript el usuario podria poner una pelicula a ver, y al minuto desactivar todo y el server cree que el usuario se ha ido y la peli cargando....
  #7 (permalink)  
Antiguo 20/02/2010, 12:24
 
Fecha de Ingreso: noviembre-2009
Mensajes: 76
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: Contador

Bueno al final lo he solucionado de otra manera , he puesto que sea por creditos el premium , es decir el premium son x creditos , y cada pelicula valga x creditos , cuando quieres ver la pelicula , te cobra los creditos por adelantado , asi lo he visto mejor.


Pero ahora , tengo un problema bastante parecido , en un juego browser que estoy desarrollando , solo que aqui no es premium , aqui es proteccion de ataques , ya he puesto la condicion de que no se pueda atacar a alguien si tiene proteccion de ataques asi:


metemos el valor en la variable

Código PHP:
$proteccionsql mysql_query("SELECT proteccion FROM users WHERE id={$enemyrow['id_owner']}");
$proteccioncond=mysql_fetch_array($proteccionsql);
$proteccion=$proteccioncond['proteccion']; 

hacemos la consulta

Código PHP:
if($enemyrow['id_owner'] != '' and $_POST['mission'] == and $proteccion == 1){
    
message("<font color=\"lime\"><b>Tiene proteccion contra ataques!!!","Ataque Imposible","man.".$phpEx,2);


El problema que tengo , es casi lo mismo , que la prteccion de ataques tenga cierto tiempo , y que se pueda activar y desactivar , por lo tanto la activacion supongo que deberia ser algo asi:

Código PHP:
$tiempodispsql mysql_query("SELECT tiempo_disponible FROM users WHERE id={$user['id']}");
$tiempodisp=mysql_fetch_array($tiempodispsql);
$tiempodispvar=$tiempodisp['tiempo_disponible'];

if(
$tiempodispvar <= 0){message("No dispones de tiempo de proteccion contra ataques.");}
else {
mysql_query("UPDATE users SET proteccion='1' WHERE id={$user['id']}");
mysql_query("UPDATE users SET fecha_inicio='now()' WHERE id={$user['id']}");
mysql_query("UPDATE users SET fecha_fin='now()+$tiempodispvar' WHERE id={$user['id']}"); 
y luego en el index.php ponemos la comprobacion

Código PHP:
$fechainisql mysql_query("SELECT fecha_inicio FROM users WHERE id={$user['id']}");
$fechaini=mysql_fetch_array($fechainisql);
$fechainivar=$fechaini['fecha_inicio'];

$fechafinsqlmysql_query("SELECT fecha_fin FROM users WHERE id={$user['id']}");
$fechafin=mysql_fetch_array($fechafinsql);
$fechafinvar=$fechafin['fecha_fin'];

$tiempototal = ($fechafin $fechaini) ;

if(
$tiempototal <=){mysql_query("UPDATE users SET proteccion='0' WHERE id={$user['id']}");




Es solo una idea , si alguien cree que hay una forma mejor de hacerlo , que lo diga please.

Etiquetas: contador
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 13:43.