ребята, я знаю, что это, вероятно, получил ответ, но я просто не могу понять, что мне нужно, чтобы сделать это.
У меня есть PHP-скрипт на моем сервере, который должен отправлять электронную почту, когда таймер заканчивается.
Информация, отображаемая в таймере, не может измениться, поскольку у него есть несколько скриптов, которые читают из него.
Проблема в том, что я не могу ограничить электронную почту одним … он посылает сотни.
Я попытался добавить переменную, которая отключает функцию if, чтобы предотвратить повторный запуск электронной почты, но она просто не будет работать.
Действительно нуждается в некоторой помощи.
<?php
$curr = time();
$date = strtotime("Dec 08, 2014 7:43PM");
$diff = $date - $curr;
$diff_dd = floor($diff / 86400);
$diff %= 86400;
$diff_hh = floor($diff / 3600);
$diff %= 3600;
$diff_mm = floor($diff / 60);
$diff %= 60;
$diff_ss = $diff;
$all = diff_dd + $diff_hh + $diff_mm + $diff_ss;
echo sprintf("%02d%02d%02d%02d",$diff_dd,$diff_hh,$diff_mm, $diff_ss);
if($diff == 0)
{
$Email --;
$to = "[email protected]";
$subject = "text";
$txt = "text";
$headers = "From: [email protected]" . "\r\n" .
"CC: [email protected]";
mail($to,$subject,$txt,$headers);
}?>
Похоже, вы установили diff
к разнице во времени между какой-то датой и временем, затем измените это значение, вычисляя дни, часы, минуты и т. д., затем проверьте, diff
это ноль. Когда вы делаете тест diff
это количество секунд, а не исходная разница. Похоже, что электронное письмо будет отправлено каждую минуту.
вы можете просто изменить $ diff после его отправки, поэтому в условии if просто добавьте $diff= -1;
или просто сбросьте время, или в условии if просто измените выражение. или даже установить его на 1 вместо 0.
вам просто нужно остановить цикл … я думаю, что если число отрицательное, оно все равно вернет 0 (произошло несколько раз, но не уверен, где), поэтому убедитесь, что вы остановили его и не полагаетесь на его отрицательное значение.