2012-02-22 66 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

相關問題