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