Foros del Web » Programando para Internet » PHP »

Controlar envio de emails con sesiones

Estas en el tema de Controlar envio de emails con sesiones en el foro de PHP en Foros del Web. Hola a todos!! Estoy haciendo una página personal, que tiene un apartado para enviarme un email al correo a través de un formulario (así evito ...
  #1 (permalink)  
Antiguo 22/06/2007, 03:35
 
Fecha de Ingreso: octubre-2006
Mensajes: 42
Antigüedad: 17 años, 6 meses
Puntos: 0
Controlar envio de emails con sesiones

Hola a todos!!

Estoy haciendo una página personal, que tiene un apartado para enviarme un email al correo a través de un formulario (así evito colgar mi dirección e-mail en la página).

El caso es que quiero poner un límite de emails por tiempo. Es decir que se pueden enviar por ejemplo 2 emails, pero luego hay que esperar al menos una hora para poder volver a enviar otros dos emails.

Lo hago mediante sesiones. Pero he comprobado que si desabilito las cookies en mi navegador no hay límite de emails... Por lo que todo mi gozo en un pozo.

¿Alguna sugerencia?

Un resumen del código:
Código PHP:
<?php
/* recojo los datos y inicializo variables*/
        
$nombre=$_POST['nombre'];
        
$email=$_POST['email'];
        
$asunto=$_POST['asunto'];
        
$mensaje=$_POST['mensaje'];
        
$error=0/* No hay error*/
        
$_SESSION['eviado']=0/*no se ha enviado ningun mensaje*/
                
/*Quito código html y php*/
        
$nombre=strip_tags($nombre);
        
$email=strip_tags($email);
        
$asunto=strip_tags($asunto);
        
$mensaje=strip_tags($mensaje);
        
        
session_register("numeromails");
        
session_register("nombre");
        
session_register("email");
        
session_register("asunto");
        
session_register("mensaje");
        
session_register("error");
        
session_register("enviado");
        
session_register("fecha-envio"); /*fecha del último envio*/
        
session_register("fecha-nuevo-envio"); /*fecha en la que se puede volver a enviar emails*/
        
/*Si no ha habido ningún envio, la inicializo a 0*/
        
if (!isset($_SESSION['fecha-envio'])) {
            
$_SESSION['fecha-envio'] =0;
        }
        
$hoy=time();
/*recojo la fecha en la que se podrá volver a enviar*/
        
$hasta=$_SESSION['fecha-envio']+$TIEMPOESPERA;
        
$_SESSION['fecha-nuevo-envio']=$hasta/*Para mostrar la fecha en otra página*/
        
        
$pasado=$hoy>=$hasta

/*si la fecha del proximo envio es menor que la de hoy, se resetea en numero de emails enviados*/
        
        
if (!isset($_SESSION['numeromails']) or $pasado){
            
$_SESSION['numeromails']=0;
        }
        
        if (
$_SESSION['numeromails']>$MAXIMOEMAILS){
            
$error=2;    
        }
        }
En este trozo de código recojo los datos, en la sesión se almacena cuando fue la fecha del último envio, si no hubo envio, la fecha se pone a 0. Lo mismo con el número de emails que se han enviado, se ponen a cero cuando ya se puede hacer un nuevo envio.

Y cuando envio el email compruebo que el error sea 0 (hay más comprobaciones):
Código PHP:
$_SESSION['numeromails']++;
            
mail("[email protected]","PPersonal: ".$asunto$mensajecompleto);
            
$_SESSION['enviado']=1;    
            
$_SESSION['fecha-envio']=time(); 
Gracias por dejar que os aburra jeje
  #2 (permalink)  
Antiguo 22/06/2007, 03:51
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: Controlar envio de emails con sesiones

Hola, y si en lugar de guardar el dato time en una cookie, la guardas en un campo de la base de datos, y haces la comparación desde la misma y te evitas el uso de las cookies.

SALUDOS
Ruymán Trujillo
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #3 (permalink)  
Antiguo 22/06/2007, 04:04
 
Fecha de Ingreso: octubre-2006
Mensajes: 42
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Controlar envio de emails con sesiones

Si lo he pensado, y realmente no se si es una opcion que pueda hacer.

La página está alojada en el servidor de la universidad, por tanto en principio creo que solo tenemos php, no mysql.

Luego en todo caso tendría que utilizar access y no lo he usado nunca asi que creo que puede ser más complicado aun.

Lo que si tendría es oracle, pero en otro servidor de la universidad, pero no se si se podria acceder desde la página, debido a que tiene algunas restricciones, asi que casi es otra solución más complicada.
  #4 (permalink)  
Antiguo 22/06/2007, 04:19
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: Controlar envio de emails con sesiones

Hola,

Otra opción poco usual sería almacenarlo en un TXT o archivo plano en el servidor con la información del usuario y la hora correspondiente.

SALUDOS
Ruymán Trujillo
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #5 (permalink)  
Antiguo 22/06/2007, 04:34
 
Fecha de Ingreso: octubre-2006
Mensajes: 42
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Controlar envio de emails con sesiones

Si, lo voy a mirar. Gracias!!
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 18:26.