2009-10-17 12 views
12

में कोई चित्र है, यदि सर्वर पर कोई फ़ाइल अपलोड की गई है, तो यह सुनिश्चित करने के लिए PHP का उपयोग करने का कोई तरीका है कि यह वास्तव में एक तस्वीर है और न केवल .jpg या .gif एक्सटेंशन वाली फ़ाइल है?मान्य करें कि फ़ाइल PHP

उत्तर

13

जीडी पुस्तकालय का उपयोग (भाग)।

PHP: GD - Manual

array getimagesize (string $filename [, array &$imageinfo ]) 

सरणी के पहले तत्व 0 हो जाएगा अगर कोई छवि है। PHP: getimagesize

यदि आपके पास जीडी इंस्टॉल नहीं है (अधिकांश समय आप करेंगे), तो आप फ़ाइल हेडर को Shane mentioned के रूप में पढ़ सकते हैं।

संपादित करें: दरअसल, जैसा कि नील ने टिप्पणियों में बताया, जीडी लाइब्रेरी को इस फ़ंक्शन का उपयोग करने की भी आवश्यकता नहीं है। तो इसका इस्तेमाल करें।

+2

@Neal - दरअसल, मैंने नहीं किया! मुझे पता नहीं था। यह बात बताने के लिए धन्यवाद। उत्तर संपादित किया गया है। पहली बार मैं RTFM'd – snicker

+0

नहीं किया गया कोई समस्या नहीं^_^मदद करने में खुशी! – Neal

+3

यह 'exif_imagetype' का उपयोग करने के लिए बेहतर और * तेज * है। – Brett

4

सबसे प्रभावी तरीका फ़ाइल की शुरुआत बाइट्स और 'जादू संख्या' फ़ाइल विनिर्देश के लिए परीक्षण करना होगा। Here is a list of magic numbers

+0

यह जीडी को फायर करने से अधिक कुशल होगा, लेकिन मुझे लगता है कि बाइनरी खुलता है, आदि .. थोड़ा सा है ज्यादातर लोगों का सिर। –

+3

यदि यह सच है - यह बहुत निराशाजनक है। यहां अधिकांश लोगों में सीएस डिग्री नहीं है? –

+3

मैं नहीं करता .. लेकिन मैं 7 साल से कोड लिख रहा हूं। आश्चर्य की बात है कि, बहुत से लोग वास्तव में यह जानकर डिग्री प्राप्त कर सकते हैं कि उन्हें क्या करना है। मैं अनुभव से बात करता हूं, क्योंकि वास्तव में सिविल इंजीनियरिंग में डिग्री होती है, और मुझे बहुत सारे "स्लाइडर" पता था जो बस फिसल गए थे। एक डिग्री का मतलब कुछ भी नहीं है। सबूत है कि आप कुछ कर सकते हैं। – snicker

1

रिकॉर्ड के लिए: अब 2013+ हम कर सकते हैं में:

अधिकतम के लिए। संगतता (यदि आपके पास जीडी लाइब्रेरी नहीं है)।
उपयोग हमेशा उपलब्ध mime-content-type ((PHP 4> = 4.3.0, पीएचपी 5))

$type = mime_content_type($filename); 
if (strstr($type, 'image/')) 
{ 
    echo 'is image'; 
} 
+2

एक अपडेट के रूप में इसे अब बहिष्कृत कर दिया गया है: http://us3.php.net/manual/en/function.mime-content-type.php – bonez

6

सबसे अच्छा करता है, तो फ़ाइल एक छवि है की जाँच करने के रास्ते

function is_image($path) 
{ 
    $a = getimagesize($path); 
    $image_type = $a[2]; 

    if(in_array($image_type , array(IMAGETYPE_GIF , IMAGETYPE_JPEG ,IMAGETYPE_PNG , IMAGETYPE_BMP))) 
    { 
     return true; 
    } 
    return false; 
} 

अधिक: http://www.binarytides.com/php-check-if-file-is-an-image/

संबंधित मुद्दे