网页过期的问题

网页|问题

防止使用者按上一頁按鈕
討論區上常有網友問到這個問題, 如何防止使用者按回上一頁按鈕, 為何會問這一個問題? 應該通常是在防止使用者重複執行一個應用程式, 例如資料庫的新增, 如果使用者按了回上一頁, 有可能會造成重複新增資料, 今天這篇文章就要介紹如何 "盡可能" 的防止使用者按回上一頁

伺服端防止快取

首先來看看伺服端的方法, ASP 的 Response 物件提供了幾個網頁快取 (cache) 相關的屬性, 說明如下

屬性 說明
CacheControl 判斷代理伺服器 (Proxy Server) 是否快取 ASP 的輸出結果
Expires 網頁快取的逾期時間
ExpiresAbsolute 指定網頁快取的逾期時間

所以如果你要防止網頁被快取, 你可以這麼做

<%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
%>

利用這個方法, 使用者還是可以回到上一頁, 但由於網頁並沒有被快取, 所以瀏覽器必須重新向伺服器作 Http 請求, 也就是這個網頁會被重新整理 (Refresh)

用戶端防止快取

你也可以使用用戶端 (Client-side) 的方式,

<html>
<head>
<meta http-equiv="expires" content="0">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">
</head>

和伺服端的方法產生的結果是一樣的, 但有幾點要注意

Pragma : 當使用安全連結時才使用 Pragma, 如果在非安全連結使用, 那麼效果和 Expires : -1 是相同的, 也就是這個網頁還是會被快取, 但會立即逾時
meta http-equiv 標籤的 cache-control 並不適用於 Internet Explorer 4, 5 版本
移除工具列

這個方法是在網路上看來的, 有點趣味所以也介紹一下, 做法是這樣的, 利用 window.open 方法來開新視窗, 然後關掉原視窗, 但重點是在開視窗時將工具列移除

<script language="javascript">
<!--
function openWindow(url){
newpage = window.open(url,'newpage','toolbar=no');
newpage.focus();
self.close();
}
//-->
</script>
<a href="javascript:openWindow('nextpage.html');">下一頁</a>

也是一種方法, 但應該很少人會用, 有一點麻煩! 況且按滑鼠右鍵所出現的 Menu 中也有回上一頁的選項, 此法謹防君子不防小人!

使用 location.replace

Javascript location 物件的 replace() 方法會以指定的網址覆蓋瀏覽器目前瀏覽歷史紀錄, 也就是當你用了這個方法, 瀏覽器就會忘掉過去曾經瀏覽的紀錄, 就親像你第一次開啟瀏覽器一樣, 上一頁的按鈕是灰的

你可以這麼做

<a href="Javascript:location.replace('nextpage.html')">下一頁</a>

看起來這大概是目前最好的方法! 不過還是有一些缺點, 因為並不是所有的情況都可以套用, 譬如講當你使用 Response.Redirect 時, 這個方法就派不上用場了!

可以歸納出一個結論, 就是要完全關閉瀏覽器回上一頁的功能是不可能的 (目前的瀏覽器), 唯一能做的是因時因地制宜, 結合以上的方法盡可能的防止使用者按回上一頁!

希望這篇文章對你有幫助!

时间: 2024-10-14 16:22:10

网页过期的问题的相关文章

PHP控制网页过期时间的程序

有时我们需要控制主页之类的网页过期时间.但我们比如使用的是Chinacache的CDN,那要怎么样设计才能让他缓存我的内容. 有时我们需要控制主页之类的网页过期时间.但我们比如使用的是Chinacache的CDN,那要怎么样设计才能让他缓存我的内容. 当然,前提要先打开CDN中一个功能reload_into_ims on.这样用户发送过来no-cache也不怕了.因为这样会给给no-cache转成If-Modified-Since .所以我们写程序主要是对If-Modified-Since控制就

用php人工使网页过期

Manually Expiring Web Pages 人工使网页过期 作者: Joe Clark 翻译: detrox After going through a series of pages during a registration process, you don't want the user to be able to go back after the final submit. What can you do to manually "expire" those pa

网页过期的问题再转一遍,建议斑竹加入精华区

精华|网页|问题 防止使用者按上一頁按鈕 討論區上常有網友問到這個問題, 如何防止使用者按回上一頁按鈕, 為何會問這一個問題? 應該通常是在防止使用者重複執行一個應用程式, 例如資料庫的新增, 如果使用者按了回上一頁, 有可能會造成重複新增資料, 今天這篇文章就要介紹如何 "盡可能" 的防止使用者按回上一頁 伺服端防止快取 首先來看看伺服端的方法, ASP 的 Response 物件提供了幾個網頁快取 (cache) 相關的屬性, 說明如下 屬性 說明 CacheControl 判斷代

PHP 网页过期时间的控制代码_php技巧

当然,前提要先打开CDN中一个功能reload_into_ims on.这样用户发送过来no-cache也不怕了.因为这样会给给no-cache转成If-Modified-Since .所以我们写程序主要是对If-Modified-Since控制就好了.记的,缓存系统架构中计中最好是后端来控制,所以最好的方法是程序来管理过期. 呵,我只会php,就用php写一个,别的程序也是一样. 见我下面的程序,呵呵,5分钟过期. 复制代码 代码如下: <?php $headers = apache_requ

PHP控制网页过期时间的代码_php技巧

当然,前提要先打开CDN中一个功能reload_into_ims on.这样用户发送过来no-cache也不怕了.因为这样会给给no-cache转成If-Modified-Since .所以我们写程序主要是对If-Modified-Since控制就好了.记的,缓存系统架构中计中最好是后端来控制,所以最好的方法是程序来管理过期. 呵,我只会php,就用php写一个,别的程序也是一样. 见我下面的程序,呵呵,5分钟过期. 复制代码 代码如下: <?php $headers = apache_requ

网页代码常用小技巧总结续,网页制作学习

技巧|网页 如内容超出单元格,则隐藏style="TABLE-LAYOUT: fixed" 让弹出窗口总是在最上面: <body onblur="this.focus();">不要滚动条? 让竖条没有: <body style='overflow:scroll;overflow-y:hidden'> </body>让横条没有: <body style='overflow:scroll;overflow-x:hidden'&g

网页制作学习:meta标签之详解

网页|详解     meta是html语言head区的一个辅助性标签.几乎所有的网页里,我们可以看到类似下面这段的html代码: <head><meta http-equiv="content-Type" content="text/html; charset=gb2312"></head>     也许你认为这些代码可有可无.其实如果你能够用好meta标签,会给你带来意想不到的效果,例如加入关键字会自动被大型搜索网站自动搜集:可

网页:Meta标签详解

网页|详解 引言 您的个人网站即使做得再精彩,在"浩瀚如海"的网络空间中,也如一叶扁舟不易为人发现,如何推广个人网站,人们首先想到的方法无外乎以下几种: ● 在搜索引擎中登录自己的个人网站 ● 在知名网站加入你个人网站的链接 ● 在论坛中发帖子宣传你的个人网站 很多人却忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性,有兴趣吗,谁我来重新认识一下META标签吧! META标签是HTML语言HEAD区的一个辅助性标签,它位于HTML文

Html网页页面head区规范知识

规范|网页|页面 head区是指首页HTML代码的<head>和</head>之间的内容. 必须加入的标签 1.公司版权注释 <!--- The site is designed bywebjx.com 06/2006 ---> 2.网页显示字符集 简体中文:<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312"> 繁体中文:<MET