php - 如果其他人同时打开特定网页,则不允许访问该网页

标签 php mysql

我开发了一个网站,其中服务器端编码是通过 PHP 完成的,我使用的是 MySQL 数据库。我的网站上有一个特定页面一次只能打开一次,也就是说,如果一个人同时打开该页面,第二个人应该收到一条消息“此页面已被某人打开,您可以“此时不要使用它”我想到了一个逻辑,我将时间戳存储在数据库中并比较数据库中的时间,如果与该时间相同,则意味着该页面是由其他人打开的,因此应该限制访问。但我觉得这个逻辑并不可靠。是否还有其他可以实现的逻辑?

最佳答案

显然,这是一个相当悬而未决的问题,如果不实际查看您的数据库/代码,就不可能给出完整的解决方案。

但是,这是一个非常稳定的逻辑:

用户尝试访问当前页面。

1) PHP 检查数据库,如果 session_on_page 不是 Y

1a) 如果Y:错误消息,页面正在使用。

1b) 如果不是Y,则允许用户访问并将session_on_page_user 设置为用户登录 ID 或用户名等。

2) 页面加载时,启动 AJAX session ,每 5 秒重新记录一次 Y 以及当前的用户名

2.1) 使用 JavaScript,检查 onunload 并运行 AJAX 函数,将 session_on_page 设置为 N 并删除 session_on_page_user.

如果只是为了查看数据,这个过程就很好。如果页面上还进行了任何表单/编辑,我建议将当前时间与用户名一起进行散列,以创建一个对该用户唯一的相当安全的散列 key ,并在执行任何更新时将其与服务器时间进行比较。根据您的情况,您可能希望比这更安全。您还可以使用 PHP session 来仔细检查,甚至可能进行一些 Apache 处理。

就像我说的,这是一个相当广泛的问题,因此我们只能真正根据逻辑提出建议。

关于php - 如果其他人同时打开特定网页,则不允许访问该网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34198590/

相关文章:

mysql - 表连接列名到列值

php - git 分支切换 Laravel 时发生 ReflectionException 类不存在

mysql - 如何在 bash 脚本中将变量传递给 SSH 命令

php - 单击以使用 jquery 将动态行添加到现有记录

php - 使用php从数据库中删除评论

mysql - MySQL bool 搜索中关键字的排序规则是什么?

PHP通过链接查询字符串参数

php - 为什么 MySQL INSERT 语句无法正常运行

php - "!=="和 "==!"之间的区别

php - Doctrine_Table 中的查询生成器?