按要求进行。
基本上它更多的是逻辑/工作流程问题。
在您的情况下,您希望在 3 天后以及之后每 3 天警告用户他们的个人资料不完整。
因此,首先您需要某种方法来检测他们的个人资料不完整,在这种情况下,我将使用标志字段 IsComplete 0/1。默认为 0(不完整)。我们还想知道用户注册的日期,因此我们将使用一个简单的 mysql 时间戳字段填充 yyyy-mm-dd H:i:s 格式的 mysql 日期,我们还想知道用户的日期是最后一封电子邮件通知。为此,我们这次将使用另一个 mysql 字段,格式相同的日期时间字段 yyyy-mm-dd H:i:s。
所以我们的用户 db 现在看起来像这样(注意 mysql 语法不正确)
IsComplete TINYINT 1 DEFAULT 0,
SignupDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
LastWarnDate DATETIME DEFAULT NULL
最后警告日期的 NULL 很重要!
在您的前端用户个人资料编辑/更新页面上,您只需将以下内容添加到保存位中
if (PSEUDO_CODE_ALL_FIELDS_ARE_COMPELTED==TRUE) {
"UPDATE tblusers SET IsComplete=1";
}
现在我们已经解决了这个问题,让我们看看基本逻辑。
滴灌邮件程序只需每天检查一次您的数据库以了解待处理的操作,然后根据需要发送通知电子邮件。我们可以通过在 linux crond 上运行的基本无头 cron 任务来实现这一点。您可以在 google 上找到通过 cron 运行 php 脚本的示例,几乎第一个响应正是您想要的。我不会深入讨论,而是更深入地了解实际的 cron 脚本。
所以现在我们知道用户何时注册您的网站,我们知道他们的个人资料是否完整,以及我们上次警告他们的时间。
我们的 cronjob 既好又简单,它所要做的就是检查个人资料是否完整,如果没有,然后检查日期并发送电子邮件。
$query = "SELECT EmailAddress,SignupDate,LastWarnDate FROM tblusers WHERE IsComplete=0"; //we don't need to bring back the completed users so for speed we look at uncomplete only
if (strlen($query->LastWarnDate) < 5) { // this is a little nasty but will work NULL is in the db field which returns 4 characters on strlen so a quick check that its < 5 means that we don't have a proper date in the field. There's better ways of doing this i'm being brief
// ok no last warn date so check sign up date vs now
if (DATE_DIFF($query->SignupDate,now()) >=3) {
//3 days or longer since signups so do first warn
"update tblusers SET LastWarnDate=NOW()";
mail(); //standard php mail function for sending email you can use swiftmail or another component if you like
} // its been less than 3 days so do nothing no need for an else
} else {
//we have a last warn date so check warn date vs now
if (DATE_DIFF($query->LastWarnDate,now()) >=3) {
//3 days or longer since last warn date so update last warn date to now and email
"update tblusers SET LastWarnDate=NOW()";
mail(); //standard php mail function for sending email you can use swiftmail or another component if you like
} //its been less than 3 days so do nothing no need for an else
}
这就是非常基本的逻辑流程和示例无效的 php,但您应该能够非常容易地将最终解决方案基于代码。
将 cron 作业安排在每晚午夜运行,您就完成了。