PHP: расширение проверки изображений - PullRequest
0 голосов
/ 03 сентября 2011

У меня в настоящее время есть некоторые проблемы с моим сценарием загрузки.Он не проверяет, разрешен ли тип файла или нет, и я не могу понять, почему.Кто-нибудь видит мою проблему?

                //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 голосов
/ 03 сентября 2011

НЕ полагайтесь на расширение, а вместо этого на тип MIME .

0 голосов
/ 03 сентября 2011

Вы рассчитываете на пользователя, загружающего файл с соответствующим расширением. Альтернативой является 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

0 голосов
/ 03 сентября 2011

Это выглядит как неправильный getExtension ($ filename). Однако я не знаю, почему вы используете стрип-слэш.

Как насчет

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

после

$extension = strtolower($extension);

Кстати, вы можете извлечь расширение используя регулярное выражение

preg_match("/\.([^\.]+)$/", $filename, $extension);   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...