2012-02-22 38 views
0

我有一个用户需要登录的网站,并且认证是基于SESSION变量和数据库的。,有什么建议吗?

为了简化起见,让我这样描述: 我拥有属于组的简单用户,并且我有组管理员。他们都拥有订阅。当一个小组经理决定升级服务时,立即为所有用户完成。我需要更新所有订阅,我需要单独为每个订阅收费。

所以。我需要做的就是去到DB,并开始去逐个:

1. charge 
2. receive status from cc company. 
3. update the DB entry accordingly. 
4. repeat for next simple user 

的事情是,当一组管理器更新服务,我需要射击一个批处理过程,这可能需要一段时间才能完成,但如果组管理员由于某种原因关闭了浏览器(按下停止按钮,电源熄灭,连接断开等其他原因),则操作无法完成。用户将不受处理。

我认为这样做的方法是使用PHP脚本启动shell命令。我会发送参数到脚本系统(“php batch.php?ID = $ group_id?process = all”),这反过来可能会完成工作。

我的问题是,我习惯于通过SESSION参数等认证我的用户和整个网站的数据,但是在这种情况下(调用系统命令),我不能真正去检查谁解雇了那个剧本。它可能是一个用户,它可能是我想要的脚本。

我想阻止用户访问该脚本,并且我希望脚本在发布后完成。

我该如何做到这一点?还有其他建议吗?

谢谢!

+0

做射击之前的认证系统调用..并阻止网络服务器访问bach.php – 2012-02-22 11:35:57

+0

伟大的,我该如何防止访问该脚本? – Ted 2012-02-22 11:57:19

+0

检查您的网络服务器的文档...谷歌?所以? – 2012-02-22 13:07:01

回答

2
  1. 值传递作为参数的argv(php batch.php $group_id all
  2. 检查是否这些在$_SERVER['argv']

存在对于记录,$_SERVER['argv']$_GET为命令行。网页无法设置argv值,所以你很安全。

更好的当然是简单地不把这个文件放在你的web目录中。

+0

嗯,我找不到$ _SYSTEM数组,但显然有一个保留$ argv [],$ argc会帮助,谢谢! – Ted 2012-02-23 18:11:33

+0

等一下,什么?我的意思是'$ _SERVER'。更新了我的答案。你一定要避免使用$ argv和$ argc。 – 2012-02-23 21:11:21

+0

哦...为什么不使用argv和argc? – Ted 2012-02-23 23:43:03

相关问题