网站上的文章,每个人都能看;
但是,我们如何才能做到,网站文章的复制功能,仅针对会员开放,对于不进行登陆的游客,限制其复制?
首先,千万不能怪俺出阴招;再次,也不能说俺自私;最后,切勿责怪某家教唆别人愚弄大众;
因为,很多网站都具备会员功能,而部分宝贵的资源,只能对会员进行开放;此外,本着以相互学习为目的,俺就出此一招,让大家对其运行机制有所了解。
下面,我们就来谈谈,如何实现这样的功能;
一、理论知识
实现的方法很简单,无非就是通过程序自动判断,游客是否已登陆,如果已登陆,就取消限制复制的代码;否则,就在网页中加入限制复制的代码,即可实现功能;
二、实现方法
本文以asp.net网站程序为领子;如果您的网站是其它脚本程序,请效仿。
①修改Body
我们都知道,在ASPX页面中,有一个Body,即<body>,是在客户端运行的;
下面,我们先将该Body修改一下,让其在服务器端运行,代码改为类似如下:
<body id="MyCopy" runat=server >;//即,给其添加一个ID,再让其runat=server在服务器端运行;
②添加代码
protected void Page_Load(object sender, EventArgs e)
{
if (此处编写判断会员是否登陆的代码)//仅开放会员的复制功能
{
//MyCopy.Attributes.Add("oncopy", "alert('复制功能仅对本站会员开放,您未登陆!');return false");
MyCopy.Attributes.Add("onselectstart", "return false");
MyCopy.Attributes.Add("oncontextmenu", "return false");
CopyMSG.Text = "您尚未登陆,本站复制功能仅对会员开放";
}
else
{
CopyMSG.Text = "您已登陆" );
}
}
在页面的Page_Load事件中,添加如上的代码;
MyCopy为Body的ID;
通过MyCopy.Attributes.Add,添加限制复制功能;即:
MyCopy.Attributes.Add("onselectstart", "return false");
MyCopy.Attributes.Add("oncontextmenu", "return false");
CopyMSG为页面的控件,是一个Label对象,请自行添加,用来显示提示信息给用户的;
就这么简单,就实现了如题的功能;
当游客未登陆时,在Body标签中,就会自动加上onselectstart="return false" oncontextmenu="return false",如下代码:
<body id="MyCopy" onselectstart="return false" oncontextmenu="return false">,从而实现禁止复制的功能;
当游客登陆时,就不会加上onselectstart="return false" oncontextmenu="return false",从而解除禁止复制的功能。