PHP:图像检查扩展

时间:2011-09-03 09:53:34

标签: php image

我目前在上传脚本方面遇到了一些问题。 它不检查文件类型是否允许,我无法弄清楚原因。 有没有人看到我的问题?

                //Reads the image name
            $image=$_FILES['image']['name'];

            //If empty
            if ($image == "") {
            echo '<div class="box_square form_error" style="margin-bottom:15px; padding:10px; font-size:11px;">Velg et bilde!</div>';
            $errors = 1;
            }   

            //If not empty
            if ($image)
            {
                //Get orgiginal name from client machine
                $filename = stripslashes($_FILES['image']['name']);
                //Get the extension
                $extension = getExtension($filename);
                $extension = strtolower($extension);

                //If file extension not known, error. If not, continue
                if (($extension != "jpg") && ($extension != "jpeg"))
                {
                    //Error message
                    echo '<div class="box_square form_error" style="margin-bottom:15px; padding:10px; font-size:11px;">Bare JPG og JPEG er tilatte filtyper!</div>';
                    $errors = 1;

                }

3 个答案:

答案 0 :(得分:0)

它看起来像一个不正确的getExtension($ filename)。但是,我不知道你为什么要使用stripslashes。

怎么样

echo "the extension used is ".$extension."<br>";

之后

$extension = strtolower($extension);

顺便说一句,您可以使用表达式

提取扩展名
preg_match("/\.([^\.]+)$/", $filename, $extension);   

答案 1 :(得分:0)

不要依赖于扩展程序,而是依靠mime type

答案 2 :(得分:0)

您指望用户使用正确的扩展程序上传文件。 另一种选择是getimagesize()它也会告诉你Mime类型。 http://us3.php.net/manual/en/function.getimagesize.php

list ( $width, $height, $type, $html_dim ) = getimagesize ($_FILES['image']['tmp_name']);
echo "\$type:" . var_dump($type);

我也看到exif-imagetype()说它也会这样做(但我从来没用过它)。 http://us3.php.net/manual/en/function.exif-imagetype.php