插件Watermark Reloaded上傳非圖片文件出錯修改打賞

今天在檢查博客附件的時候發現有以前上傳的一個注冊表導入腳本reg文件丟了,重新上傳的時候居然報錯了。仔細看了才發現是之前安裝的Watermark_Reloaded插件導致的錯誤,沒多想,打開插件源代碼看看原因,因為小博不是專注PHP的(不過今天發現PHP的語法跟Java很是相似啊),所以沒那么快找到原因,后來分析可能是因為上傳了非圖片文件,而Watermark Reloaded又針對所以上傳的附件進行檢查并加水印,所以會導致程序出錯。

錯誤提示



知道原因解決起來就很簡單了,通篇看下來,發現錯誤的根源是出在doWatermark這個函數里面,這里在對附件進行加水印的操作前根本沒有判斷是不是圖片附件,也許國外人就只上傳圖片附件,不傳其他的吧,這里也不再深究了。

修改辦法也很簡單,函數默認獲取了文件的mime_type,函數如下

public function doWatermark($filepath) {
$mime_type = wp_check_filetype($filepath);
$mime_type = $mime_type['type'];
$options = $this->get_options();
$image = $this->getImageResource($filepath, $mime_type);
$this->imageAddText($image, $options);
return $this->saveImageFile($image, $mime_type, $filepath);
}

文件類型的具體返回值不大清楚,于是在$mime_type = $mime_type['type'];這一句獲取文件類型后面打印了下,發現是image\jpeg2822之類的,這樣就好辦了,圖片文件肯定都包含image字樣,于是我就在$options = $this->get_options();前面加入if判斷語句,小博是很久沒碰php了,還只是停留在基礎的了解階段,因此對php函數不是很熟悉,查了w3c的手冊,一開始用了substr截取mime前五個字符與字符串image進行比較,發現不能正確加水印,可能mime返回值不是字符串或者有空格什么的,總之和image不是相等的,無奈這里就直接不用這個了,換個思路,檢查mime里面是否包含image,依然查手冊,最后使用了strstr函數,修改函數如下

public function doWatermark($filepath) {
$mime_type = wp_check_filetype($filepath);
$mime_type = $mime_type['type'];
if(strstr($mime_type,"image")){
$options = $this->get_options();
$image = $this->getImageResource($filepath, $mime_type);
$this->imageAddText($image, $options);
return $this->saveImageFile($image, $mime_type, $filepath);
}
}

為了便于讀者查看,我將原程序復制過來刪除了作者的注釋,這里其實只用添加一句,在“$options = $this->get_options();”這句前面加入“if(strstr($mime_type,"image")){”,在最后再多加一個“}”即可。

其實插件已經很火了,出現這個錯誤也不是致命的,雖然報錯但傳文件不受影響,不知道是因為其他網友都不傳圖片文件之外的文件,還是怎么,在百度、谷歌無果后只有自己修改了,小小經驗,希望大家批評指教!

插件Watermark Reloaded上傳非圖片文件出錯修改
文章《插件Watermark Reloaded上傳非圖片文件出錯修改》二維碼
  • 微信打賞
  • 支付寶打賞

已有13條評論

  1. 淘寶特價

    來過了,歡迎回訪哦。。

    2012-03-20 22:20 回復
  2. 小說網

    博主更新不給力啊..事太多吧…有時間給我的文學小說網http://www.wenx.net加加人氣…

    2012-02-27 22:15 回復
  3. heui

    我發現問題了都沒想過去解決,博主鉆研精神值得我學習啊

    2012-02-27 20:47 回復
  4. 軟件酷的Tmd

    來訪了,支持下博主

    2012-02-27 17:28 回復
  5. 蕾絲連衣裙

    基本上都是傳圖片!

    2012-02-27 16:14 回復
    • 窮小子

      看來大家需求都是一樣啊,只是我偶爾會傳些其他文件,大的附件直接網盤了,呵呵

      2012-02-27 21:10 回復
  6. 蕾絲連衣裙

    這個還真的非常的強大

    2012-02-27 11:43 回復
  7. 檸檬綠茶

    博主好~ 謝謝分享。

    2012-02-27 10:50 回復
  8. 武林之人

    哈哈,不錯不錯,總算找到了!

    2012-02-26 23:01 回復
  9. Tmd

    本地制作,傳圖床

    2012-02-26 22:31 回復

(必填)

(必填)

(可選)

黑龙江22选5开奖