mailform.php が毎日 23 時間に使用されることを理解しているので、本当ですか?
いいえ。必要な0 23 * * * /path/to/script
ので、毎日午後 11 時に実行されます。
この MySQL は、2 週間前に登録したユーザーのみを取得します (したがって、regDate はちょうど 2 週間前でした)。
SELECT *
FROM `Your_Users_Table_Name`
WHERE `regDate` = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL -2 WEEK), '%Y-%m-%d')
次に、cronスクリプトでそのクエリを使用してユーザーを取得し、行をループしてリマインダーやコードなどを送信できます。
おおまかな例
$sql = "
SELECT *
FROM `Your_Users_Table_Name`
WHERE `regDate` = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL -2 WEEK), '%Y-%m-%d')
";
if (false === ($result = mysqli_query($connection, $sql)) {
trigger_error('there was a query/sql problem', E_USER_ERROR);
}
if ($result->num_rows > 0) {
// ooo we found users from two weeks ago.
while ($row = mysqli_fetch_row($result)) {
// send email to user
mail($row['email'], 'The email Subject', 'The email message body');
// update the users table and set remind = 1
if (false === (mysqli_query($connection, "UPDATE `Your_Users_Table_Name` SET `remind` = 1 WHERE `email` = '".$row['email']."'"))) {
trigger_error('there was a query update problem!', E_USER_ERROR);
}
// sleep for 2 second so not to hammer mail systems and get flagged as abusive/spammer
sleep(2);
}
mysqli_free_result($result);
}
else {
// nothing to do today
}