您的位置:程序门 -> web 开发 ->



高分.求教一个问题!!!!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


高分.求教一个问题!!!!
发表于:2007-12-25 13:00:16 楼主
大家好,我想用asp实现一个功能,但苦于水平确实太菜!大家帮帮我啊,描述如下:

            比如一个页面:www.xx.com/test.htm           有这个页面!但是这个页面只能在首页才能打开!如果复制www.xx.com/test.htm在浏览器中打开就不行。。。也就是说,这个页面我要嵌入到www.xx.com/index.htm中,只有在这个页面才能打开,其他的都不行,比如想复制我页面的人,看了我首页的源码,找到我那个www.xx.com/test.htm   然后复制它,在浏览器打开。。。(俺是为了不想让别人复制我的页面,自己辛辛苦苦做的~现在大多数禁止复制功能都能破解的   :(   ),请问这个怎么实现奥???
发表于:2007-12-25 13:10:441楼 得分:0
html code
在首页合适的位置加: <iframe id="myiframe" src="test.htm" width=100% height=100% frameborder=0></iframe>
发表于:2007-12-25 13:16:132楼 得分:0
检测页面来源,如果非法,则转到其它页面
发表于:2007-12-25 13:22:233楼 得分:0
可以设置个session
在index.htm最后加上个session("a")=aaaa
在test.htm   最前面做个判断:
if   session("a") <> aaaa   then
response.redirect("index.asp")
else
...........
后面就是你test.htm   的代码了
发表于:2007-12-25 13:22:324楼 得分:0
if   instr(request.servervariables("http_referer"),"http://"&request.servervariables("host")   ) <1   then
response.write   "请通过页面链接查看本页!"
response.end
end   if  
发表于:2007-12-25 13:24:025楼 得分:0
toury大哥能解释下意思吗?我看的不太明白。。。

xiao1zhao,俺不懂才来问嘛。。。请指点啊~     ^_^
发表于:2007-12-25 13:42:026楼 得分:0
please   "give   me   some   money   ",再回答你的问题~!才注意到你的名字,哈哈~~玩笑
--------------------------------------------------------------------
发现我没完全搞清楚你的意思:
是不是想实现,一定要登录用户(访问了index.htm)才可以看到test.htm而在地址栏输入test.htm路径就跳转?如果是那就检查访问来源,看4楼代码;

"这个页面我要嵌入到www.xx.com/index.htm中,只有在这个页面才能打开,其他的都不行,比如想复制我页面的人,看了我首页的源码,找到我那个www.xx.com/test.htm       然后复制它,在浏览器打开。。。"
这个嵌入是什么意思?在index.htm里有个访问test.htm的链接还是显示在index.htm中?如果是后者(嵌入到index.htm),那我打开了你的index.htm不是一样可以看到test.htm的代码吗???

我1楼的说法是说在首页你想显示test.htm内容的位置上将它输出出来,但貌似误解了你的本意,呵呵
发表于:2007-12-25 14:20:367楼 得分:0
我倒是有个想法,

在index进入的时候赋予一个session("test"),然后再在页面test中去判断这个session是否等于你设置的值,如果是,则允许访问,如果不是则跳转,同时如果判断是的话,同时销毁该session("test"),否则你以后再从test页面跳转到一个新页面的时候该session依然存在,这样如果从这个新页面跳转回到test的时候,依然可以访问.
发表于:2007-12-25 16:02:348楼 得分:0
打开首页面的时候来个session,在test里判断一下,不过要asp,htm的话就只能判断来源,
function   isselfrefer()
dim   shttp_referer,   sserver_name
shttp_referer   =   cstr(request.servervariables("http_referer"))
sserver_name   =   cstr(request.servervariables("server_name"))
if   mid(shttp_referer,   8,   len(sserver_name))   =   sserver_name   then
isselfrefer   =   true
else
isselfrefer   =   false
end   if
end   function


发表于:2007-12-26 14:49:369楼 得分:0
首页把test.html改成test.asp(不改也可以,但要用js的方法)
然后在test.asp里代码顶端加上以下代码:
vbscript code
<% if request.servervariables("http_host")<>"www.xx.com" then response.write("对不起,不允许外站链接") response.end end if %>
发表于:2007-12-26 15:37:5010楼 得分:0
检测urlreferer是否指定的url就可以了.只能防止普通用户.
发表于:2007-12-26 16:39:4711楼 得分:0
办法太多了

进主页   写一个cookie

进主页     设置一个session变量

分页  

判断上一页来路
发表于:2007-12-26 16:44:2612楼 得分:0
同意楼上,哈哈
发表于:2007-12-26 17:40:4513楼 得分:0
session占用系统资源,cookie我觉得没必要并且可以欺骗,
用sy_binbin   的这个最好了,我给抄下来
vbscript code
if instr(request.servervariables("http_referer"),"http://"&request.servervariables("host"))<1 then response.write "请通过页面链接查看本页!" response.end end if
发表于:2007-12-26 21:23:1114楼 得分:0
不行.这样岂不是可以通过别的页面跳转过来吗?得结合index.asp做文章.
发表于:2007-12-26 21:30:3315楼 得分:0
直接用instr来处理当然是不行了.只能用=来比较.

如果用inser

我打开

http://yyy.com/test.aspx?t=http://www.xxx.com

而yyy.com的test.aspx是不需要参数的,后面的参数是我加的假的.   我再从这个网址跳到你的
xxx.com/test.asp   时,   你用instr取的东西是无法比较的.只能直接用=比.   或者用正则来处理.滤掉后面参数.

即便是用=来比,也是只能防普通用户的,我在10楼已经说过了.

用工具提交http头,   这些检测全是没用的.
发表于:2007-12-26 23:22:3416楼 得分:0
大虾们啊,如果通过上一页验证话,也很容易绕过啊。。。

比方,我先访问了实现的index.htm   ,然后再去访问我辛辛苦苦做的页面就可以了吗   :(       所以通过简单的上一页方法不可行啊。。。。小弟的这个页面只在首页打开的。。。是内嵌的、。。。。。其他地方不能不开!所以,只需在首页显示。。。那个页面是小弟花了4天多的时间做的啊。。。。请大家帮帮忙啊。。。
发表于:2007-12-26 23:44:4517楼 得分:0
对于你的问题没有十全十美的解决办法.因为是b/s系统,除非你让用户安装你的插件,否则无法做到.
无论采用哪种做法只能防防普通用户.

index.htm
<iframe   src="test.htm"> </iframe>

test.htm
html code
<script> try { var url = window.parent.location if(url!="http://www.xxx.com") { window.close();//狠一点就写个死循环,让他下次不开了. window.location.reload(); } } catch(e) { window.close(); } </script>


禁用了js,或者其它的,都没有用的.


快速检索

最新资讯
热门点击