教你使文件PHP上傳生效
PHP經(jīng)過長(zhǎng)時(shí)間的發(fā)展,很多用戶都很了解PHP了,這里我發(fā)表一下個(gè)人理解,和大家討論討論。PHP是一種用于創(chuàng)建動(dòng)態(tài)WEB頁(yè)面的服務(wù)端腳本語(yǔ)言。如同ASP 和ColdFusion,用戶可以混合使用PHP和HTML編寫WEB頁(yè)面,當(dāng)訪問者瀏覽到該頁(yè)面時(shí),服務(wù)端會(huì)首先對(duì)頁(yè)面中的PHP命令進(jìn)行處理,然后把處理后的結(jié)果連同HTML內(nèi)容一起傳送到訪問端的瀏覽器。
#T#但是與ASP或ColdFusion不同,PHP是一種源代碼開放程序,擁有很好的跨平臺(tái)兼容性。用戶可以在Windows NT系統(tǒng)以及許多版本的Unix系統(tǒng)上運(yùn)行PHP,而且可以將PHP作為Apache服務(wù)器的內(nèi)置模塊或CGI程序運(yùn)行。除了能夠精確的控制WEB頁(yè)面的顯示內(nèi)容之外,用戶還可以通過使用PHP發(fā)送HTTP報(bào)頭。用戶可以通過PHP設(shè)置cookies,管理用戶身份識(shí)別,并對(duì)用戶瀏覽頁(yè)面進(jìn)行重定向。PHP具有非常強(qiáng)大的數(shù)據(jù)庫(kù)支持功能,能夠訪問幾乎目前所有較為流行的數(shù)據(jù)庫(kù)系統(tǒng)。此外,PHP可以與多個(gè)外接庫(kù)集成,為用戶提供更多的實(shí)用功能,如生成PDF文件等。
用戶可以直接在WEB頁(yè)面中輸入PHP命令代碼,因而不需要任何特殊的開發(fā)環(huán)境。在WEB頁(yè)面中,所有PHP代碼都被放置在“”中。此外,用戶還可以選擇使用諸如 等的形式。PHP引擎會(huì)自動(dòng)識(shí)別并處理頁(yè)面中所有位于PHP定界符之間的代碼。
PHP腳本語(yǔ)言的語(yǔ)法結(jié)構(gòu)與C語(yǔ)言和Perl語(yǔ)言的語(yǔ)法風(fēng)格非常相似。用戶在使用變量前不需要對(duì)變量進(jìn)行聲明。使用PHP創(chuàng)建數(shù)組的過程也非常簡(jiǎn)單。PHP還具有基本的面向?qū)ο蠼M件功能,可以極大的方便用戶有效組織和封裝自己編寫的代碼。這里給大家介紹一下關(guān)于PHP上傳的問題。
例子1. 使文件PHP上傳生效
請(qǐng)查閱函數(shù) is_uploaded_file() 和 move_uploaded_file() 以獲取進(jìn)一步的信息。以下范例處理由表單提供的文件上傳。
- <?php
- // In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
- // of $_FILES.
- $uploaddir = '/var/www/uploads/';
- $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
- echo '<pre>';
- if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
- echo "File is valid, and was successfully uploaded.\n";
- } else {
- echo "Possible file upload attack!\n";
- }
- echo 'Here is some more debugging info:';
- print_r($_FILES);
- print "</pre>";
- ?>
接受PHP上傳文件的腳本為了決定接下來要對(duì)該文件進(jìn)行哪些操作,應(yīng)該實(shí)現(xiàn)任何邏輯上必要的檢查。例如可以用 $_FILES['userfile']['size'] 變量來排除過大或過小的文件,也可以通過 $_FILES['userfile']['type'] 變量來排除文件類型和某種標(biāo)準(zhǔn)不相符合的文件,但只把這個(gè)當(dāng)作一系列檢查中的***步,因?yàn)榇酥低耆煽蛻舳丝刂贫?PHP 端并不檢查。自 PHP 4.2.0 起,還可以通過 $_FILES['userfile']['error'] 變量來根據(jù)不同的錯(cuò)誤代碼來計(jì)劃下一步如何處理。不管怎樣,要么將該文件從臨時(shí)目錄中刪除,要么將其移動(dòng)到其它的地方。
如果表單中沒有選擇上傳的文件,則 PHP 變量 $_FILES['userfile']['size'] 的值將為 0,$_FILES['userfile']['tmp_name'] 將為空。如果該文件沒有被移動(dòng)到其它地方也沒有被改名,則該文件將在表單請(qǐng)求結(jié)束時(shí)被刪除。