在一個項目中,接到用戶反饋說其所有客戶不能上傳文件,都返回失敗。經過排查發現是PHP中的is_uploaded_file函數在搗鬼。

細節分析:

在正常情況下,通過PHP 上傳文件 ,需要通過is_uploaded_file函數來判斷文件是 " /> 一级特黄牲大片免费视频,高清国产美女一级a毛片在线,久草性视频

一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

is_uploaded_file函數引發的不能上傳文件問題

起因:

在一個項目中,接到用戶反饋說其所有客戶不能上傳文件,都返回失敗。經過排查發現是php中的is_uploaded_file函數在搗鬼。

細節分析:

在正常情況下,通過php 上傳文件 ,需要通過is_uploaded_file函數來判斷文件是否是通過 HTTP POST 上傳的,這可以用來確保惡意的用戶無法欺騙腳本去訪問本不能訪問的文件,例如 /etc/passwd。
而本次遇到的問題是本來應該是C:/WINDOWS/Temp/php99.tmp這樣的tmp_name,卻變成了C://WINDOWS //Temp//php99.tmp這種,導致is_uploaded_file函數返回錯誤的信息。

處理方式:

在加上如下代碼后,問題解決。
$file['tmp_name'] = str_replace('////', ‘//', $file['tmp_name']);
注意,“////”實際字符串就是兩個/,其他兩個是用來表示轉義的。

深入研究:

為什么在默寫特定的環境下會出現這種情況呢,我們來看如下分析:
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On
php的默認配置中magic_quotes_gpc是On的,而打開了magic_quotes_gpc參數的php環境會自動對GET/POST /Cookie添加addslashes效果。注意,并不會為$_FILES添加addslashes效果。
而當magic_quotes_gpc是Off的時候,由于為$_FILES數組添加了addslashes作用,反而出現了問題。也就在 magic_quotes_gpc是Off的php環境下都會出現此問題。

順帶說句,SVN上的Moophp代碼已經修復此問題。

is_uploaded_file函數解析:

判斷文件是否是通過 HTTP POST 上傳的
bool is_uploaded_file ( string $filename )
如果 filename 所給出的文件是通過 HTTP POST 上傳的則返回 TRUE。這可以用來確保惡意的用戶無法欺騙腳本去訪問本不能訪問的文件,例如 /etc/passwd。 這種檢查顯得格外重要,如果上傳的文件有可能會造成對用戶或本系統的其他用戶顯示其內容的話。

為了能使 is_uploaded_file() 函數正常工作,必段指定類似于 $_FILES['userfile']['tmp_name'] 的變量,而在從客戶端上傳的文件名 $_FILES['userfile']['name'] 不能正常運作。

php技術is_uploaded_file函數引發的不能上傳文件問題,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 中国欧美日韩一区二区三区 | 精品国产九九 | 黄色片视频网站 | 国内精品久久久久久影院8f | 日韩午夜在线观看 | 激情欧美一区二区三区 | 一区二区三区免费看 | 国产综合欧美日韩视频一区 | 国产成人综合亚洲欧美在 | 色老板在线视频观看 | 亚洲一区二区三区播放在线 | 一本之道一区三区 | 国产成人午夜91精品麻豆剧场 | 91小视频在线播放 | 国产亚洲精aa在线观看香蕉 | 福利在线观看 | 国产高清视频免费观看 | 四虎国产精品永久地址99新强 | 成人午夜毛片在线看 | 日本一区二区三区四区公司 | 成年人三级网站 | 亚洲欧美卡通另类 | 开心六月婷婷 | 精品国产麻豆免费网站 | 五月婷婷俺来也 | 日韩久久中文字幕 | 9ⅰ视频在线播放 | 精品国产一区二区三区不卡 | 狠狠夜色午夜久久综合热91 | 五月开心综合 | 最近中文字幕无吗免费高清 | 亚洲综合精品成人 | 美女又美女又黄又免费网站 | 伊人色网 | 中文字幕一区在线播放 | 美女扒开双腿让男人爽透视频 | 欧美日韩国产另类一区二区三区 | 久久免费精品 | 成人性a激情免费视频 | 我被黑人巨大开嫩苞在线观看 | 一区二区三区四 |