[英]php script for upload image not working
我有一個編輯頁面,該頁面允許用戶使用表單上傳個人資料圖像,但是問題是,即使圖像類型是可接受的格式之一,我仍然無法獲得該格式。
if(isset($_POST['parse_var']) == "pic")
{
if(!$_FILES['fileField']['tmp_name'])
{
$errorMSG = '<font color= "#FF0000">Please browse for an Image Before you press the button.</font>';
}
else
{
$maxfilesize = 51200;//in bytes = 50kb
if($_FILES['fileField']['size']>$maxfilesize)
{
$errorMSG = '<font color="#FF0000">Your image was too large, please try again.</font>';
unlink($_FILES['fileField']['tmp_name']);
}
elseif(!preg_match("^.(gif|jpg|png)$/i^",$_FILES['fileField']['name']))
{
$errorMSG = '<font color="#FF0000">Your Image was not one of the accepted format, please try again</font>';
unlink($_FILES['fileField']['tmp_name']);
}
else
{
$newname = "image01.jpg";
$place_file = move_uploaded_file($_FILES['fileField']['tmp_name'],"members/$id/".$newname);
$message='<font color="#00FF00>Your Image has been upload successfully</font>';
}
}//end else
}//end if
主要問題:
一種)
elseif(!preg_match("^.(gif|jpg|png)$/i^",$_FILES['fileField']['name']))
^---
您不應該使用正則表達式元字符作為模式定界符。 嘗試
preg_match('/\.(gif|jpg|png)$/i', ...) instead.
但是在更大的圖片視圖中,根本不應該匹配文件名。 可以偽造文件名。 您應該改為確定服務器端的MIME類型(例如,通過file_info()
)。
b)
您沒有正確檢查上傳成功。 $ _FILES數組中存在['tmp_name']
表示無。 上載失敗可以仍然產生tmp_name,但最終會造成垃圾。 始終使用以下內容:
if ($_FILES['fileField']['error'] !== UPLOAD_ERR_OK) {
die("Upload failed with error code " . $_FILES['fileField']['error']);
}
錯誤代碼在這里定義: http : //php.net/manual/en/features.file-upload.errors.php
c)(輕微)
您無需取消鏈接臨時文件。 腳本退出時,PHP會自動執行此操作。
d)(通常為巨大錯誤)
字體標簽? 在2013年? 1990年代呼吁並希望他們的HTML 1.0回來...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.