簡體   English   中英

用於上傳圖片的php腳本不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM