2016-05-23 59 views
0

我已经创建了,我有两种类型的用户的系统中的PHP脚本: 正宗用户 演示用户运行在关闭浏览器

正品的用户均是现实生活的用户的用户,所有数据属于这些用户是需要的。 演示用户是虚拟用户创建的用户,仅用于演示目的。不需要此类用户的信息。

当真实的用户登录时,他执行操作并保存其数据并注销。所有信息都保存在数据库中。

当演示用户登录时,他执行相同的操作并注销。我创建了一个脚本,用于在注销时删除演示用户的所有数据。

当演示用户没有注销但只是关闭浏览器时出现问题。删除脚本不会运行,它出现在“注销页面”上。

我想要在浏览器关闭时运行脚本并删除成功。

+4

它会是一个问题,使用cron作业来删除不活动的用户? – rsz

+0

我认为cron工作计划。意味着具体time.Not在行动 – Francis

+0

[beforeunload](https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload)是最好的,但这就是说,如果页面远离浏览,而不仅仅是浏览器关闭。国际海事组织我不会依靠用户浏览器来解决这个问题。 rsz提到的cron是一个更好的选择。 – castis

回答

1

您可以使用后台进程(cron)[在基于unix的服务器上查找crontab],例如每隔5分钟执行一次,并删除所有不需要的数据。

如果你不想使用cron,你也可以使用一个函数来删除你在每次登录或注销时不需要的所有数据,但请记住,这会影响用户体验在有大数据的情况下加载次数。

我建议第一种方法,但也许第二种方法对你更容易。

;)

0

在Javascript中,你可以得到onunload event,页面退出之前调用。在用户退出该页面之前,您可以对.php脚本执行AJAX请求,以便在用户退出时销毁服务器上演示的所有数据,即使他没有手动注销也是如此。

+3

这会叫它总是?你如何区分“正在加载不同页面的用户”的“离开用户”? – rsz

+0

我认为你必须手动完成。您可以在单击页面上的链接时设置回调,当它是内部链接时,可以将布尔值设置为“true”,例如,当它是外部链接时,则为“false”。在启动脚本来擦除数据之前,检查布尔值是否设置为“true”或“false”。这将适用于链接或表单,但不能在用户重新加载页面时使用。 – Olivier