PHP获取图像扩展以进行验证

时间:2016-06-03 14:56:47

标签: php

我正在调用get_file_extension()函数来返回文件类型:即jpg,gif等:

function get_file_extension( $file )  {
    if( empty( $file ) ) {
     return false;
    } else {

    // if goes well then good to go
        $ext = pathinfo($file, PATHINFO_EXTENSION);
    //var_dump($ext);

    // return file extension
    return $ext;

    }
}

当我执行var_dump($ ext)时,文件类型被捕获但是$ ext没有从函数返回!

函数调用:

 $filename = stripslashes( $_FILES['file']['name'] );
 $ext = get_file_extension( $filename );
 $ext = strtolower( $ext );

 var_dump($ext);

如果我为$ ext执行var_dump(),它会正确保留扩展名,但是当我尝试使用以下命令验证扩展时:

if(( $ext != "jpg" ) && ( $ext != "jpeg" ) && ( $ext != "png" ) && ( $ext != "gif" ) ) {
  $error = 'Unknown Image extension.';
  return false;
} 

错误消息未显示在屏幕上。

当我检查apache error_log时,我收到以下错误:

PHP Strict Standards:  Only variables should be passed by reference

....与我的get_file_extension函数中的这一行有关:

$ext = substr(strrchr($file,'.'),1);

如果我使用PATHINFO,我会收到类似的错误:

$ext = pathinfo($file, PATHINFO_EXTENSION);

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

PATHINFO_EXTENSION是更新的,但错误信息未显示的原因是因为$ error ='';没有在全球范围内定义。您也可以回复错误消息。