簡體   English   中英

如何將 php 文件的訪問限制為每天一次? (具體來說,php 文件發送一封電子郵件,我希望每個用戶/IP 每天一封電子郵件)

[英]How to restrict access to a php file to once per day? (specifically, the php file sends an e-mail, I want one e-mail per day per user/IP)

我四處搜索,但我對 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("<p>Message delivery failed...</p>");
  }
 ?>

所以基本上是網站的用戶報告一個損壞的鏈接,但我希望這很容易被利用,因為每次我刷新.php 頁面時都會發送一封電子郵件。

如問題標題所示,我正在尋找一種方法,將 .php 文件的使用限制為每位用戶每天(或每 x 小時)一次。 最簡單的方法是什么?

編輯:或者,如果您對解決方案有更好的想法,請告訴我!

解決后編輯:

對於那些對此解決方案感興趣的人,我使用了以下方法(它似乎有效,但如果有人能看到其中有任何明顯的漏洞,請張貼她):

<?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>");
      } }
 ?>

您可以嘗試的一件事是在發送 email 之后將時間戳存儲在用戶 session 或瀏覽器 cookie 中,然后當再次調用腳本時,您可以檢查時間戳是否存在,如果是,是否更高比您的 email 閾值(一天,x 小時等...)

我認為您最好的選擇是創建一個數據庫表來跟蹤特定用戶 ID 是否訪問了該頁面。 一旦他們這樣做,用日期和用戶 ID 在表中寫入一行。 在每次頁面加載時,檢查表格以查看用戶 ID 和當前日期是否存在一行,如果有,則不要發送 email。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM