你可以在上傳文件之前運行一些腳本在PHP開始?例如,我在發佈upload.php,並在該文件中,我想先檢查他們的$ _SESSION,然後纔開始浪費帶寬,並將文件統計信息上傳到我的服務器。我在nginx上使用php 5.2.11。有沒有辦法在上傳開始之前運行一些腳本在PHP中?
<?php
if ($_SESSION['admin'] == 'YES') {
// do upload here
} else {
exit;
}
?>
你可以在上傳文件之前運行一些腳本在PHP開始?例如,我在發佈upload.php,並在該文件中,我想先檢查他們的$ _SESSION,然後纔開始浪費帶寬,並將文件統計信息上傳到我的服務器。我在nginx上使用php 5.2.11。有沒有辦法在上傳開始之前運行一些腳本在PHP中?
<?php
if ($_SESSION['admin'] == 'YES') {
// do upload here
} else {
exit;
}
?>
不可以。只有在文件上傳後,請求才會到達PHP引擎。
不,因爲上傳是請求的一部分,並且在PHP甚至發揮作用之前完成。
There 可能是一種解決這個問題的方法,它使用基於PHP/Perl的上傳器的技術,以某種方式掛鉤上傳過程,但也可能沒有。特別是當你使用不同的網絡服務器時。
我會爲正確的會話快速執行基於Ajax的檢查,並將其綁定到您上傳文件的表單的submit
事件。它可能需要半秒鐘,但對用戶來說完全不顯眼。
爲什麼只是不顯示上傳表單給未經授權的用戶? – 2010-03-24 21:48:53
@COl。彈片我假設他想確保會議沒有過期。 – 2010-03-24 21:58:48
這樣做的根本原因是上傳只是請求的主體部分中的大塊編碼數據。在PHP級別,您無法阻止客戶端向正文中的數據發出POST請求。在服務器級別,它在技術上是可能的(如果沒有在頭文件中找到有效的會話ID,請關閉連接),但我認爲除非您編寫自定義模塊等,否則不能在此級別配置Web服務器。在nginx中,您可以設置_client_max_body_size_ limit,但這是關於它。 – jholster 2010-03-24 22:41:13