Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: mark182 en 30 Agosto 2010, 21:45 pm



Título: Envio de mails cada cierto tiempo (No Spam)
Publicado por: mark182 en 30 Agosto 2010, 21:45 pm
Buenas, tengo usuarios registrados en mi web y una base de datos que tiene eventos con su correspondiente dia. Queria saber si hay forma que llegado ese dia (o un par de horas antes a ese dia), se envie un mail automaticamente con el evento que le corresponde a ese dia. Hay forma de hacerlo?

Gracias.


Título: Re: Envio de mails cada cierto tiempo (No Spam)
Publicado por: ~ Yoya ~ en 30 Agosto 2010, 21:47 pm
Toma el dia y hora, y compárala con el dia y hora que quieres que se envie, si la condición es correcta, ps envia el mail....



Título: Re: Envio de mails cada cierto tiempo (No Spam)
Publicado por: mark182 en 30 Agosto 2010, 22:02 pm
Si, ya lo habia pensado comprar la fecha del servidor con la fecha del evento, pero como hago un scrip que este comprobando todo el tiempo y automaticamente la fecha y hora del servidor?


Título: Re: Envio de mails cada cierto tiempo (No Spam)
Publicado por: Shell Root en 30 Agosto 2010, 22:24 pm
Yo haría algo así,
Esto para que se refresque la pagina, cada x tiempo.
Código
  1. <meta http-equiv='refresh' content='5;url=index.php'>

y esto, para agregar minutos e identificar a que hora se enviará el proximo correo,
Código
  1. function addMinuts($sMins){# Function to add minutes to the current time
  2.  $sAddition = strtotime($sStart .' + '.$sMins.' mins');
  3.  $sTime = (date('H:i:s', $sAddition));
  4.  return $sTime;
  5. }
  6.  
  7. echo '<b>Fecha actual:</b> '.date('H:i:s');
  8. echo '<br>';
  9. echo '<b>Proximo correo:</b> '.addMinuts(60);

PoC:
Código:
Fecha actual: 16:23:48
Proximo correo: 17:23:48

Nota: Ahora solo te falta ponerle la condición de la hora en la que quieres enviar el correo.


Título: Re: Envio de mails cada cierto tiempo (No Spam)
Publicado por: mark182 en 30 Agosto 2010, 23:01 pm
Gracias por su respuestas, pero tengo una duda:

Citar
<meta http-equiv='refresh' content='5;url=index.php'>

con este meta el usuaria no tendria que estar 5 segundos para actualizar la web? o no estoy entendiendo muy bien el funcionamiento de este meta?

Yo lo que quiero es que sin que ningun usuario, ni el administrador del sitio ingresen a la web, el sistema chekea solo si es el dia para enviar el mail o no. Gracias nuevamente.


Título: Re: Envio de mails cada cierto tiempo (No Spam)
Publicado por: Shell Root en 30 Agosto 2010, 23:03 pm
mmm Sí, tiene que estar el usuario en la pagina. Pues, entonces realiza una aplicación de escritorio, xD. .NET, por ejemplo.


Título: Re: Envio de mails cada cierto tiempo (No Spam)
Publicado por: ~ Yoya ~ en 30 Agosto 2010, 23:12 pm
Hice un script similar, la idea de refrescar la pagina es muy buena xD....

time_script.php
Código
  1. <?php
  2.  
  3. class ejecucion {
  4. private $validar;
  5. private $seg;
  6. private $archivo;
  7.  
  8. public function refresh($seg, $archivo){
  9. $this->seg = $seg;
  10. $this->archivo = $archivo;
  11. }
  12.  
  13. public function time_script($mes,$dia,$hora,$min){
  14. $fecha = time ();
  15. if(date('n',$fecha) == $mes && date('j',$fecha) == $dia && date('H',$fecha) == $hora && date('i',$fecha) == $min){
  16. $this->validar = true;
  17. return $this->validar;
  18. }else{
  19. sleep($this->seg);
  20. header ("Location: ".$this->archivo);
  21.  
  22. }
  23. }//Fin del metodo time_script
  24. }//Fin de la clase ejecucion
  25. ?>

mail.php

Código
  1. <?php
  2. include('time_script.php');
  3.  
  4. $new = new ejecucion;
  5. $new->refresh(5, 'mail.php');//Refresco cada 5 segundo el archivo mail.php
  6. $resultado = $new->time_script(8,30,17,11);//Mes, Dia, hora y minuto
  7. if($resultado){
  8. echo "Enviando correo";
  9. }
  10.  
  11. ?>
  12.  
  13.  


Citar
Yo lo que quiero es que sin que ningun usuario, ni el administrador del sitio ingresen a la web, el sistema chekea solo si es el dia para enviar el mail o no. Gracias nuevamente.

Usa cron...
http://es.wikipedia.org/wiki/Cron_(Unix)


Título: Re: Envio de mails cada cierto tiempo (No Spam)
Publicado por: mark182 en 31 Agosto 2010, 01:33 am
Gracias ~ Yoya ~ por los script y voy a averiguar un poco mas acerca del cron, que algo habia escuchado. Si me sale lo que quiero hacer despues lo pongo para sumar al foro xD


Título: Re: Envio de mails cada cierto tiempo (No Spam)
Publicado por: mark182 en 31 Agosto 2010, 01:50 am
~ Yoya ~  estuve mirando lo del cron job y esta bueno, pero no hace lo que quiero. Ya que al cron le tenes que especificar una fecha que siempre sera la misma para ese archivo (el .php que contiene el script) y yo lo que quiero es que se ejecute el script segun el registro de fecha que tengo en la BD.


Título: Re: Envio de mails cada cierto tiempo (No Spam)
Publicado por: ~ Yoya ~ en 31 Agosto 2010, 02:19 am
ps que el cron active mi script y haci mi script se mantiene ejecutandose...


Título: Re: Envio de mails cada cierto tiempo (No Spam)
Publicado por: mark182 en 31 Agosto 2010, 03:39 am
ok lo probare, el hosting no me eliminara el script ni nada por el estilo por estar ejecutandose a cada rato no?


Título: Re: Envio de mails cada cierto tiempo (No Spam)
Publicado por: ~ Yoya ~ en 31 Agosto 2010, 03:51 am
Ps nose que decirte... A ver si otro que sepa mas del tema te responde... Ps yo creo que no xD