2010-12-14 38 views
1

$ file_name =「smith.jpg」//這會給出錯誤'無效的文件擴展名' 可能是什麼問題?有沒有什麼像!in_array()?

$whitelist = array('jpg', 'png', 'gif', 'jpeg'); 

// Validate file extension 
    if(!in_array(end(explode('.', $file_name)), $whitelist)) 
     HandleError('Invalid file extension'); 
+1

它的工作對我來說沒有任何錯誤。 – BoltClock 2010-12-14 14:18:28

+0

爲什麼不稍微詳細一點,試着看看發生了什麼?拉出'$ parts = explode('。',$ file_name); $ ext = end($ parts);'分別看看它們,看看是否所有的東西都如你所期望的那樣... – ircmaxell 2010-12-14 14:18:57

+2

嘗試strtolower($ file_name)。 – Teson 2010-12-14 14:20:30

回答

4

這本來是更好,如果你使用:

echo pathinfo('/www/htdocs/your_image.jpg', PATHINFO_EXTENSION); 

use the right functions for what they are made for.

2

這是一個參考錯誤:

$whitelist = array('jpg', 'png', 'gif', 'jpeg'); 

// Validate file extension 
$parts = explode('.', $file_name); 
if(!in_array(end($parts), $whitelist)) 
{ 
HandleError('Invalid file extension'); 
} 
+0

+1指出。嚴格的標準禁止傳遞需要參考的參數的函數/表達式。 – netcoder 2010-12-14 14:39:01

+0

這是什麼解決方案?謝謝 – 2010-12-14 15:01:24

+0

請問我該如何將句點當作下列表達式中的有效字符?---- $ file_name = preg_replace('/[^'.$ valid_chars_regex。'] | \。+ $/i','',strtolower (基名($ _ FILES [$ upload_name] [ '名稱']))); – 2010-12-14 15:04:38