好的,我正在向用户的电子邮件发送激活电子邮件链接。我的激活链接工作正常我想让该链接在X分钟后过期。 这是我的代码:
$base_url='http://172.16.0.60/WebServices/';
$activation=md5($email.time());
email format to HTML
$mail->Subject = 'Activate Your Account';
$mail->Body = 'Hi, <br/> <br/> We need to make sure you are human. Please verify your email and get started using your Website account. <br/> <br/> <a href="'.$base_url.'activation/'.$activation.'">'.$base_url.'activation/'.$activation.'</a>';
现在我的 .htaccess文件
RewriteEngine On
RewriteRule ^activation/([a-zA-Z0-9_-]+)$ activation.php?code=$1
RewriteRule ^activation/([a-zA-Z0-9_-]+)/$ activation.php?code=$1
现在如何让我的链接过期?我的数据库中没有时间戳字段。
答案 0 :(得分:4)
我的数据库中没有时间戳字段。
然后添加一个。
添加一个字段以记录链接生成的时间,然后您可以立即检查他们访问时的时间。当你可以相应地调整你的设置时,没有必要浪费时间去想黑客。
答案 1 :(得分:0)
我用这个简单地得到了答案, 在链接和另一端发送时间戳,同时接受链接,我必须用当前时间戳检查时间。
$base_url='http://172.16.0.60/WebServices/';
$activation=md5($email.time());
$time = time();
email format to HTML
$mail->Subject = 'Activate Your Account';
$mail->Body = 'Hi, <br/> <br/> We need to make sure you are human. Please verify your email and get started using your Website account. <br/> <br/> <a href="'.$base_url.'activation/'.$activation.'">'.$base_url.'activation/'.$activation.$time.'</a>';
当用户点击链接时,以下代码将检查链接的到期时间。
$u_time = $this->input->get('time'); // fetching time variable from URL
$u_time = md5($u_time);
$cur_time = time(); //fetching current time to check with GET variable's time
if ($cur_time - $u_time < 10800)
{
// link is not expired
}
else
{
// link has been expired
}
答案 2 :(得分:0)
date_default_timezone_set("Asia/Kolkata"); // set time_zone according to your location
$expire_date = "2019-03-26 14:45:00"; // time that you want the link to expire
echo $now = date("Y-m-d H:i:s"); // your current time.
if ($now>$expire_date) {
echo " Your link is expired";
}
else
{
echo " link is still alive";
}
您可以找到自己的时区here
希望这会有所帮助:)