【问题标题】:how can delete inactive useres automatically after 24 hrs in classic asp如何在经典asp中24小时后自动删除非活动用户
【发布时间】:2012-07-26 12:51:41
【问题描述】:

我用 Classic ASP 编写了一个注册系统。用户注册并将收到一封激活电子邮件。 我想删除记录(用户),如果用户在 24 小时后没有通过点击激活链接激活他们的帐户。

怎么办?

我的 users 表有这些行(我正在使用 Access):

UserID     text
Username   text
Password   text
Email      text
Hash       text
join_date  date/time
active     Yes/No

P.s:我无法访问 IIS 配置,因为我的网站存储在公共服务器上而不是专用服务器上

【问题讨论】:

  • 为什么不每天晚上运行一个脚本来查询数据库并删除超过 24 小时前创建但尚未激活的所有记录?您真的需要在帐户创建 24 小时后将其删除吗?
  • 我要删除24小时后未激活的账号!
  • 那我不明白你的问题。你知道他们什么时候加入的,你现在知道时间。您还知道他们是否激活了他们的帐户。因此,您只需检查他们加入后是否已经 24 小时。如果 Now -joined_date > 24 hours && active = false,则删除整个用户行。
  • 是的,我知道该怎么做! (我正在使用 DateDiff() )但问题是如何自动完成!按时间表:)
  • 不适用于经典 ASP。拥有独立的 VBScript(最简单的方法)文件并安排它每 24 小时运行一次。

标签: asp-classic global.asa


【解决方案1】:

如果您无法创建计划任务来运行 ASP 脚本,那么最好的办法是在 global.asa 中的 Session_OnStart 事件中执行此操作。每次启动新会话(新用户访问)时都会运行。如果您在“应用程序”变量中设置上次运行时间,则可以选择仅在经过设定的时间后运行例程以删除这些用户。但是,如果您的网站没有经常访问者,那么它就不会经常运行。

Sub Session_OnStart
   'Runs on application start or after 15 minutes
   If Application("LastRun") = "" Or DateDiff(n, Application("LastRun"), Now()) > 15 Then
       'Your code to delete users here, a query like this...
       'DELETE FROM [tableName] WHERE [active] = 0 AND DATEDIFF(hh, [join_date], GETDATE()) >= 24
       Application("LastRun") = Now()
   End If
End Sub

【讨论】:

  • 谢谢约翰,但正如你所说,当用户访问该站点时它会运行,但问题仍然存在,无论如何谢谢你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多