Php 由空格和单引号组成的文件有问题吗?

Php 由空格和单引号组成的文件有问题吗?,php,file,ffmpeg,Php,File,Ffmpeg,我正在使用下面的代码使用ffmpeg创建缩略图,但是对于没有空格或引号的文件来说效果很好 但当文件有空格(如“sachin knock.flv”)或有引号的文件(如sachin的double_cent.mp4)时,它就不起作用了 我怎样才能使这些文件准确地工作?一个限制是,我不能重命名文件,因为它们是一些 我的代码是 <?php error_reporting(E_ALL); extension_loaded('ffmpeg') or die('Error in loadi

我正在使用下面的代码使用ffmpeg创建缩略图,但是对于没有空格或引号的文件来说效果很好

但当文件有空格(如“sachin knock.flv”)或有引号的文件(如sachin的double_cent.mp4)时,它就不起作用了

我怎样才能使这些文件准确地工作?一个限制是,我不能重命名文件,因为它们是一些

我的代码是

<?php
    error_reporting(E_ALL);
    extension_loaded('ffmpeg') or die('Error in loading ffmpeg');
    $link = mysql_connect('localhost', 'root', '');
    if (!$link) {
        die('Not connected : ' . mysql_error());
    }
    $db_selected = mysql_select_db('db', $link);

    $max_width  = 120;
    $max_height = 72;
    $path ="/home/rootuser/public_html/temp/";
    $qry="select id, input_file, output_file from videos where thumbnail='' or thumbnail is null;";
    $res=mysql_query($qry);
    while($row = mysql_fetch_array($res,MYSQL_ASSOC))
    {
        $orig_str = array(" ");
        $rep_str  = array("\ ");
        $outfile  = $row[output_file];
//      $infile   = $row[input_file];
        $infile1  = str_replace($orig_str, $rep_str, $outfile);

        $tmp      = explode(".",$infile1);
        $tmp_name = $tmp[0];
        $imgname  = $tmp_name.".png";
        $srcfile  = "/home/rootuser/public_html/uploaded_vids/".$outfile;
            echo exec("ffmpeg -i ".$srcfile." -r 1 -ss 00:00:05 -f image2 -s 120x72 ".$path.$imgname);
        $nname = "./temp/".$imgname;
        $fileo = fopen($nname,"rb");
        if($fileo)
        {
        $imgData = addslashes(file_get_contents($nname));
        echo $imgdata;
        $qryy="update videos set thumbnail='{$imgData}' where input_file='$outfile'"; 
        $ress=mysql_query($qryy);
        }
        else
            echo "Could not open<br><br>";
        unlink('$nname');    
    }
?>

请注意,如果文件是由用户提供的,那么您的代码不仅不能工作,而且对代码注入非常开放


这可以通过使用来解决。

我想我可以在上传文件时限制用户,但是对于已经上传的文件,我做不了太多,这些文件已经被验证没有包含任何linux命令。现在我必须为已经上传的文件创建缩略图,所以escapeshellcmd()是否有效?@Vijay:是的,它也可以用于转义空间。对于安全性来说,这比“限制”上传的文件要好得多,这从根本上说是错误的方法(黑客更善于找到绕过这些限制的方法,而不是你想出的方法)。谢谢。但顺便问一下,处理这个问题的最佳方法是什么?我必须让我的用户上传视频。那么什么才是最好的呢?