如何将对php文件的访问限制为每天一次?(具体来说,php文件发送一封电子邮件,我希望每个用户/IP每天发送一封电子邮件)
我四处搜索过,但我对PHP不是很有经验。我现在的剧本是如何将对php文件的访问限制为每天一次?(具体来说,php文件发送一封电子邮件,我希望每个用户/IP每天发送一封电子邮件),php,Php,我四处搜索过,但我对PHP不是很有经验。我现在的剧本是 <?php $to = "my email address"; $subject = "Report for broken link"; $id= $_GET['id']; $body = "Link ID: $id"; if (mail($to, $subject, $body)) { echo("<p>Message sent!</p>"); } else { echo("<
<?php
$to = "my email address";
$subject = "Report for broken link";
$id= $_GET['id'];
$body = "Link ID: $id";
if (mail($to, $subject, $body)) {
echo("<p>Message sent!</p>");
} else {
echo("<p>Message delivery failed...</p>");
}
?>
因此,基本上是网站用户报告断开的链接,但我认为这很容易被利用,因为每次我刷新.php页面时都会发送一封电子邮件
在问题标题中,我正在寻找一种方法,将.php文件的使用限制为每个用户每天(或每x小时)使用一次。最简单的方法是什么
编辑:或者,如果你有更好的解决方案,请让我知道
解决后编辑:
对于那些对此解决方案感兴趣的人,我使用了以下方法(似乎有效,但如果有人能看到其中任何明显的漏洞,请发邮件给她):
您可以尝试的一件事是在发送电子邮件后在用户会话或浏览器cookie中存储时间戳,然后再次调用脚本时,您可以检查时间戳是否存在,如果存在,是否高于您的电子邮件阈值(一天、x小时等)您可以尝试的一件事是,在发送电子邮件后,在用户会话或浏览器cookie中存储时间戳,然后再次调用脚本时,您可以检查时间戳是否存在,如果存在,是否高于您的电子邮件阈值(一天、x小时等)我认为最好的办法是创建一个数据库表,用于跟踪特定用户id是否访问了该页面。一旦他们这样做了,就在表中写一行日期和用户id。在每次页面加载时,检查表中是否有一行用户id和当前日期,如果有,就不要发送电子邮件。我认为最好的办法是创建一个数据库表,跟踪特定用户id是否访问了页面。一旦他们这样做了,就在表中写一行日期和用户id。在每次页面加载时,检查表中是否有一行用户id和当前日期,如果有,就不要发送电子邮件。一个建议:使用POST请求而不是GET请求。这将挫败一些潜在的浏览器URL操纵器。谢谢!我现在已经从GET切换到POST。事实上,从GET切换到POST并不起作用。它停止发布“id”的值(由php查询字符串完成-即?id=一个建议:使用POST请求而不是GET请求。这将挫败一些可能的浏览器URL操纵器。谢谢!我现在已经从GET切换到POST。事实上,从GET切换到POST不起作用。它停止发布“id”的值(由php查询字符串-ie.?id=Thank完成,这看起来是我最好的选择。我将尝试使用setcookie(“noaccess”,“2hours”,time()+7200);在发送电子邮件之后,在发送电子邮件之前输入某种if语句。我想这就是你的意思吗?是的,我正在考虑类似的内容。谢谢,这看起来是我的最佳选择。我将尝试使用setcookie(“noaccess”,“2hours”,time()+7200);在发送电子邮件之后,在发送电子邮件之前加入某种if语句。我想这就是你的意思?是的,我在想类似的事情。
<?php
$to = "my email address";
$subject = "Report for broken link";
$id= $_GET['id'];
$body = "Link ID: $id";
if(isset($_COOKIE['noaccess'])) {
echo ("<p>Message already sent!</p>");
} else {
if (mail($to, $subject, $body)) {
setcookie("noaccess", "2hrs", time()+7200);
echo("<p>Message sent!</p>");
} else {
echo("<p>Message delivery failed...</p>");
} }
?>