bueno, paso a comentarles mi problema.
El tema es que como me gusta tener controlada las cosas, en mi bd llevo un control de todos los emails que se envian los usuarios, en esta base, guardo la fecha (dia y hora) entre otras cosas, pero el problema viene cuando alguien de otro lugar (Pais) con diferente zona horaria envia algun email, ¿porque? porque me guarda la fecha que el tiene en su computadora, por lo cual me esta generando un par de errores, ya que como habran visto en otro post, hago un envio de email automatico cada hora (El cual me resulta necesario hacer), y por ende necesito saber la hora REAL u OFICIAL. Por ejemplo: en la bd tengo emails que se enviaron a las 14 horas, entonces a las 15 horas debo volver a enviar, pero si un usuario entra dede otro pais y envia emails, se guarda la fecha del usuario (Ej: 10hs) entonces se me arma el quilombooo!
ajaja
les muestro de que se trata todo esto
Esto es basicamente el archivo1.php
Selecciono el ultimo email enviado con el asunto de invitacion:
Código PHP:
$sql="SELECT MAX(clave) FROM `email` WHERE asunto='Invitacion' ORDER BY clave DESC";
$res=mysql_query($sql) or die (mysql_error());
$ultimo=mysql_fetch_array($res);
echo"<br />Clave del ultimo email de invitacion: ".$ultimo['0']."<br />";
$last=$ultimo['0'];
Código PHP:
$sql2="SELECT fecha FROM `email` WHERE clave=$last";
$res2=mysql_query($sql2) or die(mysql_error());
$ultimo2=mysql_fetch_array($res2);
echo "Fecha del ultimo email de invitacion: ". $ultimo2['fecha']."<br/>";
$fecha1=$ultimo2['fecha'];
Luego busco el ultimo email con cualquier asunto
Código PHP:
$sql3="SELECT MAX(clave) FROM `email` ORDER BY clave DESC";
$res3=mysql_query($sql3) or die (mysql_query());
$ultimo3=mysql_fetch_array($res3);
echo "Clave del ultimo email general: ".$ultimo3['0']."<br />";
$last2=$ultimo3['0'];
Código PHP:
$sql4="SELECT fecha FROM `email` WHERE clave=$last2";
$res4=mysql_query($sql4) or die(mysql_error());
$ultimo4=mysql_fetch_array($res4);
echo "Fecha del ultimo email general: ". $ultimo4['fecha']."<br/>";
$fecha2=$ultimo4['fecha'];
pongo la fecha1 en formato mktime()
$fecha1 es la hora el ultimo email con motivo invitar usuarios
Código PHP:
$dia1=$fecha1['0'].$fecha1['1'];
$mes1=$fecha1['3'].$fecha1['4'];
$anio1=$fecha1['6'].$fecha1['7'].$fecha1['8'].$fecha1['9'];
$hora1=$fecha1['11'].$fecha1['12'];
$minutos1=$fecha1['14'].$fecha1['15'];
echo "Fecha 1 es la del email con asunto invitar usuarios: ".$dia1."/".$mes1."/".$anio1." ".$hora1.":".$minutos1."<br/>";
$algo1=mktime($hora1,$minutos1,"00",$mes1,$dia1,$anio1);
echo "Fecha 1 en mktime(): ".$algo1."<br>";
//$fecha2 es la hora el ultimo email general
Código PHP:
$dia2=$fecha2['0'].$fecha2['1'];
$mes2=$fecha2['3'].$fecha2['4'];
$anio2=$fecha2['6'].$fecha2['7'].$fecha2['8'].$fecha2['9'];
$hora2=$fecha2['11'].$fecha2['12'];
$minutos2=$fecha2['14'].$fecha2['15'];
echo "Fecha 2 es la del ultimo email general: ".$dia2."/".$mes2."/".$anio2." ".$hora2.":".$minutos2."<br/>";
$algo2=mktime($hora2,$minutos2,"00",$mes2,$dia2,$anio2);
echo "Fecha 2 en mktime(): ".$algo2;
luego saco la hora actual y la transformo a mktime()
Código PHP:
$fecha3=date("d/m/Y H:i");
echo "<br />Hora actual: ".$fecha3;
$dia3=$fecha3['0'].$fecha3['1'];
$mes3=$fecha3['3'].$fecha3['4'];
$anio3=$fecha3['6'].$fecha3['7'].$fecha3['8'].$fecha3['9'];
$hora3=$fecha3['11'].$fecha3['12'];
$minutos3=$fecha3['14'].$fecha3['15'];
$fechamktime3=mktime($hora3,$minutos3,"00",$mes3,$dia3,$anio3);
echo "<br />Hora actual en mktime() ".$fechamktime3;
Código PHP:
$fechamktime4=mktime($hora3-"1",$minutos3-"1","00",$mes3,$dia3,$anio3);
echo "<br />Hora actual menos 1 hora ".$fechamktime4;
echo "<br />".date("d/m/Y H:i", $fechamktime4);
Código PHP:
$total=$fechamktime3-$algo1;
echo "<br />TOTAL: ".$total;
if($total >= "3660"){
echo "<br />Paso mas de 1 hora";
Código PHP:
$sql5="SELECT * FROM `email` WHERE clave BETWEEN $last AND $last2";
$resultado5=mysql_query($sql5) or die (mysql_error());
$counter=mysql_num_rows($resultado5);
echo "<br />Contador: ".$counter;
$counter3 es el resultado que da la cantidad de emails que puedo enviar.
$counter2 son el total de emails que permite el hosting, a esto se le restan los ya enviados y el resultado es $counter3
Código PHP:
$counter2=180;//180 emails con un maximo de 200 por hora!
$counter3=$counter2-$counter;
echo "<br />last: ".$last;
echo "<br />last2: ".$last2;
echo "<br />counter: ".$counter;
echo "<br />counter2: ".$counter2;
echo "<br />counter3: ".$counter3;
Código PHP:
$busc="SELECT * FROM enviaemail ORDER BY id ASC";
$resulta=mysql_query($busc)or die("error");
$contador=1;
while($resulta2=mysql_fetch_array($resulta) and $contador <= $counter3){
$email=$resulta2['email'];
enviar($email);
//echo "<br />".$contador." Enviado a: ".$email;
$id=$resulta2['id'];
eliminar($id);
$contador++;
}
y para enviar el email utilizo
Código PHP:
if(mail($to, $subject, $message, $header)){
$fecha=date("d/m/Y H:i");
$motivo="Invitar";
$mensaje="Envio de email ";
$sql="INSERT ignore INTO email (de,para,asunto,mensaje,fecha) VALUES ('$subject','$to','$motivo','$mensaje','$fecha')";
mysql_query($sql) or die("<div align=center><font color=\"#FF0000\">Error:</font> Hubo un error agregando algunos datos");
}
alguna idea de lo que puede ser?
si no me explique bien pregunten!
un abrazo