C# 在C中存储和检索cookie值#

C# 在C中存储和检索cookie值#,c#,cookies,C#,Cookies,我有一个老虎机应用程序,它用c#显示一个flash文件。任何用户都会来到这个网站,玩这个游戏。但我需要限制每天最多3次,这意味着他只能玩3次游戏,如果他第四次去玩,他会收到一条信息,表明他第二天可以玩。因为这个站点上没有用户登录,所以我决定存储cookie值。这将是计数器,每次他进入该站点时,计数器都会增加。然后,在每个页面加载事件上,检索cookie值,如果为3,则显示禁止播放消息 首先,我将在页面加载事件中检索cookie的值 string _counter = response.Cooki

我有一个老虎机应用程序,它用c#显示一个flash文件。任何用户都会来到这个网站,玩这个游戏。但我需要限制每天最多3次,这意味着他只能玩3次游戏,如果他第四次去玩,他会收到一条信息,表明他第二天可以玩。因为这个站点上没有用户登录,所以我决定存储cookie值。这将是计数器,每次他进入该站点时,计数器都会增加。然后,在每个页面加载事件上,检索cookie值,如果为3,则显示禁止播放消息

首先,我将在页面加载事件中检索cookie的值

string _counter = response.Cookies["slotmachinecookie"]["counter"];
    if (!IsPostBack)
    {
    if (_counter) = 3
       //displayMessage
       return;
    else
    {
       HttpCookie cookie = new HttpCookie("slotmachinecookie");
       if (string.IsNullOrEmpty(_counter))
         cookie.Values.Add("1", "counter");
       else if (_counter == "1")
         cookie.Values.Add("2", "counter")
       else if (_counter == "2")
         cookie.Values.Add("3", "counter");
    }
}

这样行吗?我想我可以试试,但只是想确定是否有比饼干更好的方法?提前感谢。

根据我的评论,您的方法会奏效,但精明的用户可以通过清除cookies并全天继续玩来克服您的使用限制

虽然cookie方法很简单,但它确实存在漏洞

您可能要考虑的是捕获用户输入的IP地址,并将其存储在数据库中,或本地缓存(取决于应用程序是如何构建的)或其他存储库。 您可以使用服务器请求变量

REMOTE\u ADDR
捕获传入的IP地址

Request.ServerVariables["REMOTE_ADDR"]
同样,根据您的应用程序的托管方式,您的提供商可能无法正确报告这一情况(例如,如果您的服务器位于负载平衡器后面,负载平衡器可能是负载平衡器的IP)。您可能还需要检查提供商是否使用“X_FORWARDED_FOR”标题转发此信息。(某些设备在此标题的名称上使用不同的变体…请查看您的文档。)

因此,这将是一个更复杂的一点,但也将能够关闭洞多一点,以限制使用只有3次一天


我希望这有帮助。祝你好运

根据我的评论,你的方法是可行的,但是一个精明的用户可以通过清除cookies并全天继续玩来超越你的使用限制

虽然cookie方法很简单,但它确实存在漏洞

您可能要考虑的是捕获用户输入的IP地址,并将其存储在数据库中,或本地缓存(取决于应用程序是如何构建的)或其他存储库。 您可以使用服务器请求变量

REMOTE\u ADDR
捕获传入的IP地址

Request.ServerVariables["REMOTE_ADDR"]
同样,根据您的应用程序的托管方式,您的提供商可能无法正确报告这一情况(例如,如果您的服务器位于负载平衡器后面,负载平衡器可能是负载平衡器的IP)。您可能还需要检查提供商是否使用“X_FORWARDED_FOR”标题转发此信息。(某些设备在此标题的名称上使用不同的变体…请查看您的文档。)

因此,这将是一个更复杂的一点,但也将能够关闭洞多一点,以限制使用只有3次一天


我希望这有帮助。祝你好运

如果是新的一天,我没有看到你在哪里检查日期并将计数重置为零


还有,是每天还是每24小时?

我看不出您在哪里检查日期,如果是新的一天,则将计数重置为零


还有,是每天还是每24小时一次?

我想我可以试试……
我想你的方向是对的。:)呵呵,谢谢你,保罗。我只是想知道还有没有别的办法…谢谢!!我会尝试一下。别忘了,一旦用户发现您正在通过cookies跟踪他们的使用情况,他们就可以清除cookies并继续播放。
我想我可以试试……
我认为您的方向是正确的。:)呵呵,谢谢你,保罗。我只是想知道还有没有别的办法…谢谢!!我会尝试一下。别忘了,一旦用户发现你通过cookies跟踪他们的使用情况,他们就可以清除cookies并继续播放。这个还有一个漏洞:如果用户关闭并打开电缆调制解调器,可能会获得一个新的IP地址,那么这个检查也会失败。另一方面,我不认为他还能做什么,所以这种方法或cookie方法几乎是他唯一的选择。小小的修正——实际上是
Request.ServerVariables
,而不是
Request.Server
。但是我个人更喜欢
Request.UserHostAddress
,它可以让你得到同样的东西,但是编译是安全的。@Joe Enos-谢谢…更正了代码。我想我不应该忘记太多了@伊卡洛斯-说得好。虽然情况并非总是如此。在过去的3个月里,我在家里多次重启我的电缆调制解调器,我的IP没有改变(而且我没有一个静态IP地址)。这可能只是运气,这是一个很好的观点。你不能指望IP是恒定的。谢谢这一个也有一个漏洞:如果用户关闭并打开电缆调制解调器,很可能会获得一个新的IP地址,那么该检查也会失败。另一方面,我不认为他还能做什么,所以这种方法或cookie方法几乎是他唯一的选择。小小的修正——实际上是
Request.ServerVariables
,而不是
Request.Server
。但是我个人更喜欢
Request.UserHostAddress
,它可以让你得到同样的东西,但是编译是安全的。@Joe Enos-谢谢…更正了代码。我想我不应该忘记太多了@伊卡洛斯-说得好。虽然情况并非总是如此。在过去的3个月里,我在家里多次重启我的电缆调制解调器,我的IP没有改变(而且我没有一个静态IP地址)。这可能只是运气,这是一个很好的观点。你不能指望IP是恒定的。谢谢