Borisigna nos enseña a hacer un webgame

ATENCIÓN: Nos mudamos a http://juegodenavegador.host22.com/index.php


No estás conectado. Conéctate o registrate

Eliminar usuarios si no han activado su cuenta en 7 días

Ir abajo  Mensaje [Página 1 de 1.]

spanisher


Hola, mis usuarios ya se pueden registrar, al hacerlo reciben el mail con el enlace para acticar su cuenta y al clicar se les envía a la siguiente página:

activacion.php

<?php
$usuario = $_GET['usuario'];
$codigo_unico_usuario = $_GET['cod'];

require('seguridad.php'); //está la conexxión a la BBDD
conectar_base_datos();
mysql_query("UPDATE usuarios SET activado='SI' WHERE usuario = '$usuario' and cod_unico_usuario = '$codigo_unico_usuario'");

//comprovamos si se ha actualizado la activación (campo validación en la BBDD)
if (mysql_affected_rows() > 0){
echo "<center><h3>Tu cuenta se ha activado correctamente</h3><a href='index.php'>Volver</a></center>";
} else {
echo "<br /><center><h3>Tu cuenta no ha sido activada, posiblemente haya caducado el tiempo de activación. <br /> Regístrese de nuevo en el y active su cuenta antes de 7 días</h3><a href='index.php'>Volver</a></center>";
}
?>

En esta página lo que se hace es cambiar a "SI" el estado de "activado" (validado en vuestro caso). Esto se hace si el usuario y el código de activación del usuario están en la BBDD, si no no se hace.

Tened en cuenta que mi campo "activacion" de la BBDD en la vuestra se llama validacion si habéis estado siguiendo los ejemplos de nuestro amigo Borisigna, yo lo he cambiado por manías que tengo y ya pensando en mi posible de navegador jeje...

Sigo en otro post para que este no se haga muy largo.



Última edición por spanisher el Lun Abr 12, 2010 6:28 pm, editado 2 veces

spanisher


Pues lo que decía, estaría bien poder eliminar usuarios si no se han activado en x días.

Yo lo he hecho de la siguiente manera:

Mi archivo de conexión a la BBDD (que cada uno luego lo adapte a la conexión de los ejemplos de Borisigna)

<?php
// mysqli utiliza un nuevo protocolo de conexión mucho más rápido. (desde la v.4 de MySQL)

conexion_bd.inc.php

function abrirConexion(){
// conexión BD LOCAL
$db_conn = new mysqli('localhost', 'root', '', 'juegodenavegador');

// comprovamos que ha conectado correctamente
if (mysqli_connect_errno()) { //si hay código de error
echo 'No se puede conectar con la BD: '.mysqli_connect_error(); //devuelve descripción del error
exit();
} else {
return $db_conn;
}
}
?>

Archivo que se encarga de borrar los usuarios que no han activado su cuenta en x días:

borra_no_activos.php

<?php
require_once('conexion_bd.inc.php');

$diasCaducaActivacion = 7; //días límite sin activar la cuenta

//abrimos conexión
$bd_conn = abrirConexion();

//consulta usuarios que no han activado cuenta por mail
$query = $bd_conn->query("SELECT usuario, email, fecha_ingreso, datediff(curdate(), fecha_ingreso) AS diasSinActivar FROM usuarios
WHERE activado='NO'
AND datediff(curdate(), fecha_ingreso) >=".$diasCaducaActivacion) or die ("error SQL: ".mysqli_error());

//mostramos usuarios que vamos a eliminar
while ($resultado = $query->fetch_object()) {
echo ("usuario: ". $resultado->usuario."<br />");
echo ("email: ". $resultado->email."<br />");
echo ("fecha ingreso: ". $resultado->fecha_ingreso."<br />");
echo ("Días sin activar: ". $resultado->diasSinActivar."<br />");
}

//eliminamos usuarios que no han activado cuenta por mail
$bd_conn->query("DELETE FROM usuarios
WHERE activado='NO'
AND datediff(curdate(), fecha_ingreso) >=".$diasCaducaActivacion) or die ("error SQL: ".mysqli_error());

//mostramos número de registros eliminados (si los hay)
$eliminados = $bd_conn->affected_rows;
if ($eliminados > 0){
echo $eliminados." registros eliminados";
} else {
echo "No hay registros para eliminar";
}

//cerramos resultado de la consulta select
$query->close();
//cerramos conexión
$bd_conn->close();
?>


Lo que hace este último archivo.php es mostrar los usuarios que no se han registrado y después los borra de la BBDD

Así cuando un usuario se registra y no activa la cuenta no hace falta que esté toda la vida en la BBDD Smile

Luego falta la manera en que este código se ejecute automáticamente, que por lo que me he informado, en servidores de windows no se puede hacer, con linux es muy fácil con el comando "cronjob".

En windows hay que utilizar el programador de tareas. Crear una tarea automatizada que llame cada día al archivo "borra_no_activos.php", o lo podemos ejecutar nosotros de vez en cuando desde una sección de administración del juego que creemos.

Espero que os sirva el código Wink



Última edición por spanisher el Lun Abr 12, 2010 6:28 pm, editado 1 vez

Rvega_91


Admin
Para ejecutarlo automáticamente, si tienes un host con esa función es facil, supongo.

000WebHost incluye la función de un cronjob, fijate bien en el Cpanel que lo encontrarás.

people=shit

avatar
Shocked Shocked Shocked a la tarde lo pruevo Wink gracias

http://hazzaft.comuv.com/

spanisher


Es que yo tengo un servidor de pago, y funciona sobre windows.

Tengo un acuenta de 000WebHost pero la uso sólo para hacer pruebas.

De todas maneras me fijaré si mi servidor tiene ese servicio.

Yo utilizo www.aruba.it (es de Italia), los precios son de escándalo. Mientras uno normal te cuesta de 40 a 60€ al mes, allí pagas unos 40 durante todo el año Smile

memoadian


cuando trabajo con php y mysql, suelo usar un sevidor linux, eso por lo menos se recomienda, dicen los que saben, para windows conviene trabajar con ASP, pero ya será de cada quien.

por cierto, buen sricpt, thanks.

spanisher


Gracias por la info!

En aruba.it tengo la posibilidad de contratar también un servidor linux, pero no se si cambiará mucho del de windows, a ver si lo cambio y luego me voy a encontrar que no se como fuciona jeje...

¿Alguien sabe que diferencias hay a la hora de administrarlo?

memoadian


pues eso, la principal diferencia es que los servidores de windows "pueden" ser incompatibles con php y mysql pero no necesariemente, de ahi en fuera, con respecto a panel de control, gestion de archivos etc. no hay mayor problema.

spanisher


Ok, pero por ser incompatibles con windows php y mysql... nunca se me ha dado el caso.

Pero solo por el comando cronjobs vale la pena pasarse al servidores basados en linux Smile

Saludos!

Rvega_91


Admin
En el host ese que has puesto de Aruba.it está todo bastante barato, es mas, 20,66€ un host linux durante un año + el dominio.

Ya que lo tienes contratado, a ti te va bien?

spanisher


Ya te decía yo que está tirado de precio jeje...

Pues la verdad es que si me va bien, tengo unas cuantas webs alojadas desde hace unos 6 años. Lo que pasa es que al ser Italianos a veces te llega algo de info en su idioma.

Y quizá no tienen muy ordenadas las opciones, pero una cosa va por la otra (el precio)

Además no hay cpanel, si no su propio panel, pero bueno, si quieres algo económico y profesional vale la pena.

Yo no se si aguantará una BBDD con 1000 o 2000 usuarios xD pero bueno, no se me ha dado el caso aún Wink

people=shit

avatar
yo nunca probe el de windows bah.. nunca tube un host pago y los que use fueron siempre free y linux...

-----

ablando de paneles vean el de 120mb.com es horrible Mad



para mi gusto no se ustedes No

http://hazzaft.comuv.com/

Contenido patrocinado


Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.