仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1327|回复: 19
打印 上一主题 下一主题

[学习教程] ASP网页编程之ASP法式完成禁用阅读器前进按钮

[复制链接]
柔情似水 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:30:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
国内有些大的CRM厂商的ASP就写得不错.无论是概念还是它里面用JAVASCRIPT的能力.并不是说现在的程序员用了ASP.NET来写程序就可以说自己高档了按钮|法式|禁用|阅读器     阅读器的前进按钮使得咱们可以便利地前往之前会见过的页面,它无疑十分有效。但有时分咱们不能不封闭这个功效,以避免用户打乱预定的页面会见次第。本文引见收集上可找到的各类禁用阅读器前进按钮计划,剖析它们各自的优弱点和合用场所。
  1、概述
   已经有很多人问起,“如何才干‘禁用’阅读器的前进按钮?”,或“如何才干避免用户点击前进按钮前往之前阅读过的页面?”在ASP服装论坛上,这个成绩也是问得最多的成绩之一。遗憾的是,谜底十分复杂:咱们没法禁用阅读器的前进按钮。
   起先我关于竟然有人想要禁用阅读器的前进按钮感应难以想象。后来,看到居然有那末多的人想要禁用这个前进按钮,我也就豁然(想要禁用的只要前进按钮,不包含阅读器的行进按钮)。由于在默许情形下,用户提交表单以后可以经由过程前进按钮前往表单页面(而不是利用“编纂”按钮!),然后再次编纂并提交表单向数据库拔出新的纪录。这是咱们不肯看到的。
   因而我就决意要找出防止呈现这类情形的办法。我会见了很多网站,参考了这些网站所引见的各类完成办法。假如你常常会见ASP编程网站,本文所引见的局部内容你能够已见到过。本文的义务是把各类能够的办法都引见给人人,然后找出最好的办法!
  2、制止缓存
   在我找到的很多计划中,个中有一种建议制止页面缓存。详细是利用办事器端剧本,以下所示:
<%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
%>
   这类办法十分无效!它强迫阅读重视新会见办事器下载页面,而不是从缓存读取页面。利用这类办法时,编程者的次要义务是创立一个会话级的变量,经由过程这个变量肯定用户是不是仍然可以检查谁人不合适经由过程前进按钮会见的页面。因为阅读器不再缓存这个页面,当用户点击前进按钮时阅读器将从头下载该页面,此时法式就能够反省谁人会话变量,看看是不是应当答应用户翻开这个页面。
   例如,假定咱们有以下表单:
<%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
If Len(Session("FirstTimeToPage")) > 0 then
&single; 用户已会见过以后页面,如今是再次前往会见。
&single; 排除会话变量,将用户重定向到登录页面。
Session("FirstTimeToPage") = ""
Response.Redirect "/Bar.asp"
Response.End
End If
&single; 假如法式运转到这里,申明用户可以检查以后页面
&single; 以下入手下手创立表单
%>
<form method=post action="SomePage.asp">
<input type=submit>
</form>
   咱们借助会话变量FirstTimeToPage反省用户是不是是第一次会见以后页面。假如不是第一次(即Session("FirstTimeToPage")包括某个值),那末咱们就排除会话变量的值,然后把用户从头定向到一个入手下手页面。如许,当表单提交时(此时SompePage.asp被翻开),咱们必需付与FirstTimeToPage一个值。即,在SomePage.asp中咱们需求加高低面的代码:
Session("FirstTimeToPage") = "NO"
   如许,已翻开SomePage.asp的用户假如点击前进按钮,阅读器将从头恳求办事器下载页面,办事器反省到Session("FirstTimeToPage")包括了一个值,因而就排除Session("FirstTimeToPage"),并把用户重定向到其他页面。固然,一切这一切都需求用户启用了Cookie,不然会话变量将是有效的。(有关该成绩的更多申明,请拜见For session variables
to work, must the Web visitor have cookies enabled?)
   别的,咱们也能够用客户端代码使阅读器不再缓存Web页面:
<html>
<head>
<meta http-equiv="Expires" CONTENT="0">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache">
</head>
   假如利用下面的办法强迫阅读器不再缓存Web页面,必需注重以下几点:
  只要在利用平安毗连时“Pragma: no-cache”才避免阅读器缓存页面。关于不受平安回护的页面,“Pragma: no-cache”被视为与“Expires: -1”不异,此时阅读器仍然缓存页面,但把页面标志为当即过时。在IE 4或5中,“Cache-Control”META HTTP-EQUIV标志将被疏忽,不起感化。
  在实践使用中咱们可以加上一切这些代码。但是,因为这类办法不克不及合用于一切的阅读器,所所以不保举利用的。但假如是在Intranet情况下,办理员可以掌握用户利用哪一种阅读器,我想仍是有人会利用这类办法。
  3、其他办法
  接上去咱们要会商的办法今后退按钮自己为中间,而不是阅读器缓存。这儿有一篇文章Rewiring the Back Button很值得参考。不外我注重到,假如利用这类办法,固然用户点击一下前进按钮时他不会看到之前输出数据的页面,但只需点击两次就能够,这可不是咱们但愿的后果,由于良多时分,刚强的用户老是可以找到绕过预防办法的举措。
   别的一种禁用前进按钮的举措是用客户端JavaScript翻开一个没有东西条的窗口,这使得用户很难前往前一页面,但不是不成能。一种更平安但相当末路人的办法是,当表单提交时翻开一个新的窗口,与此同时封闭表单地点的窗口。但我感觉这类办法不值得仔细思索,由于咱们总不克不及让用户每提交一个表单就翻开一个新窗口。
   那末,在谁人咱们不想让用户前往的页面是不是也能够到场JavaScript代码呢?在这个页面中到场的JavaScript代码可用来发生点击行进按钮的后果,如许也就抵消了用户点击前进按钮所发生的举措。用于完成该功效的JavaScript代码以下所示:
<script language="JavaScript">
<!--
javascript:window.history.forward(1);
//-->
</script>
  一样地,这类办法固然无效,但间隔“最好的办法”还差得很远。后来我又看到有人建议用location.replace从一个页面转到另外一个页面。这类办法的道理是,用新页面的URL交换以后的汗青记载,如许阅读汗青纪录中就只要一个页面,前进按钮永久不会变成可用。我想这能够恰是很多人所追求的办法,但这类办法仍然不是任何情形下的最好办法。利用这类办法的实例以下所示:
<A HREF="PageName.htm" >制止前进到本页面的链接</A>
   制止前进到本页面的链接!
   这类办法的弱点在于:复杂地应用Response.Redirect将不再无效,这是由于每次用户从一个页面转到另外一个页面,咱们都必需用客户端代码排除location.history。别的还要注重,这类办法排除的是最初一个会见汗青纪录,而不是全体的会见纪录。
   点击下面的链接,你将翻开一个复杂的HTML页面。再点击前进按钮,你可以看到这时候翻开的不是本页面,而是本页面之前的页面!(固然,你必需在阅读器中启用了客户端JavaScript代码。)
   经由一番细心的寻寻觅觅以后,我发明仍然没法找出真正可以完整禁用阅读器前进按钮的举措。一切这里引见的办法都可以在分歧水平上、以分歧的体例制止用户前往前一页面,但它们都有各自的局限。因为不存在可以完整禁用前进按钮的办法,所以最好的计划应当是:夹杂应用客户端剧本和办事器端剧本。
结论:和PHP一样,ASP简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。
灵魂腐蚀 该用户已被删除
沙发
发表于 2015-2-4 00:16:42 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
再见西城 该用户已被删除
板凳
发表于 2015-2-5 14:48:22 | 只看该作者
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
活着的死人 该用户已被删除
地板
发表于 2015-2-9 07:53:49 | 只看该作者
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
只想知道 该用户已被删除
5#
发表于 2015-2-27 04:41:18 | 只看该作者
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
金色的骷髅 该用户已被删除
6#
发表于 2015-3-1 16:00:47 | 只看该作者
运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
乐观 该用户已被删除
7#
发表于 2015-3-5 15:56:20 | 只看该作者
我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
小女巫 该用户已被删除
8#
发表于 2015-3-8 15:20:57 | 只看该作者
掌握asp的特性而且一定要知道为什么。
透明 该用户已被删除
9#
发表于 2015-3-16 02:54:07 | 只看该作者
如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
蒙在股里 该用户已被删除
10#
发表于 2015-3-17 11:39:18 | 只看该作者
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
冷月葬花魂 该用户已被删除
11#
发表于 2015-3-24 10:08:56 | 只看该作者
如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
若天明 该用户已被删除
12#
发表于 2015-4-1 04:35:27 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
谁可相欹 该用户已被删除
13#
发表于 2015-4-6 04:09:34 | 只看该作者
作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
柔情似水 该用户已被删除
14#
 楼主| 发表于 2015-4-7 15:27:43 | 只看该作者
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
第二个灵魂 该用户已被删除
15#
发表于 2015-4-12 18:25:48 | 只看该作者
用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
简单生活 该用户已被删除
16#
发表于 2015-4-16 16:47:56 | 只看该作者
虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。
不帅 该用户已被删除
17#
发表于 2015-4-18 15:33:35 | 只看该作者
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
兰色精灵 该用户已被删除
18#
发表于 2015-4-21 21:10:43 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
admin 该用户已被删除
19#
发表于 2015-5-7 18:32:05 | 只看该作者
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
山那边是海 该用户已被删除
20#
发表于 2015-6-5 06:22:04 | 只看该作者
他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-4 20:43

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表