全网科技最近完成的
网站案例 [了解详情]
该实例使用的是动态生成投票的方式,当选择某一项投票后,自动生成投票标题和选项。投票防作弊通用两种方法,IP判断和cookie判断。该实例共有三个页面(投票页面,查看结果页面,投票管理页面),一个类(DB.cs)。
在DB中有GetCon(配置连接字符串并返回SqlConnection),ExSql(执行sql语句并返回Bool显示是否成功),reDs(查询数据库并返回DataSet)三个方法。
在投票页面中有labVoteTitle(投票标题Label控件),rblVoteItem(投票选项RadioButtonList控件),btnVote(我要投票Button控件),btnResult(查看结果Button控件)。
cs代码:


{
if (!IsPostBack)

//获取用户选择的投票标题
M_Str_voteID=Request[“voteID“];
//绑定投票标题和投票选项
labBind();
rblBind();




{
DataSet ds = DB.reDs(“select voteTitle from tb_Vote where voteID=“+M_Str_voteID);
labVoteTitle.Text = ds.Tables[0].Rows[0][0].ToString();



{
DataSet ds = DB.reDs(“select * from tb_Vote where voteID=“ + M_Str_voteID);
rblVoteItem.DataSource = ds;
//voteContent字段绑定到text,voteItemID绑定到value
rblVoteItem.DataTextField = “voteContent“;
rblVoteItem.DataValueField = “voteItemID“;
rblVoteItem.DataBind();



{
//投票防作弊
HttpCookie makecookie = new HttpCookie(“Vote“ + M_Str_voteID);//创建cookie
HttpCookie readcookie = Request.Cookies[“Vote“ + M_Str_voteID];//读取cookie
if (readcookie == null)

//从未投过票的话,将参与投票的标题放进cookie,并设置过期时间
makecookie.Values.Add(“VoteItem“, “<“ + M_Str_voteID + “>“);
makecookie.Expires = DateTime.MaxValue;

else

//读取已投票的项
string P_Str_AllItem = readcookie.Values[“VoteItem“].ToString();
//如果未对该主题投过票,将该主题添加到cookie中
if (P_Str_AllItem.IndexOf(“<“ + M_Str_voteID + “>“) == –1)

makecookie.Values.Add(“VoteItem“, readcookie.Values[“VoteItem“] + “<“ + M_Str_voteID + “>“);

else

Response.Write(“<script language=javascript>alert(‘该主题你已经投过票,不能重新投票!’);</script>“);
//这里return很关键,直接跳出btnVote_Click事件
return;


//执行投票操作,票数+1
string P_Str_voteItemID = this.rblVoteItem.SelectedValue;
string P_Str_cmdtxt = “update tb_VoteItem set voteTotal=voteTotal+1 where voteItemID=“ + P_Str_voteItemID + “ and voteID=“ + M_Str_voteID;
bool P_Bl_reVal = DB.ExSql(P_Str_cmdtxt);
if (P_Bl_reVal)

//写入cookie
Response.AppendCookie(makecookie);
//在新窗口中弹出投票结果
Response.Write(“<script language=javascript>alert(‘投票成功,感谢你的支持!’);windows.open(‘VoteResult.aspx?voteID=“ + M_Str_voteID + “&title=“ + Server.UrlEncode(labVoteTitle.Text) + “‘,’new’);</script>“);

else

Response.Write(“<script language=javascript>alert(‘投票失败!’);</script>“);




{
Response.Write(“<script language=javascript>alert(‘投票成功,感谢你的支持!’);windows.open(‘VoteResult.aspx?voteID=“ + M_Str_voteID + “&title=“ + Server.UrlEncode(labVoteTitle.Text) + “‘,’new’);</script>“);

命运负责洗牌,但是玩牌的是我们自己!
原文:https://www.cnblogs.com/shanymen/archive/2009/05/28/1491242
原文:https://www.cnblogs.com/shanymen/archive/2009/05/28/1491242