允許使用PHP上傳文件
01
的06
HTML表單
如果您想允許網(wǎng)站訪問(wèn)者將文件上傳到web服務(wù)器,則需要首先使用PHP創(chuàng)建一個(gè)HTML表單,允許人們指定要上傳的文件。盡管代碼在本文后面都已組裝好(以及一些有關(guān)安全性的警告),但代碼的這一部分應(yīng)該如下所示:
請(qǐng)選擇一個(gè)文件:
此表單將數(shù)據(jù)發(fā)送到您的web服務(wù)器到名為"的文件;upload.php,"將在下一步創(chuàng)建。
02
of 06
上傳文件
實(shí)際的文件上傳很簡(jiǎn)單。這小塊代碼上傳通過(guò)HTML表單發(fā)送到它的文件。
$目標(biāo)="上傳/";
$目標(biāo)=$目標(biāo)。basename($U文件['上傳']['名稱']);
$ok=1;if(移動(dòng)#上傳#文件($U文件['上傳']['tmp#名稱'],$目標(biāo)))
{
echo"文件"。basename($U文件['uploadedfile']['名稱'])。"已上傳";
}
其他{
echo"抱歉,上傳文件有問(wèn)題。";
}
?>
第一行$目標(biāo)="上傳/#34舉辦健康知識(shí)講座;;是分配上傳文件的文件夾的位置。正如您在第二行中看到的,此文件夾是相對(duì)于upload.php文件。如果你的文件在www.yours.com/files/upload.php,然后它會(huì)上傳文件到www.yours.com/files/upload/yourfile.gif。確保你記得創(chuàng)建這個(gè)文件夾。
然后,使用move_-uploaded_-file()將上傳的文件移動(dòng)到其所屬的位置。這將其放在腳本開頭指定的目錄中。如果失敗,則給用戶一條錯(cuò)誤消息;否則,用戶被告知該文件已上傳。
03
of 06
限制文件大小
您可能需要限制上傳到網(wǎng)站的文件大小。假設(shè)您沒(méi)有't更改HTML表單中的表單字段,因此仍將其命名為"上傳"-此代碼檢查以查看文件的大小。如果文件大于350k,則訪問(wèn)者被給予"文件太大"錯(cuò)誤,并且代碼集$ok等于0。
如果($上傳&u size>350000)
{
echo"您的文件太大。
";
$ok=0;
}
您可以通過(guò)將350000更改為不同的數(shù)字來(lái)將尺寸限制更改為更大或更小。如果您不關(guān)心文件大小,請(qǐng)將這些行保留下來(lái)。
117 04 118
of 06
按類型
限制文件對(duì)可以上傳到網(wǎng)站的文件類型設(shè)置限制并阻止某些文件類型上傳都是明智的。
例如,此代碼檢查是否訪問(wèn)者沒(méi)有將PHP文件上傳到您的網(wǎng)站。如果是PHP文件,則訪問(wèn)者會(huì)收到錯(cuò)誤消息,并將$ok設(shè)置為0。
if($上傳type=="text/php")
{
echo"無(wú)php文件
";
$ok=0;
}
在第二個(gè)示例中,只允許將GIF文件上傳到站點(diǎn),并且在將$ok設(shè)置為0之前,所有其他類型都會(huì)出現(xiàn)錯(cuò)誤。
如果(?。?upload#type=="image/gif"){
echo"您只能上傳gif文件。
";
$ok=0;
}
您可以使用這兩個(gè)示例來(lái)允許或拒絕任何特定的文件類型。
05
of 06
放在一起
把它放在一起,你得到這個(gè):
$目標(biāo)="上傳/"; {
$目標(biāo)=$目標(biāo)。basename($?文件['上傳'][&\##39;姓名&\\35;\35;#39;]);
$ok=1;
///這是我們的大小條件
如果($$上傳大小&t;350000)<350000)<174>{
echo \\##34;你的文件太大。
&\\35;#34;你的文件太大。
&\\\\#?34;;;;;;;;;;;
echo"沒(méi)有php文件
";
$ok=0;
}
//////
如果($ok==0)
{
echocho&\##34;很抱歉,您的文件沒(méi)有上傳,您的文件沒(méi)有上傳&\35;#//
////如果一切都好,我們嘗試上傳它
其他
{
{
如果(移動(dòng)_上傳上傳上傳上傳上傳)////////185>
}
{
如果(移動(dòng)_上傳上傳上傳上傳上傳\#文件(35;39;],$目標(biāo)))
{
Echo"文件"。basename($U文件['uploadedfile']['名稱'])。"已上傳";
}
其他
{
echo"抱歉,上傳文件有問(wèn)題。";
}
}
?>
在將此代碼添加到網(wǎng)站之前,您需要了解下一個(gè)屏幕上概述的安全含義。
06
of 06
關(guān)于安全的最終想法
如果您允許文件上傳,則將自己對(duì)愿意卸載不良事物的人開放。一個(gè)明智的預(yù)防措施是不允許上傳任何可能包含惡意代碼的PHP,HTML或CGI文件。這提供了一些安全性,但不確定防火。
另一個(gè)注意事項(xiàng)是使上傳文件夾私有,以便只有您才能看到它。然后,當(dāng)你看到上傳時(shí),你可以批準(zhǔn)和移動(dòng)它或刪除它。根據(jù)您希望接收多少文件,這可能是耗時(shí)且不切實(shí)際的。
此腳本可能最好保存在私有文件夾中。不要't把它放在公眾可以使用它的地方,或者你可能最終會(huì)得到一個(gè)裝滿無(wú)用或潛在危險(xiǎn)文件的服務(wù)器。如果您真的希望公眾能夠上傳到您的服務(wù)器空間,請(qǐng)盡可能安全地寫入。