【发布时间】:2012-02-22 11:31:16
【问题描述】:
我有一个用户需要登录的网站,并且身份验证基于 SESSION 变量和 DB。
为了简化,让我这样描述: 我有属于组的简单用户,我有组管理员。他们都拥有订阅。当组经理决定升级服务时,会立即为他的所有用户完成。我需要更新所有订阅,并且需要单独为每个订阅收费。
所以。我需要做的就是去DB,开始一个一个的去:
1. charge
2. receive status from cc company.
3. update the DB entry accordingly.
4. repeat for next simple user
问题是,当组管理员更新服务时,我需要启动批处理,这可能需要一段时间才能完成,但如果组管理员出于某种原因关闭浏览器(按下停止按钮, 断电, 无数其他原因导致连接断开), 动作无法完成。并且用户不会得到治疗。
我认为解决此问题的方法是使用 PHP 脚本启动 shell 命令。我会将参数发送到像 system("php batch.php?ID=$group_id?process=all") 这样的脚本,这反过来可能会完成工作。
我的问题是,我习惯于通过 SESSION 参数等对我的用户和整个网站的数据进行身份验证。但在这种情况下(调用系统命令),我不能真正去检查谁实际解雇了那个脚本。它可能是用户,也可能是我想要的脚本。
我想阻止用户访问该脚本,并且我希望该脚本在发布后完成。
我怎样才能做到这一点?还有其他建议吗?
谢谢!
【问题讨论】:
-
在触发该系统调用之前进行身份验证.. 并防止 Web 服务器访问 bach.php
-
太棒了,如何防止访问该脚本?
-
检查您的网络服务器的文档...谷歌?所以?