//投票
protected void btn_Vote_Click(object sender, EventArgs e)
{
string userIpAddress = Request.UserHostAddress.ToString();//获取用户本地的IP地址
HttpCookie oldCookie=Request.Cookies["UserIP"];//创建Cookie对象
if (oldCookie == null)//该用户没有投票记录
{
int flag = this.rbl_Evaluate.SelectedIndex;//获取用户投票的选项
switch (flag)
{
case 0: AddCount(Server.MapPath("Result1.txt")); break;
case 1: AddCount(Server.MapPath("Result2.txt")); break;
case 2: AddCount(Server.MapPath("Result3.txt")); break;
default:
break;
}
Page.RegisterClientScriptBlock("", "<script>alert('投票成功,谢谢您的参与')<script>");
HttpCookie newCookie = new HttpCookie("UserIP");//创建新的Cookie对象
newCookie.Expires = DateTime.MaxValue;//设置Cookie的有效时间
newCookie.Values.Add("IPAddress", userIpAddress);//添加用户的IP地址在Cookie中,保存起来
Response.AppendCookie(newCookie);//将变量写入Cookie文件中
}
else
{
string userOldAddress = oldCookie.Values["IPAddress"].ToString();
if (userIpAddress.Trim() == userOldAddress.Trim())//创建Cookie对象
{
Page.RegisterClientScriptBlock("", "<script>alert('每天只能投票一次,谢谢您的光顾!!')</script>");
}
else
{
HttpCookie newCookie = new HttpCookie("UserIP");//创建新的Cookie对象
newCookie.Values.Add("IpAddress", userIpAddress);
newCookie.Expires = DateTime.MaxValue;
Response.AppendCookie(newCookie);
int flag = this.rbl_Evaluate.SelectedIndex;
switch (flag)
{
case 0: AddCount(Server.MapPath("Result1.txt")); break;
case 1: AddCount(Server.MapPath("Result2.txt")); break;
case 2: AddCount(Server.MapPath("Result3.txt")); break;
default:
break;
}
Page.RegisterClientScriptBlock("", "<script>alert('投票成功谢谢您的参与')</script>");
}
}
}
/// <summary>
/// 读取文本文件中的数字
/// </summary>
/// <param name="str_path">文本文件的路径</param>
/// <returns>返回结果</returns>
protected static int ReadCount(string str_path)
{
int count = 0;//创建整形的变量
System.IO.StreamReader srd;//创建流读取对象
srd = System.IO.File.OpenText(str_path);//打开指定的文本文件
if (srd.Peek()!=-1)//如果有数据
{
count = int.Parse(srd.ReadLine());//读取文本文件的数字赋值给count
}
srd.Close();//关闭流对象
return count;
}
/// <summary>
/// 对现有的投票数进行增加
/// </summary>
/// <param name="str_path">文本文件的路径</param>
protected static void AddCount(string str_path)
{
int count = ReadCount(str_path);
count += 1;
System.IO.StreamWriter swr = new System.IO.StreamWriter(str_path);//将数据的记录写入文件
swr.WriteLine(count);
swr.Close();
}