2012-12-17 14 views
1

這是參考了這個問題 - need something that is same as $_FILES from remote server download with php

在上面的帖子,什麼OP基本上想要的是手動填充爲$_FILES超全局數組文件上傳。

在答案中,您將看到使用tempnam來創建一個臨時文件並使用file_get_contents來存儲資源,我認爲它應該在理論上工作(未測試)。

現在,我的問題是不PHP有任何檢查,以檢測並防止這種行爲或如何post-max-size/upload-max-filesizeini值會影響這個手動創建$_FILES陣列?

+0

你可以填充所有你想要的$ _FILES,但是請注意,'is_uploaded_file()'和'move_uploaded_file()'可能不起作用,因爲PHP實際上並沒有執行**上傳,所以只有內部結構那麼對上傳的安全檢查將不會發生。 –

+0

@MarcB - 感謝您的輸入。這就是我的想法,但在看到我已經聯繫到的問題的答案時,我想澄清一下,這是否是正確的方式。 –

回答

2

post_max_sizeupload_max_filesize將不會對在您鏈接到,因爲他們正在一個傳出連接到遠程數據源獲取數據的問題情景影響任何責任。這兩個ini設置將僅對發送到您的腳本的POST數據產生影響(即傳入)。

PHP不會對$_FILES數組的更改進行任何檢查,您可以不受限制地自由修改數組。

+0

有道理。感謝澄清。 –

-2

您不能預填充$ _FILES數組,也不能將信息放入HTML中的type = file控件的名稱中。這是一個安全問題。仔細想想...如果我可以將信息放入要上傳的文件名稱中,我可以在您不知情或未經許可的情況下將數據從計算機上刪除。所有必須發生的事情都是讓你的瀏覽器訪問我的網站,並且「Poof!」

+3

你可以修改'$ _FILES'數組 – Dale

+1

Ray,你混淆了一些東西。 –

+0

//手動參考頁您必須瞭解上傳文件 // http://php.net/manual/en/features.file-upload.php // http://php.net/manual/en/features .file-upload.common-pitfalls.php // http://php.net/manual/en/function.move-uploaded-file.php // http://php.net/manual/en/reserved .variables.files.php //手動頁面,如果您正在處理大型文件,則很重要 // http://php.net/manual/en/ini.core.php#ini.upload-max-filesize // http://php.net/manual/en/ini.core.php#ini.post-max-size // http://php.net/manual/en/info.configuration.php#ini .max-input-time –

1

$ _FILES只是一個由網絡服務器創建的簡單數組。你可以做任何你喜歡的這個數組。 tempnam創建一個文件,該文件在您的控制之下。這就是爲什麼在這種情況下「post-max-size」和「upload-max-filesize」是最重要的。如果你用自己的代碼殺死服務器空間,那就是你的問題。沒有其他人可以創建巨大的網絡流量。