2

我正在尝试开发一个应用程序,来宾用户只能看到搜索结果 10 次,之后他应该被定向到付款页面。我可以在搜索结果页面上使用会话,但我怎样才能在上面设置一个计数器。任何人都可以帮助我。

4

6 回答 6

4

如果您应该对当前正在运行的会话设置搜索限制,那么您可以使用$_SESSION['count']++. 如果你应该设置每天的搜索限制而不是你可以使用'UPDATE users SET search_count = search_count+1'

于 2012-04-26T11:42:55.733 回答
4

每次创建搜索请求时,您只需执行

$_SESSION['counter']++

尽管他可以通过删除 cookie 来摆脱限制。另一种方法是,将搜索请求的数量存储在包含 IP 地址的数据库表中,但这也可以绕过,尽管这样做需要更多的工作。

于 2012-04-26T11:31:28.367 回答
2

这取决于您是否允许他在访问您的网站时再次搜索,或者即使在他一年后访问后也只允许他搜索 10 次。

对于临时基地,您可以使用 cookie(参见setcookie功能),但如果您想一劳永逸地限制他,则必须将该信息保存在数据库中。

您将编写如下代码:

<?php
  session_start();

  $_SESSION['counter'] += 1;
  // more logic/code

现在您必须保存 的值$_SESSION['counter']

于 2012-04-26T11:31:40.903 回答
2

如果您的用户只能在登录时搜索,那么我认为没有问题 - 您肯定有用户的 db 表,所以只需向其中添加另一列,例如“search_count”,并在每次用户尝试搜索时将其增加一。

例如:

UPDATE `users` SET search_count = search_count+1
于 2012-04-26T11:32:28.063 回答
2

您还可以在数据库的用户表中使用计数器,并在用户每次查找结果时调用一个函数,该函数将值加一,因此是一个简单的 UPDATE。

于 2012-04-26T11:32:36.483 回答
0

我认为维护数据库会比维护 SESSION 好得多,因为可能是由于某些原因会话被删除或删除。

users例如visit,在表名中添加一个字段,default value 0并在每次访问搜索结果页面时更新此字段。

 "update usertablename set visitfield = visitfield + 1 where user_id = ".$current_user_id

谢谢

于 2012-04-26T12:14:53.240 回答