2014-09-30 33 views
-1

我正在創建我自己的網站http://harrisonprograms.com,並且在配置文件頁面上有問題。PHP,HTML檢查文件是否爲圖片

問題是我已經創建了一個PHP腳本,將圖像上傳到服務器,例如圖像目錄可能是Users/whatevertheusername/imagename.png,然後在用戶MySQL行上的MySQL中添加一個字符串引用。該腳本執行這一點,檢查之前。然而,如果上傳的文件是使用字符串函數的圖像文件,我不能因爲我的名氣還不夠高張貼圖片所以這裏的文本代碼

if(isset($_POST['SUBMITFILE2'])){ 

$imageName = $_FILES['UPLFILE2']['name']; 
$imageData = file_get_contents($_FILES['UPLFILE2']['tmp_name']); 
$imageType = $_FILES['UPLFILE2']['type']; 

//VALIDATE WHETHER FILE IS AN IMAGE OR NOT 
if(substr("$imageName", 0, 5) == 'image'){ 

的我無法理解的是它用於工作和驗證文件是否爲圖像,但現在它已停止工作,我不知道爲什麼。

+0

5行代碼;而已?在打開'<?php'標籤後立即在文件頂部添加錯誤報告 'error_reporting(E_ALL); ini_set('display_errors',1);'看看它是否產生任何東西 – 2014-09-30 20:39:53

+0

你的'substr()'正在使用字符串「$ imageName」而不是變量。即使它做的圖像的名稱是沒有太大的幫助 - 你說這個actully工作過一次? – 2014-09-30 20:42:09

+0

我不確定我是否清楚地瞭解您的問題,但您是否通過檢查上傳的文件的名稱來檢查上傳的文件是否爲圖像?所以如果我上傳名爲'imagename.pdf'的文件,它也會通過你的驗證? – marian0 2014-09-30 20:43:57

回答

1

因此,通過名稱或延伸檢查的文件類型是不好的,因爲你可以很容易地改變它的平原剩餘功能。您可以檢查上傳的文件是否是使用例如圖片的圖片MIME類型。在PHP中,你有功能mime_content_type()。使用示例:

$imageMimeTypes = array(
    'image/png', 
    'image/gif', 
    'image/jpeg'); 

$fileMimeType = mime_content_type($_FILES['UPLFILE2']['tmp_name']); 

if (in_array($fileMimeType, $imageMimeTypes)) { 
    //passed validation 
} 

當然,您可以定義更多的MIME類型的圖像。

+0

謝謝marian這是非常有用的它幫助確定文件是否是一個圖像或不,現在我可以添加更多的圖像類型,如果我喜歡,我也學到了一些關於上傳文件謝謝。 – 2014-09-30 21:38:02

0

很肯定的類型,你可以找到你的答案在這裏:php check file extension in upload form

$allowed = array('gif','png' ,'jpg'); //extension allowed 
$filename = $_FILES['video_file']['name']; 
$ext = pathinfo($filename, PATHINFO_EXTENSION); 
if(!in_array($ext,$allowed)) { 
    echo 'error'; 
}else{ 
//your extra code... 
} 
+0

看不到你的觀點,如果他只想要圖片格式類型上傳,這將工作得很好..如果你採取.txt或.exe並將擴展名改爲.png,確定它會通過,但它是將只是一個破損的PNG。現在,如果您可以在服務器上輸入,請將擴展名更改回.exe,然後運行它,這是另一回事! – 2014-09-30 20:50:48

+0

我會在一秒內嘗試這個,但它說我的輸入文件是不確定的,我知道爲什麼。 – 2014-09-30 20:53:37