最近在做一个小项目,其中有个关于文章的顶/踩的实现,之前也没做过类似的案例。在网上找了半天,没有多大收获,于是乎决定按照自己的想法去做一个简单的例子,没想到成功了,呵呵,其实在下也不过是一菜鸟,拿出来与大家分享,其中不免会有漏洞,望大家见谅,也希望高手们多多指教。谢了

第一步,创建一个aspx页面--testMyCookie.aspx,页面代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="testMyCookie.aspx.cs" Inherits="testMyCookie" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"><title>测试cookie|简单的实现文章根据IP地址在规定时间内顶和踩受限</title>
</head>
<body><form id="form1" runat="server"><div><a href="testMyCookie.aspx?id=1">传递的参数id的参数值为1</a><a href="testMyCookie.aspx?id=2">传递的参数id的参数值为2</a><a href="testMyCookie.aspx?id=3">传递的参数id的参数值为3</a><a href="testMyCookie.aspx?id=4">传递的参数id的参数值为4</a><br /><br /><a href="testMyCookie.aspx?id=5">传递的参数id的参数值为5</a><a href="testMyCookie.aspx?id=6">传递的参数id的参数值为6</a><a href="testMyCookie.aspx?id=7">传递的参数id的参数值为7</a><a href="testMyCookie.aspx?id=88">传递的参数id的参数值为88</a><br /><br /><a href="testMyCookie.aspx?id=100">传递的参数id的参数值为100</a><a href="testMyCookie.aspx?id=101">传递的参数id的参数值为101</a><a href="testMyCookie.aspx?id=10">传递的参数id的参数值为10</a><a href="testMyCookie.aspx?id=1">传递的参数id的参数值为1(重)</a><br /><br />当前获取到的参数id是<asp:TextBox ID="TextBox1" runat="server" Width="478px"></asp:TextBox><br />当前的IP地址是:<asp:TextBox ID="TextBox2" runat="server" Width="507px"></asp:TextBox><br />处理后的IP地址是:<asp:TextBox ID="TextBox3" runat="server" Width="491px"></asp:TextBox><br />当前的cookie信息如下:<br /><asp:TextBox ID="TextBox4" runat="server" Height="73px" Width="633px"></asp:TextBox><br /><br /><asp:Button ID="Button1" runat="server" Text="删除cookie" οnclick="Button1_Click" /></div><asp:Literal ID="Literal1" runat="server"></asp:Literal></form>
</body>
</html>

第二步,testMyCookie.aspx--testMyCookie.aspx.cs的后台代码如下:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;public partial class testMyCookie : System.Web.UI.Page
{protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){this.Literal1.Text = "";//清空提示信息load();//首次加载,每次点击本页面的超链接也会执行该方法}}/// <summary>/// 删除cookie/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void Button1_Click(object sender, EventArgs e){this.Literal1.Text = "";//清空提示信息HttpCookie myCookie = Request.Cookies["GoodAndBad"];if (myCookie != null){myCookie.Expires = DateTime.Now.AddMilliseconds(0.0001);//1毫秒后失效Response.Cookies.Add(myCookie);HttpCookie myCookie2 = Request.Cookies["GoodAndBad"];this.TextBox4.Text = "当前的cookie值:" + myCookie2.Value.ToString();//文本框显示当前cook的value信息}}/// <summary>/// /// </summary>public void load(){# region 逻辑代码//实现思路--将传递过的的参数值和本机IP地址拼成一个有规律的字符串,//然后每次拼该字符串之前要做一次判断,//看看需要添加进来的字符串(参数值)是否已存在该字符串中,//若存在,说明已经执行过该操作了,下一步当然是给出提示了,从而满足我们的需要//其中省略了连接数据库后台判断等一些步骤.//不过既然是搞程序开发的,相信那些不用我说大家也知道应该在哪里添加判断,呵呵string id = "";//声明变量,存储参数id的值string newchar = "";//声明中间变量,存储id和IP拼成的字符串string user_IP = "127.0.0.7";//假设您的IP是127.0.0.7//获取客户端IPif (Request.ServerVariables["HTTP_VIA"] != null){user_IP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();}else{user_IP = Request.ServerVariables["REMOTE_ADDR"].ToString();}//文本框显示信息this.TextBox2.Text = "本机的IP地址是:" + user_IP;//将IP地址转成我们想要的字符串格式user_IP = user_IP.Replace(".", "|");this.TextBox3.Text = "处理后的地址是:" + user_IP;//接收参数id,一定要加异常处理,因为首次加载的时候cd=null,这里也可以改代码try{id = Request.QueryString["id"].ToString() + "|";}catch (Exception){//id = "0|";//throw;}//获取或创建cookie(获取和创建其实是一样的,就跟会话一样的)HttpCookie myCookie = Request.Cookies["GoodAndBad"];//判断获取到的cookieif (myCookie == null)//如果cookie还没被创建{//开始创建cookiemyCookie = new HttpCookie("GoodAndBad");newchar = user_IP;//拼字符串,本来应该写成newchar = id+user_IP,但是如果是第一次进来,id=nullmyCookie.Value = newchar;//给我们定义的cookie赋值,这一步很重要,不能少//myCookie.Name = "a";这个属性不需要,在例子中若加上就会有问题//设置过期时间为一天(这里可以修改参数,根据你的需求来定吧)myCookie.Expires = DateTime.Now.AddDays(1);Response.Cookies.Add(myCookie);//创建新对象并将其添加到 Cookies 集合(这句话不可少)}else{//拼字符串-->新字符串 = 处理过的参数值 + 以前的cookie的值(Value属性值)-->注意不是Valuesnewchar = id + myCookie.Value;//判断处理过的参数值是否已存在cookie中int panduannum = newchar.IndexOf("|" + id);//如果该参数值已存在,说明一执行过该操作(比如说已顶或踩过某篇文章)if (panduannum >= 0){//输出前台提示信息this.Literal1.Text = "<script>alert('已经评价过该文章!感谢您的参与!');</script>";}else{拼字符串-->新字符串 = 处理过的参数值 + 以前的cookie的值(Value属性值)-->注意不是Values//newchar = id + myCookie.Value;//这里可以与数据库做交互了,比如实现文章或电影的好评与差评//.......................//输出前台提示信息this.Literal1.Text = "<script>alert('评价成功了!感谢您的参与!');</script>";myCookie.Value = newchar;//给我们定义的cookie赋值,这一步很重要,不能少//myCookie.Name = "a";这个属性不需要,在例子中若加上就会有问题myCookie.Expires = DateTime.Now.AddDays(1);//一天过期(时间可以根据需求设置)Response.Cookies.Add(myCookie);//创建新对象并将其添加到 Cookies 集合(这句话不可少)}}this.TextBox4.Text = "当前的cookie值:" + myCookie.Value.ToString();//文本框显示当前cook的value信息# endregion}
}

第三步,新建一个项目,把以上代码copy到项目中运行就能看到效果了

截图1:第一次点击"传递的参数id的参数值为1"

截图2:再次点击"传递的参数id的参数值为1"

同一篇文章,一个IP地址在一天内只允许评价他一次,基本实现

转载于:https://www.cnblogs.com/itnongmin/articles/cookie.html

采用cookie简单实现文章顶/踩功能相关推荐

  1. phpcms 添加顶踩功能

    phpcms 没有顶踩功能,着实有点蛋疼,下面说一下添加方法.首先附一张效果图片: 1.先下载下面的文件上传到网站根目录: 点这里下载 d顶踩插件.zip(编码为GBK 如果你的网站UTF-8请自行换 ...

  2. Emlog插件小刀娱乐网同款文章顶踩源码

    介绍: Emlog小刀娱乐网同款顶踩插件免费发布 前些天看到小刀娱乐网的文章页面有了一些变化,那就是增加了一个有价值/无价值的顶踩按钮. 样式也是非常的好看 再加上两个表情包是非常的有趣. 网盘下载地 ...

  3. php实现一个简单的访客统计功能

    文章来源:https://www.zixuephp.net/article-113.html 对我帮助非常大,谢谢 一.文件方式简单统计 用php实现一个简单的访客统计功能,统计网站的总访问量是多少, ...

  4. 如何在项目中实现类似于微信的置顶与取消置顶的功能?

    - 借鉴微信的置顶与取消置顶的实现思路: 会看到这个微信的聊天记录的排序规则是以时间降序来进行排序的,如果要实现置顶与取消置顶? 一下子是想不到的,需要思路 由此可以确信的是,我们平时使用微信时,最新 ...

  5. elementui带输入建议查询_elementUi简单实现搜索提词功能

    上周又又又又加需求了,好吧,bring it on 先讲需求目标要实现功能 focus的时候要出历史搜索(要存缓存) 历史搜索下部出现清除缓存按钮 input的时候要根据后台返回出提词 element ...

  6. python做视频特效_python实现超简单的视频对象提取功能

    视频对象提取 与其说是视频对象提取,不如说是视频颜色提取,因为其本质还是使用了OpenCV的HSV颜色物体检测.下面话不多说了,来一起看看详细的介绍吧. HSV介绍 HSV分别代表,色调(H:hue) ...

  7. python jieba库分词_Python基于jieba库进行简单分词及词云功能实现方法

    本文实例讲述了Python基于jieba库进行简单分词及词云功能实现方法.分享给大家供大家参考,具体如下: 目标: 1.导入一个文本文件 2.使用jieba对文本进行分词 3.使用wordcloud包 ...

  8. PHP阅读文章送积分规则代码,php实现微信公众号文章付费阅读功能的代码分享

    关于php实现微信公众号文章付费阅读功能,就是一片公众号文章,点进去显示标题,作者,时间,公众号名称和部分内容,要想阅读所有内容,那就支付0.01元就可以阅读所有的内容,这就是付费阅读!!!当然金额可 ...

  9. 简单实现一个手持弹幕功能+文字抖动特效

    简单实现一个手持弹幕功能+文字抖动特效 效果展示 代码如下 小程序内更多配置效果预览 总结 前段时间抖音上有个抖动弹幕挺火的,于是决定仿写一个,话不多说,先看效果- 效果展示 GIF图看着有点模糊,但 ...

最新文章

  1. php的hashmap,php如何实现hashmap
  2. centos7 安装git_如何在 CentOS 7 上挂载 Amazon EFS 文件系统?
  3. TCP和UDP的区别(转)
  4. Java 8大原子操作
  5. 深度阅读之《Mastering Go》
  6. amoeba mysql proxy_mysql proxy amoeba安装配置
  7. Python 爬虫进阶三之 Scrapy 框架安装配置
  8. Redis启动的三种方式
  9. python torch exp_学习Pytorch过程遇到的坑(持续更新中)
  10. Hadoop学习总结(2)——Hadoop入门详解
  11. oracle 赋予dorp,oracle表空间(tablespace)的增删改查(create/drop/rename,move/select)
  12. 远程传输文件--java文件流
  13. 金税盘组件接口调用方法
  14. Xshell使用教程及WinSCP使用教程
  15. 医学计算机应用基础表格,计算机应用基础-04-WORD表格
  16. STM32 DHT11
  17. 计算机网络的软件系统包括哪几部分,系统软件由哪几部分组成?
  18. 半导体储存器例题小试--十安辰
  19. MoveKit:一款功能强大的Cobalt Strike横向渗透套件
  20. MacM1-Miniconda相关合集

热门文章

  1. Retrofit的讲解和使用
  2. Activity管理类,随时随地退出应用程序
  3. [NOIp模拟题] test
  4. 标准模块 os.stat
  5. perl,shell中如何打印出处理sql语句变量的单引号
  6. Lombok学习笔记— 消除冗余java代码
  7. 已有记录表添加特定排序主键ID
  8. 第一节 MongoDB介绍及下载与安装
  9. 基于XML操作辅助类
  10. Web 开发的 JavaScript 框架资料收集(15款)