Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:图像检查扩展_Php_Image - Fatal编程技术网

PHP:图像检查扩展

PHP:图像检查扩展,php,image,Php,Image,我目前的上传脚本有一些问题。 它不检查文件类型是否允许,我也不知道为什么。 有人看到我的问题了吗 //Reads the image name $image=$_FILES['image']['name']; //If empty if ($image == "") { echo '<div class="box_square form_error" style

我目前的上传脚本有一些问题。 它不检查文件类型是否允许,我也不知道为什么。 有人看到我的问题了吗

                //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;

                }
//读取图像名称
$image=$_文件['image']['name'];
//如果是空的
如果($image==“”){
回音“Velg et bilde!”;
$errors=1;
}   
//如果不是空的
如果($image)
{
//从客户端计算机获取原始名称
$filename=stripslashes($_文件['image']['name']);
//接分机
$extension=getExtension($filename);
$extension=strtolower($extension);
//如果文件扩展名未知,则返回错误。如果不知道,则继续
如果(($extension!=“jpg”)&($extension!=“jpeg”))
{
//错误消息
echo'Bare JPG og JPEG er tilatte filteyper!';
$errors=1;
}

看起来getExtension($filename)不正确。但是,我不知道为什么要使用斜杠

怎么样

echo "the extension used is ".$extension."<br>";
顺便说一句,您可以使用正则表达式提取扩展名

preg_match("/\.([^\.]+)$/", $filename, $extension);   

不要依赖扩展名,而是依赖扩展名。

您正指望用户上传具有正确扩展名的文件。 另一种方法是getimagesize(),它还将告诉您Mime类型。

我还看到exif-imagetype()说它也会这样做(但我从未使用过)。

您不想发生什么情况?当文件类型未知时,它不会回送消息。那么,什么是
$extension
contain?执行
var\u dump($extension)
检查有效扩展名之前,请查看其中的内容。您可以发布
getExtension
的代码吗?这也没有输出任何内容。您最好检查服务器上的mime类型,不要相信浏览器发送的内容。但是,检查文件扩展名没有帮助。您的服务器可能会不知何故,我使用了很多文件扩展名(例如php、phtml、php3、php4、php5、py等)。如果他们上传,我会在代码的顶部找到一个脚本,检查图像内容中是否有标签和其他内容。如果它有标签或其他内容,ip地址会存储在一个数据库中,我会调用该数据库来阻止试图这样做的用户。
preg_match("/\.([^\.]+)$/", $filename, $extension);   
list ( $width, $height, $type, $html_dim ) = getimagesize ($_FILES['image']['tmp_name']);
echo "\$type:" . var_dump($type);