Javascript 在zip中单击一次即可下载多个pdf文件

Javascript 在zip中单击一次即可下载多个pdf文件,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我在文件夹3_day_notice_fad_pdf中有一些pdf文件。现在我必须根据查询条件下载zip格式的pdf文件 <?php include("connection.php"); extract($_REQUEST); $query=mysql_query("select fad_html_name from fad_record where t_id='$word'") or die(mysql_error()); while($result=mysql_fetch_array(

我在文件夹3_day_notice_fad_pdf中有一些pdf文件。现在我必须根据查询条件下载zip格式的pdf文件

<?php
 include("connection.php");
extract($_REQUEST);
$query=mysql_query("select fad_html_name from fad_record where t_id='$word'") or die(mysql_error());
while($result=mysql_fetch_array($query,MYSQL_ASSOC))
{
extract($result);   
$movies_id[] = "3_day_notice_fad_pdf/$fad_html_name";
}
 $movies_id = array();

 //print_r($movies_id);
  $zipname = 'file.zip';
  $zip = new ZipArchive;
   $zip->open($zipname, ZipArchive::CREATE);
  foreach ($movies_id as $file) {
   $zip->addFile($file);
  }
  $zip->close();
  header('Content-Type: application/zip');
  header('Content-disposition: attachment; filename='.$zipname);
  header('Content-Length: ' . filesize($zipname));
  readfile($zipname);
  ?>

Zip文件工作正常,但它正在下载文件夹3_day_notice_fad_pdf中的所有文件。在查询中t_id=“$word”的条件下,它没有进行验证。

您在这里做了一些不好的事情

不要将查询字符串直接传递给SQL。这将导致SQL注入,您的应用程序将受到损害。请看这里:

循环刚结束,您正在清除文件数组

更正代码:

<?php
 include("connection.php");
$word = $_REQUEST['word'];
$query=mysql_query("select fad_html_name from fad_record where t_id='$word'") or die(mysql_error());
while($result=mysql_fetch_array($query,MYSQL_ASSOC))
{ 
$movies_id[] = "3_day_notice_fad_pdf/" . $result['fad_html_name'];
}

  $zipname = 'file.zip';
  $zip = new ZipArchive;
  $zip->open($zipname, ZipArchive::CREATE);
  foreach ($movies_id as $file) {
    $zip->addFile($file);
  }
  $zip->close();
  header('Content-Type: application/zip');
  header('Content-disposition: attachment; filename='.$zipname);
  header('Content-Length: ' . filesize($zipname));
  readfile($zipname);
  ?>

$word来自何处?感谢您的回复…$word来自xyz.php,带有查询字符串。提取$\u请求;将作为变量传递给word。那么您是将请求变量直接传递给sql查询?你在那里干坏事!为什么?那个么解决方案是什么呢?意味着zip函数应该在while循环中,并且不要使用新数组,因为$result fetch数组??while循环之后的movies_id的输出是什么?它包含了从queryObviously获取的所有值!现在这些值是文件名,我猜你想把哪个放在ZIP文件中,对吗?如果是,请删除此行$movies\u id=array;紧接着while循环和tryI删除了$movies\u id=array;但还是一样的问题。下载所有文件,而不仅仅是条件文件。