实现一个点赞功能十分简单,主要问题在于不能重复点赞。
  若是一个有用户的网站,可以通过数据库设计记录用户的点赞,这是可行的。
但是若是一个不记名的网站,如何记录一个用户呢?
这里有两种方法:
  第一种是利用IP,维护一个IP表,记录点赞过的用户,防止该IP重复点赞,问题是IP可能会更换。
  第二种是利用cookie,通过一个cookie标注一个用户,防止重复点赞,问题是cookie是可以修改的。
对于一个单纯的只需要展示热度的网站,利用IP或cookie实现点赞都是可以接受的。因为很少有人会无聊的利用这些缺陷刷赞。
这里给出利用js操作cookie实现点赞的代码。

首先约定cookie中点赞的格式为

“star”:”1,2,3…”

前台html(这里使用了TP的模板渲染,并用了bootstrap图标)

<div class="file-star" onclick="addStar({$f[id]})"><a href="javascript:void(0)"><span id="star{$f[id]}" class="glyphicon glyphicon-star-empty"> {$f[star]}</span></a>
</div>

实现点赞的js函数

/*
* 实现点赞功能
* @param    资源id
* */
function addStar(id){var star=getCookieById("star",id);if(star==""){addCookieById("star",id,365);//后台点赞操作$.ajax({.....})}else{alert("您已经点赞过啦!");}
}

addstar中调用的操作cookie的函数如下

/*
* 获取特定cookie的值
* @param    cookie键
* @return   cookie该键对应的值
* */
function getCookie(cname){var name=cname+"=";var ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i].trim();if(c.indexOf(name)==0)return c.substring(name.length,c.length);}return "";
}/*
* 判断cookie键中是否有某个资源的id
* @param    cookie键
* @param    查询资源id
* @return   存在返回true,否则返回""
* */
function getCookieById(cname,id){var name=cname+"=";var ca=document.cookie.split(';');var cValue="";for(var i=0;i<ca.length;i++){var c=ca[i].trim();if(c.indexOf(name)==0)cValue=c.substring(name.length,c.length);}if(cValue!=""){var cArray=cValue.split(",");for(var i=0;i<cArray.length;i++){var c=cArray[i].trim();if(c.indexOf(id)==0){return true;}}}return "";
}/*
* 添加某个资源id到cookie键中
* @param    cookie键名
* @param    资源id
* @param    cookie过期时间
* */
function addCookieById(cname,id,exdays){var cvalue=getCookie(cname);if(cvalue==""){cvalue=id;}else {var cArray=cvalue.split(",");var flag=0;for(var i=0;i<cArray.length;i++){var c=cArray[i].trim();if(c.indexOf(id)==0){flag=1;break;}}if(flag==0) {cvalue += "," + id;}}var d=new Date();d.setTime(d.getTime()+(exdays*24*60*60*1000));var expires="expires="+d.toGMTString();document.cookie=cname+"="+cvalue+"; "+expires;
}

当用户重新刷新后,也要正确显示是否点赞否个资源,所以在body的onload中添加starInit()函数

<body onload="starInit()">
...
</body>

starInit函数

/*
* 页面刷新时正确显示是否点赞了某个资源
* */
function starInit(){var star=getCookie("star");if(star!=""){var cArray=star.split(",");for(var i=0;i<cArray.length;i++){var id=cArray[i].trim();$("#star"+id).attr("class","glyphicon glyphicon-star");}}
}

这里展示一个演示网址,请大家手下留情

JavaScript cookie操作实现点赞功能相关推荐

  1. php qq点赞,javascript - 手机qq的点赞功能实现原理?

    过去多啦不再A梦2017-05-19 10:18:383楼 本来想贴代码,有点长 麻烦 我的做饭是把弹出变大的那个数字单独给一个p 然后给这个p加动画的样式 js文件抽离有点麻烦,给你看我的css的 ...

  2. javascript / jquery 操作 cookie

    什么是Cookie? 谓Cookie,是网页 通过浏览器保 存在用户本地计算机 上的一小段数据 .用户再次访问该网页的时候,浏览器会将这一小段数据发送给该网页.Cookie是网景公司的前雇员Lou M ...

  3. JavaScript实现评论点赞功能

    通过分析评论功能的逻辑关系,学会如何使用JavaScript实现评论.回复.点赞等各种功能 1.学会JavaScript处理日期和时间. 2.掌握Dom操作中的添加/删除子节点方法. 3.使用setT ...

  4. php cookie突然没,PHP利用Cookie设置用户30分钟未操作自动退出功能

    登陆控制器需要做的登陆成功把用户ID等信息存入cookie: $this->systemSetKey(array('name'=>$admin_info['admin_name'], 'i ...

  5. php登录后自动退出登录,PHP利用Cookie设置用户30分钟未操作自动退出功能

    登陆控制器需要做的登陆成功把用户ID等信息存入cookie: $this->systemSetKey(array('name'=>$admin_info['admin_name'], 'i ...

  6. 在JavaScript中操作Cookie

    在Windows系统中,cookie通常是被储存在C:\Documents and settings\用户名\cookie目录下(如果系统在C盘).其实每个cookie实际上就是一个文本文件,里面是用 ...

  7. cookie 操作详解 (asp.net javascript)

    (1)ASP.NET cookie 操作详解|cookie 写入.读取.修改.删除2008年10月18日     //写入     protected void Button2_Click(objec ...

  8. 使用JavaScript实现评论点赞功能

    http://www.php.cn/js-tutorial-357679.html 首页> js教程> 正文 使用JavaScript实现评论点赞功能 作者: default|标签:jav ...

  9. js 包含某个字符串_[译] 5 大 JavaScript 字符串操作库

    原文地址:5 String Manipulation Libraries for JavaScript 原文作者:Mahdhi Rezvi 译文出自:掘金翻译计划 本文永久链接:https://git ...

最新文章

  1. Redis 数据库结构设计
  2. 2019北邮计算机考研大纲,2019年北京邮电大学802电子电路考研大纲
  3. java agent技术原理及简单实现
  4. exsist什么意思_exists是什么意思_exists的翻译_音标_读音_用法_例句_爱词霸在线词典...
  5. Altium Designer20原理图库放置引脚报错解决方案
  6. 文件读取 linux_救命,Linux正在吃掉我的内存
  7. 【硬核科技】转行AI,从零出发
  8. 关于XML序列化与CultureInfo
  9. Python爬虫实战---抓取图书馆借阅信息
  10. flask+uwsgi 在调试过程中让python文件的更改自动重启uwsgi
  11. 含有自增序列的表中使用truncate与delete的不同结果
  12. libvirt 创建的文件
  13. 安卓手机管理_时间管理大师手机版下载-时间管理大师app下载v1.0.0 安卓最新版...
  14. 成都太升南路骗局揭秘
  15. 链游时代来临!1周12款游戏与公有区块链MagnaChain签约上链
  16. 【转】主板上的电压符号:vdd,vddq,5vsb,3.3sb,vcc3.3,Vdimm
  17. 第一次作业——肖祥英
  18. VUE activated,deactivated使用
  19. 哗哗地照样子写词语_描写哗哗的词语
  20. Studying Recommendation Algorithms by Graph Analysis

热门文章

  1. 《乐高EV3机器人搭建与编程》——1.3 LEGO单位
  2. 2019蓝桥杯小猫吃鱼解题
  3. Google Earth键盘/鼠标导航总结
  4. LGPL开源软件使用风险说明
  5. python正则表达式去掉小数点后面的0_java如何去掉一串数字前面没用的0,并且......
  6. 【经验分享】【沟通:人人会沟通】
  7. STM32F429I-DISCO 资料汇总
  8. Pandas删除重复行数据
  9. 这里是通过QQ邮箱 sina新浪邮箱 163邮箱的简单发送Email
  10. 三年级学生写数学用计算机算,三年级小学生数学练习题三篇