阅读:3169回复:0
WordPress教程:简单修改代码禁止用户上传特定类型的文件
[tr][td] 再多站点、网站开放注册投稿的时候,并且没有限制投稿者上传文件,那将是很危险的事情,所以,限制上传类型是必须的!今天逍遥乐就带大家,如何从WordPress默认允许上传的文件类型中,禁止上传某些特定类型的文件,如WordPress默认允许上传 .exe 后缀名的可运行文件,那么我们怎么禁止用户在WordPress后台发表文章时上传 .exe 后缀名的文件呢?这就是本文要解答的问题。
首先,我们要知道WordPress支持上传哪些类型的文件,我们可以在当前主题的functions.php中插入以下php代码,然后打开博客首页,查看网页源代码,即可看到一个完整的支持列表(看完后,记得删除): [table][tr][td]1[/td][td]print_r(wp_get_mime_types());[/td][/tr][/table] 下面是以上代码输出的结果,这里供大家参考,也免了大家去写代码看结果。下面是WordPress默认允许上传的文件类型列表: [table][tr][td]01[/td][td]// []中括号中的名称代表文件名后缀名/扩展名[/td][/tr][/table] [table][tr][td]02[/td][td]// => 后面的名称代表的是后缀名所在应的文件MIME信息[/td][/tr][/table] [table][tr][td]03[/td][td]Array[/td][/tr][/table] [table][tr][td]04[/td][td]([/td][/tr][/table] [table][tr][td]05[/td][td] [jpg|jpeg|jpe] => image/jpeg[/td][/tr][/table] [table][tr][td]06[/td][td] [gif] => image/gif[/td][/tr][/table] [table][tr][td]07[/td][td] [png] => image/png[/td][/tr][/table] [table][tr][td]08[/td][td] [bmp] => image/bmp[/td][/tr][/table] [table][tr][td]09[/td][td] [tif|tiff] => image/tiff[/td][/tr][/table] [table][tr][td]10[/td][td] [ico] => image/x-icon[/td][/tr][/table] [table][tr][td]11[/td][td] [asf|asx|wax|wmv|wmx] => video/asf[/td][/tr][/table] [table][tr][td]12[/td][td] [avi] => video/avi[/td][/tr][/table] [table][tr][td]13[/td][td] [divx] => video/divx[/td][/tr][/table] [table][tr][td]14[/td][td] => video/x-flv[/td][/tr][/table] [table][tr][td]15[/td][td] [mov|qt] => video/quicktime[/td][/tr][/table] [table][tr][td]16[/td][td] [mpeg|mpg|mpe] => video/mpeg[/td][/tr][/table] [table][tr][td]17[/td][td] [mp4|m4v] => video/mp4[/td][/tr][/table] [table][tr][td]18[/td][td] [ogv] => video/ogg[/td][/tr][/table] [table][tr][td]19[/td][td] [mkv] => video/x-matroska[/td][/tr][/table] [table][tr][td]20[/td][td] [txt|asc|c|cc|h] => text/plain[/td][/tr][/table] [table][tr][td]21[/td][td] [csv] => text/csv[/td][/tr][/table] [table][tr][td]22[/td][td] [tsv] => text/tab-separated-values[/td][/tr][/table] [table][tr][td]23[/td][td] [ics] => text/calendar[/td][/tr][/table] [table][tr][td]24[/td][td] [rtx] => text/richtext[/td][/tr][/table] [table][tr][td]25[/td][td] [css] => text/css[/td][/tr][/table] [table][tr][td]26[/td][td] [htm|html] => text/html[/td][/tr][/table] [table][tr][td]27[/td][td] => audio/mpeg[/td][/tr][/table] [table][tr][td]28[/td][td] [ra|ram] => audio/x-realaudio[/td][/tr][/table] [table][tr][td]29[/td][td] [wav] => audio/wav[/td][/tr][/table] [table][tr][td]30[/td][td] [ogg|oga] => audio/ogg[/td][/tr][/table] [table][tr][td]31[/td][td] [mid|midi] => audio/midi[/td][/tr][/table] [table][tr][td]32[/td][td] [wma] => audio/wma[/td][/tr][/table] [table][tr][td]33[/td][td] [mka] => audio/x-matroska[/td][/tr][/table] [table][tr][td]34[/td][td] [rtf] => application/rtf[/td][/tr][/table] [table][tr][td]35[/td][td] [js] => application/javascript[/td][/tr][/table] [table][tr][td]36[/td][td] [pdf] => application/pdf[/td][/tr][/table] [table][tr][td]37[/td][td] [swf] => application/x-shockwave-flash[/td][/tr][/table] [table][tr][td]38[/td][td] [class] => application/java[/td][/tr][/table] [table][tr][td]39[/td][td] [tar] => application/x-tar[/td][/tr][/table] [table][tr][td]40[/td][td] [zip] => application/zip[/td][/tr][/table] [table][tr][td]41[/td][td] [gz|gzip] => application/x-gzip[/td][/tr][/table] [table][tr][td]42[/td][td] [rar] => application/rar[/td][/tr][/table] [table][tr][td]43[/td][td] [7z] => application/x-7z-compressed[/td][/tr][/table] [table][tr][td]44[/td][td] [exe] => application/x-msdownload[/td][/tr][/table] [table][tr][td]45[/td][td] [doc] => application/msword[/td][/tr][/table] [table][tr][td]46[/td][td] [pot|pps|ppt] => application/vnd.ms-powerpoint[/td][/tr][/table] [table][tr][td]47[/td][td] [wri] => application/vnd.ms-write[/td][/tr][/table] [table][tr][td]48[/td][td] [xla|xls|xlt|xlw] => application/vnd.ms-excel[/td][/tr][/table] [table][tr][td]49[/td][td] [mdb] => application/vnd.ms-access[/td][/tr][/table] [table][tr][td]50[/td][td] [mpp] => application/vnd.ms-project[/td][/tr][/table] [table][tr][td]51[/td][td] [docx] => application/vnd.openxmlformats-officedocument.wordprocessingml.document[/td][/tr][/table] [table][tr][td]52[/td][td] [docm] => application/vnd.ms-word.document.macroEnabled.12[/td][/tr][/table] [table][tr][td]53[/td][td] [dotx] => application/vnd.openxmlformats-officedocument.wordprocessingml.template[/td][/tr][/table] [table][tr][td]54[/td][td] [dotm] => application/vnd.ms-word.template.macroEnabled.12[/td][/tr][/table] [table][tr][td]55[/td][td] [xlsx] => application/vnd.openxmlformats-officedocument.spreadsheetml.sheet[/td][/tr][/table] [table][tr][td]56[/td][td] [xlsm] => application/vnd.ms-excel.sheet.macroEnabled.12[/td][/tr][/table] [table][tr][td]57[/td][td] [xlsb] => application/vnd.ms-excel.sheet.binary.macroEnabled.12[/td][/tr][/table] [table][tr][td]58[/td][td] [xltx] => application/vnd.openxmlformats-officedocument.spreadsheetml.template[/td][/tr][/table] [table][tr][td]59[/td][td] [xltm] => application/vnd.ms-excel.template.macroEnabled.12[/td][/tr][/table] [table][tr][td]60[/td][td] [xlam] => application/vnd.ms-excel.addin.macroEnabled.12[/td][/tr][/table] [table][tr][td]61[/td][td] [pptx] => application/vnd.openxmlformats-officedocument.presentationml.presentation[/td][/tr][/table] [table][tr][td]62[/td][td] [pptm] => application/vnd.ms-powerpoint.presentation.macroEnabled.12[/td][/tr][/table] [table][tr][td]63[/td][td] [ppsx] => application/vnd.openxmlformats-officedocument.presentationml.slideshow[/td][/tr][/table] [table][tr][td]64[/td][td] [ppsm] => application/vnd.ms-powerpoint.slideshow.macroEnabled.12[/td][/tr][/table] [table][tr][td]65[/td][td] [potx] => application/vnd.openxmlformats-officedocument.presentationml.template[/td][/tr][/table] [table][tr][td]66[/td][td] [potm] => application/vnd.ms-powerpoint.template.macroEnabled.12[/td][/tr][/table] [table][tr][td]67[/td][td] [ppam] => application/vnd.ms-powerpoint.addin.macroEnabled.12[/td][/tr][/table] [table][tr][td]68[/td][td] [sldx] => application/vnd.openxmlformats-officedocument.presentationml.slide[/td][/tr][/table] [table][tr][td]69[/td][td] [sldm] => application/vnd.ms-powerpoint.slide.macroEnabled.12[/td][/tr][/table] [table][tr][td]70[/td][td] [onetoc|onetoc2|onetmp|onepkg] => application/onenote[/td][/tr][/table] [table][tr][td]71[/td][td] [odt] => application/vnd.oasis.opendocument.text[/td][/tr][/table] [table][tr][td]72[/td][td] [odp] => application/vnd.oasis.opendocument.presentation[/td][/tr][/table] [table][tr][td]73[/td][td] [ods] => application/vnd.oasis.opendocument.spreadsheet[/td][/tr][/table] [table][tr][td]74[/td][td] [odg] => application/vnd.oasis.opendocument.graphics[/td][/tr][/table] [table][tr][td]75[/td][td] [odc] => application/vnd.oasis.opendocument.chart[/td][/tr][/table] [table][tr][td]76[/td][td] [odb] => application/vnd.oasis.opendocument.database[/td][/tr][/table] [table][tr][td]77[/td][td] [odf] => application/vnd.oasis.opendocument.formula[/td][/tr][/table] [table][tr][td]78[/td][td] [wp|wpd] => application/wordperfect[/td][/tr][/table] [table][tr][td]79[/td][td])[/td][/tr][/table] 上面的内容,大家看了可能眼花缭乱,其实只要记住,在每一行中,左边中括号中的名称是文件的后缀名(或者叫扩展名),右边 => 后面的名称代表的是后缀名所在应的文件MIME信息,这个我们不用管。 现在言归正传,如果想禁止用户在WordPress后台发表文章时上传特定后缀名的文件,我们可以在当前主题的functions.php中添加以下php代码: [table][tr][td]1[/td][td]add_filter('upload_mimes', 'custom_upload_mimes');[/td][/tr][/table] [table][tr][td]2[/td][td] [/td][/tr][/table] [table][tr][td]3[/td][td]function custom_upload_mimes( $existing_mimes=array() ) {[/td][/tr][/table] [table][tr][td]4[/td][td] // 注意中括号中的名称,必须取自上面支持列表中中括号内的名称[/td][/tr][/table] [table][tr][td]5[/td][td] unset( $existing_mimes['exe'] ); //此处禁止了上传exe后缀名的文件[/td][/tr][/table] [table][tr][td]6[/td][td] [/td][/tr][/table] [table][tr][td]7[/td][td] return $existing_mimes; [/td][/tr][/table] [table][tr][td]8[/td][td]}[/td][/tr][/table] 如果想禁止上传更多后缀名的文件,可以复制第5行的代码,粘贴到第5行代码以后,第7行代码之前,把其中的exe,改成要禁止上传的后缀名即可,如: [table][tr][td]01[/td][td]add_filter('upload_mimes', 'custom_upload_mimes');[/td][/tr][/table] [table][tr][td]02[/td][td] [/td][/tr][/table] [table][tr][td]03[/td][td]function custom_upload_mimes( $existing_mimes=array() ) {[/td][/tr][/table] [table][tr][td]04[/td][td] // 注意中括号中的名称,必须取自上面支持列表中中括号的名称[/td][/tr][/table] [table][tr][td]05[/td][td] unset( $existing_mimes['exe'] ); //此处禁止了上传exe后缀名的可运行文件[/td][/tr][/table] [table][tr][td]06[/td][td] unset( $existing_mimes['jpg|jpeg|jpe'] ); //此处禁止了上传jpg、jpeg和jpe后缀名的压缩文件[/td][/tr][/table]
经过此项设置,用户如果在后台上传禁止的文件类型,那么会得到这样的提示: 图片:144123azhdibkmkwbmfvbf.png 图片:144123azhdibkmkwbmfvbf.png </strong> [/td][/tr] |
|||||||||||