2013-10-17 13 views
1

我有一個頁面http://www.mysite.com/newsletter.php如何在用戶訪問後使頁面過期?

現在我想提出一個變量那裏,當我向您發送電子郵件,你訪問這個頁面看到你的電子郵件/用戶名存在。

所以我向您發送電子郵件此鏈接http://www.mysite.com/[email protected]

現在,當你將訪問此鏈接,您將看到您Email /用戶名在該網頁爲「你好[email protected],看看新博客」

上我寫與

<?php echo $_GET['user']; ?> 

現在頁面上的用戶名/電子郵件,我如何才能讓這個頁面過期您訪問之後呢?我的意思是我只想訪問它一次!

* EDITED

看我使用已經生成到期唯一鏈接代碼:

<?php 

    include("variables.php"); 

    $password = trim($_SERVER['QUERY_STRING']); 

    if($password == ADMIN_PASSWORD) { 
     $new = uniqid('key',TRUE); 

     if(!is_dir('keys')) { 
      mkdir('keys'); 
      $file = fopen('keys/.htaccess','w'); 
      fwrite($file,"Order allow,deny\nDeny from all"); 
      fclose($file); 
     } 

     $file = fopen('keys/keys','a'); 
     fwrite($file,"{$new}\n"); 
     fclose($file); 
?> 

<html> 
    <head> 
     <title>Page created</title> 
     <style> 
      nl { 
       font-family: monospace 
      } 
     </style> 
    </head> 
    <body> 
     <h1>Page key created</h1> 
     Your new single-use page link:<br> 
     <nl> 
     <?php 
      echo "http://" . $_SERVER['HTTP_HOST'] . DOWNLOAD_PATH . "?" . $new; 
     ?></nl> 
    </body> 
</html> 

<?php 
    } else { 

     header("HTTP/1.0 404 Not Found"); 
    } 
?>` 

而且該碼在36個小時內過期,由variables.php設置

<? 

    define('PROTECTED_DOWNLOAD','download.php'); 

    define('DOWNLOAD_PATH','/.work/page.php'); 

    define('SUGGESTED_FILENAME','download-doc.php'); 

    define('ADMIN_PASSWORD','1234'); 

    define('EXPIRATION_DATE', '+36 hours'); 

    header("Cache-Control: no-cache, must-revalidate"); 
    header("Expires: ".date('U', strtotime(EXPIRATION_DATE))); 

?> 

這個php文件生成一個這樣的鏈接:http://www.mysite.com/page.php?key1234567890 現在如何添加t他在uniqid旁邊變量[email protected]生成這樣的鏈接:page.php?key1234567890 & [email protected]可以通過<?php echo $_GET['user']; ?>在下一頁獲得[email protected]

對不起,我的英語不好。

回答

4

存儲在數據庫中的狀態變量,當你有一個頁面上訪問然後將其與一個存儲在其訪問量:0到目前爲止數據庫中的電子郵件,更新下一次當狀態變量以示走訪= 1打開相同的URL,查看狀態變量,並從1開始,不顯示該頁面。

+0

這樣的選項,你可以幫我一個例子嗎?我不是一個好的編碼員,我仍然在學習!這可以做到沒有數據庫?也許cookies或uniqid? – Iulius

+1

不是,我認爲這很簡單。請分享一些代碼,你到目前爲止,我會很樂意幫你完成它 –

+1

看看,檢查這個http://stackoverflow.com/questions/19411656/single-use-download-script-modification和這個http:// stackoverflow.com/questions/19395203/add-a-variable-that-will-be-echo-on-page-next-to-uniqid – Iulius

1

如果你想避免與數據庫交互,你也可以創建一個cookie,然後在有人導航到http://www.mysite.com/newsletter.php時查看cookie。唯一的問題是,當用戶清除他/她的cookies時,該頁面將再次出現。

+1

請檢查我的其他意見,也許你會幫助我。謝謝。 – Iulius

+0

假設你的標籤是準確的,我可以指出你的cookie與JS交互的大方向。 http://www.w3schools.com/js/js_cookies.asp – Franklin

+1

Cookie不是使頁面一次性使用的好方法。如果我清除了我的Cookie,我可以再次看到該頁面。 –

0

只需添加一個額外的列到你的K.將存儲頁面的狀態。當用戶訪問您的網頁時。只是改變狀態。並且不允許狀態改變的頁面。您可以輕鬆地在數據庫查詢中稍作更改。這將消除使用sessioncookies維護的很多負擔。

1

試試這個:

你只能安全地使用數據庫更新機制來做到這一點。 將數據庫字段設置爲0,並在用戶訪問該頁面後將其設置爲1。

例如,

在一些網站你會發現在忘記密碼的鏈接頁面

+1

你可以給我一個代碼示例或鏈接,我可以看到的東西像那樣? – Iulius

相關問題