我的网站内容可以"喜欢"。没有使用任何api,它是一个自定义的按钮,只需增加"喜欢"内容和平的统计数据。
现在,我在每个页面加载时都有一个视图计数器,以及一个类似的按钮。按下“赞”按钮后,对于该页面生命周期的任何连续喜欢,它将被禁用。
我遇到了一个问题,我的观点不仅仅是我的观点......理论上不应该发生这种观点。我已经实现了一些java代码来解除按钮的连接(基本上隐藏元素),我还为忽略java的机器人添加了一些服务器端代码。
按下Ons服务器端按钮,我设置一个会话变量,如果为该页面实例设置了该会话变量,则退出所有引发的连续事件。
当我快速点击按钮后退时,我已经把它归结为最多两次或三次被触发的事件。只有在第2次/第3次运行后才有足够的时间来识别会话变量,并且忽略事件代码。在我的会话var技巧之前,您可以快速单击该按钮10次,并且在页面最终回发并禁用按钮之前会增加10个喜欢。
所以,低至2或3并不是坏事,但我对某些内容的看法不断增加。
补充信息:jquery按钮禁用:
<script type ="text/javascript">
function pageLoad() {
$('#<%=vidUpB.ClientID%>').click(function () {
$(this).css("display","none")
});
}
</script>
有什么想法吗?
答案 0 :(得分:2)
要尝试的事情:
答案 1 :(得分:2)
当机器人向某个网址发现POST请求时,他们喜欢在那里发送GET请求来查看。如果他们喜欢他们看到的内容,则可以缓存链接,并且您可以不时获得该网址的其他GET请求。令人讨厌的机器人不遵循robots.txt,只有这样处理它们的方法是在他们的方式中放置一些不显眼的验证码 - 就像要求请求POST请求并检查隐藏的输入字段是否为空。
<asp:TextBox ID="txtKeepEmpty" runat="server" style="display:none" />
<asp:Button runat="server" OnClick="btnLike_Click" Text="Like" />
protected void btnLike_Click(object sender, EventArgs e) {
if (IsPostBack &&
Request.HttpMethod == "POST" &&
string.IsNullOrEmpty(txtKeepEmpty.Text)) {
// update
}
}
会话存储也基于会话密钥 - 这是一个cookie。每次用户删除会话cookie时,他都会启动一个新会话。当他一直禁用cookie时(有些用户正在这样做),它将为他发起的每个请求创建新的会话。