簡體   English   中英

用戶訪問頁面后如何使其過期?

[英]How can I make a page expire after user visit it?

我有一個頁面http://www.mysite.com/newsletter.php

現在,當我向您發送電子郵件時,我想在其中放置一個變量,然后您訪問此頁面以查看您的電子郵件/用戶名。

因此,我通過電子郵件將此鏈接發送給您http://www.mysite.com/newsletter.php?user=email@email.com

現在,當您訪問此鏈接時,您將在該頁面上以“ Hello email@email.com,請查看新博客”查看您的電子郵件/用戶名。

我在該頁面上寫了用戶名/電子郵件

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

現在,如何使該頁面在您訪問后失效? 我的意思是我只想參觀一次!

* 編輯

看一下我已經用來生成過期的唯一鏈接的代碼:

<?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現在如何在uniqid旁邊添加變量user=email@email.com以生成如下所示的鏈接: page.php ?key1234567890&user=email@email.com可以通過<?php echo $_GET['user']; ?>來獲取email@email.com <?php echo $_GET['user']; ?> <?php echo $_GET['user']; ?>在下一頁中。

對不起,我的英語不好。

將狀態變量存儲在數據庫中,當您對該頁面進行訪問時,將電子郵件與到目前為止訪問量為0的數據庫中存儲的電子郵件進行比較,更新狀態變量以顯示Visited = 1,並在下次打開相同的URL時顯示,請查看狀態變量,由於其為1,所以不顯示該頁面。

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

嘗試這個:

您只能通過數據庫更新機制安全地執行此操作。 將數據庫字段設置為默認值0,並在用戶訪問該頁面后將其設置為1。

例如,

在某些網站中,您可以在“忘記密碼鏈接”頁面中找到此類選項。

另一個選擇是為此使用客戶端緩存。 我們可以在用戶第一次訪問時保存cookie,而在下次訪問時,我們可以檢查是否較早訪問了用戶並向其顯示消息。 http://plugins.jquery.com/project/Cookie

只需在您的K中添加一個額外的列即可存儲頁面狀態。 用戶訪問您的頁面時。 只需更改狀態即可。 並且不允許狀態更改的頁面。 您只需在數據庫查詢中進行較小的更改即可輕松完成此操作。 這將減輕維護使用sessioncookies的負擔。

暫無
暫無

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

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