Php 由空格和单引号组成的文件有问题吗?
我正在使用下面的代码使用ffmpeg创建缩略图,但是对于没有空格或引号的文件来说效果很好 但当文件有空格(如“sachin knock.flv”)或有引号的文件(如sachin的double_cent.mp4)时,它就不起作用了 我怎样才能使这些文件准确地工作?一个限制是,我不能重命名文件,因为它们是一些 我的代码是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
<?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:是的,它也可以用于转义空间。对于安全性来说,这比“限制”上传的文件要好得多,这从根本上说是错误的方法(黑客更善于找到绕过这些限制的方法,而不是你想出的方法)。谢谢。但顺便问一下,处理这个问题的最佳方法是什么?我必须让我的用户上传视频。那么什么才是最好的呢?