修正了自动发送邮件程序

王志勇 发表于 2009年05月18日 22:26

我们的网站,用户在密码重置的时候,会自动发送临时的密码到用户的邮箱,如这里http://e.orshu.com/m/user/forget/。为了防止用户多次重置而频繁发送邮件,可以设定为15分钟之内只允许发送一次邮件。方法是记录用户上次密码重置的最后时间,PHP使用time()记录最后相对时间即可,ASP使用now记录最后时间。然后调用上次密码重置的最后时间,以变量$auf为例:

PHP算出时间差的方法:

<?if ((time()-$auf)/60>14){}?>
注:{}的程序内容为密码重置,以及发送邮件。

ASP算出时间差的方法:

<%if DateDiff("s", auf, now)/60>14 then
……
end if%>
注:end if之前的程序内容为密码重置,以及发送邮件。

PHP也可以改成这样:

<?$c5=1;
if ((time()-$auf)/60<15) $k1="报错提示:请在15分钟之后再次重置。";
if ($k1) $c5=2;
if ($c5==1){
//密码重置的程序,以及发送邮件。
}?>

当$c5等于1的时候,程序运行;当$c5不等于1的时候,出现错误提示。

6条评论:
1   freetao 2009-05-19 18:52
哎。我用phpwind的论坛程序,现在正为邮件的发送烦恼呢。。。
2   自由勇 2009-05-27 09:30
Linux服务器使用mail()函数发送邮件很方便。
3   唏嘘一世 2009-05-27 20:17
PHP使用date()呢还是使用time()呢,一直不知道如何取舍,望指点一下。:)
4   自由勇 2009-05-27 20:27
如果是用来计算2个时间的差值,PHP使用time()。例如上次已经记录了time()的值$auf,用现在的time()减去$auf,可以得出秒数。
除以60,可以得出分钟数;除以3600,可以得出小时数。
如<?if ((time()-$auf)/60>14){}?>

date()用于返回当前的实际时间,例如date("Y-m-d H:i"),结果是2009-05-27 20:17。

5   唏嘘一世 2009-05-28 18:44
谢谢王兄,了解了。
6   华晨 2009-06-03 14:15
我以后做系统要考虑这个问题

抱歉,评论已关闭。

王志勇:1980-09-26 (38周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2018年11月
2018年10月(30)
2018年09月(17)
2016年-2017年(9)
2014年06月-09月(10)
2013年 +

2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2018 auiou.com All rights reserved.
此Blog程序由王志勇编写 已经发布在Arsue