国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
3.9KB

  1. <?php
  2. /**
  3. * 附件添加
  4. *
  5. * @version $Id: media_add.php 2 15:25 2011-6-2 tianya $
  6. * @package DedeCMS.Administrator
  7. * @copyright Copyright (c) 2007 - 2010, DesDev, Inc.
  8. * @license http://help.dedecms.com/usersguide/license.html
  9. * @link http://www.dedecms.com
  10. */
  11. require_once(dirname(__FILE__)."/config.php");
  12. //增加权限检查
  13. if(empty($dopost)) $dopost = "";
  14. //上传
  15. if($dopost=="upload")
  16. {
  17. csrf_check();
  18. require_once(DEDEINC."/image.func.php");
  19. $sparr_image = Array("image/pjpeg","image/jpeg","image/gif","image/png","image/x-png","image/wbmp");
  20. $sparr_flash = Array("application/xshockwaveflash");
  21. $okdd = 0;
  22. $uptime = time();
  23. $adminid = $cuserLogin->getUserID();
  24. $width = $height = '';
  25. for($i=0; $i<=40; $i++)
  26. {
  27. if(isset(${"upfile".$i}) && is_uploaded_file(${"upfile".$i}))
  28. {
  29. $filesize = ${"upfile".$i."_size"};
  30. $upfile_type = ${"upfile".$i."_type"};
  31. $upfile_name = ${"upfile".$i."_name"};
  32. $dpath = MyDate("ymd", $uptime);
  33. if(in_array($upfile_type, $sparr_image))
  34. {
  35. $mediatype = 1;
  36. $savePath = $cfg_image_dir."/".$dpath;
  37. }
  38. else if(in_array($upfile_type, $sparr_flash)){
  39. $mediatype = 2;
  40. $savePath = $cfg_other_medias."/".$dpath;
  41. }
  42. // 2011-6-2 修复附件无法上传的错误(by:tianya)
  43. else if(preg_match('#audio|media|video#i', $upfile_type) && preg_match("#\.".$cfg_mediatype."$#i", $upfile_name))
  44. {
  45. $mediatype=3;
  46. $savePath = $cfg_other_medias."/".$dpath;
  47. }
  48. else if(preg_match("#\.".$cfg_softtype."+\.".$cfg_softtype."$#i", $upfile_name))
  49. {
  50. $mediatype=4;
  51. $savePath = $cfg_soft_dir."/".$dpath;
  52. }
  53. else
  54. {
  55. continue;
  56. }
  57. $filename = "{$adminid}_".MyDate("His",$uptime).mt_rand(100,999).$i;
  58. $fs = explode(".",${"upfile".$i."_name"});
  59. $filename = $filename.".".$fs[count($fs)-1];
  60. $filename = $savePath."/".$filename;
  61. if(!is_dir($cfg_basedir.$savePath))
  62. {
  63. MkdirAll($cfg_basedir.$savePath,777);
  64. CloseFtp();
  65. }
  66. /*
  67. dedecms后台文件任意上传漏洞
  68. 漏洞描述:dedecms早期版本后台存在大量的富文本编辑器,该控件提供了一些文件上传接口,同时dedecms对上传文件的后缀类型未进行严格的限制,这导致了黑客可以上传WEBSHELL,获取网站后台权限。
  69. */
  70. if (preg_match('#\.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))) { ShowMsg("你指定的文件名被系统禁止!"); exit(); }
  71. $fullfilename = $cfg_basedir.$filename;
  72. if($mediatype==1)
  73. {
  74. @move_uploaded_file(${"upfile".$i}, $fullfilename);
  75. $info = '';
  76. $data = getImagesize($fullfilename, $info);
  77. $width = $data[0];
  78. $height = $data[1];
  79. if(in_array($upfile_type, $cfg_photo_typenames)) WaterImg($fullfilename, 'up');
  80. }else
  81. {
  82. @move_uploaded_file(${"upfile".$i}, $fullfilename);
  83. }
  84. if($i>1)
  85. {
  86. $ntitle = $title."_".$i;
  87. }
  88. else
  89. {
  90. $ntitle = $title;
  91. }
  92. $inquery = "INSERT INTO `#@__uploads`(title,url,mediatype,width,height,playtime,filesize,uptime,mid)
  93. VALUES ('$ntitle','$filename','$mediatype','$width','$height','$playtime','$filesize','$uptime','$adminid'); ";
  94. $okdd++;
  95. $dsql->ExecuteNoneQuery($inquery);
  96. }
  97. }
  98. ShowMsg("成功上传 {$okdd} 个文件!","media_main.php");
  99. exit();
  100. }
  101. include DedeInclude('templets/media_add.htm');