我如何为经过验证的行为电子邮件编写cron作业脚本&;丢失密码计时器


How do I write a cron job script for verified act emails & lost passwords timer?

如何为经过验证的行为电子邮件编写cron&丢失密码计时器?

我在Linux服务器上使用apache,带有mysql数据库和php代码。在数据库中,除了帐户的常用字段外,我还验证了(布尔值为1表示是,0表示否)、act_key(varchar(50)用于向用户发送电子邮件,并链接到用于验证电子邮件或忘记密码的特殊页面)、time(datetime)和temp(布尔值1表示忘记密码,0表示不忘记密码)。

当用户创建帐户时,我将新动作中验证的设置为0,时间=当前日期&time,temp=0并生成我在电子邮件中发送给他们的act_key。如果他们试图登录,但没有验证,那么他们就无法登录。如果他们点击链接并在一小时内转到某个页面,我将验证设置为1,他们就可以登录。如果他们在一个小时后点击链接,我会告诉他们密钥无效,帐户已被删除,并创建一个新帐户。

如果用户忘记了密码,他们会转到此页面输入电子邮件,如果电子邮件匹配数据库中的一个记录,我设置temp=1和time=currentdate&时间我告诉用户我无论如何都发了电子邮件。如果他们点击这个新链接,它会转到一个页面,如果不到一个小时,我会让他们重置密码,并将温度设置回零。如果他们在一小时后点击链接,我会告诉他们密钥无效。一小时后,温度被设置回零。

在我将时间变量添加到等式中之前,验证过程一直很顺利。我从来没有真正让忘记密码的部分工作。

我知道我需要设置一个cron作业,每小时做两件事:

  1. 已验证删除帐户=0,创建该操作已经一个多小时了
  2. 更新temp=1的帐户,并且发送忘记密码的电子邮件已经一个多小时了

我的主要问题是:

  1. 我在数据库中使用的时间字段数据类型是否正确?如果没有,我应该用哪个?

  2. 如何设置时间变量$time=getdate()也许,默认值为null$时间是我用来插入时间字段的dB记录的变量。

  3. 如何制作cron脚本?我使用的是godaddy,我只是把cron控件指向这个php文件吗?如果是,这就是我需要的代码吗?

    //connect to cron
    /web/cgi-bin/php5 -f "$HOME/html/hourly.php";
    //connect to dB
    include 'db_connect.php'; 
    //delete any unverified email act records that are more than 1 hour old
    DELETE from members WHERE verified == 0 & time + 1 > NOW()
    //make temp=0 on any record where temp is 1 for more than an hour
    UPDATE members SET temp=0 WHERE temp == 1 & time + 1 > NOW()
    mysqli_close($mysqli);
    
  4. 我的整体方法听起来有根本缺陷吗?

请提前感谢。

在我看来,temp是无用的。这与未经核实的含义相同。

此SQL已损坏:

DELETE from members WHERE verified == 0 & time + 1 > NOW();
  • CCD_ 2是按位运算符。您想要AND
  • SQL使用单个=而不是==
  • 您将删除不到一小时、不超过一小时的帐户

尝试:

DELETE FROM members WHERE verified = 0 AND time + 1 < NOW();

Datetime是时间的正确字段类型,但我会将字段命名为creation_time或其他什么,这样您就知道它的含义了。您可以通过将NOW()传递给SQL来设置它的值,例如INSERT INTO members SET time=NOW(), ...