当前位置:编程学习 > C#/ASP.NET >>

防止重复投票 不懂

public partial class Vote : System.Web.UI.Page
{
    public static string M_Str_voteID;
   
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            M_Str_voteID = Request["voteID"];
            labBind();//显示投票标题
            rblBind();//显示投票选项
        }
    }
    public void labBind()
    {
        DataSet ds = DB.reDs("select voteTitle from tb_Vote where voteID=" + M_Str_voteID);
        labVoteTitle.Text = ds.Tables[0].Rows[0][0].ToString();
    }
    public void rblBind()
    {
        DataSet ds = DB.reDs("select * from tb_VoteItem where voteID=" + M_Str_voteID);
        rblVoteItem.DataSource = ds;
        rblVoteItem.DataTextField = "voteContent";
        rblVoteItem.DataValueField = "voteItemID";
        rblVoteItem.DataBind();
    }
    protected void btnVote_Click(object sender, EventArgs e)
    {
        HttpCookie madecookie = new HttpCookie("Vote" + M_Str_voteID);
        HttpCookie readcookie = Request.Cookies["Vote" + M_Str_voteID];
        if (readcookie == null)
        {
            madecookie.Values.Add("VoteItem", "<" + M_Str_voteID + ">");
            madecookie.Expires = DateTime.MaxValue;
              Vote跟VoteItem之间有联系么?
        }
        else
        {
            string p_str_allitem = readcookie.Values["VoteItem"].ToString();
            if (p_str_allitem.IndexOf("<" + M_Str_voteID + ">") == -1)
            IndexOf是否因找不到匹配项的索引,就会等于-1??
           {

                madecookie.Values.Add("VoteItem", readcookie.Values["VoteItem"] + "<" + M_Str_voteID + ">");这里添加时,为什么要用到readcookie.Values["VoteItem"],而不是直接用+ "<" + M_Str_voteID + ">"??

            }
            else
            {
                Response.Write("<script language=javascript>alert('该主题你已经成功投过票,不能重新投票!');</script>");
                return;
            }
        }
        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)
        {
            Response.AppendCookie(madecookie);这句是什么意思?
            Response.Write("<script>alert('投票成功,感谢您的支持!');window.open('VoteResult.aspx?voteID=" + M_Str_voteID + "&title=" + Server.UrlEncode(labVoteTitle.Text) + "','new');</script>");
        }
        else
            Response.Write("<script>alert('投票失败!');</script>");
    }
    protected void btnResult_Click(object sender, EventArgs e)
    {
        Response.Write("<script>window.open('VoteResult.aspx?voteID=" + M_Str_voteID + "&title=" + Server.UrlEncode(labVoteTitle.Text) + "','new');</script>");
    }
} --------------------编程问答-------------------- 重复投票,不是通过IP地址和规定时间来做么。还要做验证码。。 --------------------编程问答-------------------- 你这个是通过cookie来记录并实现屏蔽的 
Vote跟VoteItem之间有联系么?
这个vote是标示,voteItem是里面的键值对的键

详细的自己去搜索下cookie
--------------------编程问答-------------------- 另外cookie实现投票,若是我清楚cookie呢?? --------------------编程问答-------------------- 一般投票系统必须要保证投票的公正、公平性。系统在这方面对每个前台用户所投出的票,都有记录下他的IP 地址。
可以判断用户。已经投了的就不能重复再投票。 --------------------编程问答-------------------- 通过IP来限制吧
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,