国内流行的内容管理系统(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.

248 lines
8.3KB

  1. <?php
  2. /**
  3. * @version $id:api.php 8:38 2010年7月9日 tianya $
  4. * @package DedeBIZ.User
  5. * @copyright Copyright (c) 2022 DedeBIZ.COM
  6. * @license https://www.dedebiz.com/license
  7. * @link https://www.dedebiz.com
  8. */
  9. define('AJAXLOGIN', TRUE);
  10. define('IS_DEDEAPI', TRUE);
  11. require_once(dirname(__FILE__)."/config.php");
  12. AjaxHead();
  13. $action = isset($action)? $action : '';
  14. if ($action === 'is_need_check_code') {
  15. $isNeed = $cfg_ml->isNeedCheckCode($userid);
  16. echo json_encode(array(
  17. "code" => 0,
  18. "msg" => "",
  19. "data" => array(
  20. "isNeed" => $isNeed,
  21. ),
  22. ));
  23. exit;
  24. } else if ($action === 'get_old_email') {
  25. $oldpwd = isset($oldpwd)? $oldpwd : '';
  26. if (empty($oldpwd)) {
  27. echo json_encode(array(
  28. "code" => -1,
  29. "msg" => "旧密码不能为空",
  30. "data" => null,
  31. ));
  32. exit;
  33. }
  34. $row = $dsql->GetOne("SELECT * FROM `#@__member` WHERE mid='".$cfg_ml->M_ID."' ");
  35. if (function_exists('password_hash') && !empty($row['pwd_new'])) {
  36. if (!is_array($row) || !password_verify($oldpwd, $row['pwd_new'])) {
  37. echo json_encode(array(
  38. "code" => -1,
  39. "msg" => "旧密码校验错误",
  40. "data" => null,
  41. ));
  42. exit;
  43. }
  44. } else {
  45. if (!is_array($row) || $row['pwd'] != md5($oldpwd)) {
  46. echo json_encode(array(
  47. "code" => -1,
  48. "msg" => "旧密码校验错误",
  49. "data" => null,
  50. ));
  51. exit;
  52. }
  53. }
  54. echo json_encode(array(
  55. "code" => 0,
  56. "msg" => "",
  57. "data" => array(
  58. "email" => $row['email'],
  59. ),
  60. ));
  61. } else if ($action === 'upload') {
  62. if (!$cfg_ml->IsLogin()) {
  63. echo json_encode(array(
  64. "code" => -1,
  65. "msg" => "请登录会员中心",
  66. "data" => null,
  67. ));
  68. exit;
  69. }
  70. if ($cfg_ml->CheckUserSpaceIsFull()) {
  71. echo json_encode(array(
  72. "code" => -1,
  73. "msg" => "您的空间已满,禁止上传新文件",
  74. "data" => null,
  75. ));
  76. exit;
  77. }
  78. $target_dir = "uploads/";//上传目录
  79. $type = isset($type)? $type : '';
  80. //获取允许的扩展
  81. $mediatype = 0;
  82. $allowedTypes = array();
  83. if ($type == 'litpic' || $type == 'face') {
  84. $mediatype = 1;
  85. $imgtypes = explode("|", $cfg_imgtype);
  86. foreach ($imgtypes as $value) {
  87. $allowedTypes[] = GetMimeTypeOrExtension($value);
  88. }
  89. } else if ($type == 'soft') {
  90. $mediatype = 4;
  91. $softtypes = explode("|", $cfg_softtype);
  92. foreach ($softtypes as $value) {
  93. $allowedTypes[] = GetMimeTypeOrExtension($value);
  94. }
  95. } else if ($type == 'media') {
  96. $mediatype = 3;
  97. $mediatypes = explode("|", $cfg_mediatype);
  98. foreach ($mediatypes as $value) {
  99. $allowedTypes[] = GetMimeTypeOrExtension($value);
  100. }
  101. } else {
  102. echo json_encode(array(
  103. "code" => -1,
  104. "msg" => "未定义文件类型",
  105. "data" => null,
  106. ));
  107. exit;
  108. }
  109. $ff = isset($_FILES['file'])? $_FILES['file'] : $_FILES['imgfile'];
  110. $uploadedFile = $ff['tmp_name'];
  111. $fileType = mime_content_type($uploadedFile);
  112. if (!in_array($fileType, $allowedTypes)) {
  113. echo json_encode(array(
  114. "code" => -1,
  115. "msg" => "不支持该文件格式",
  116. "data" => null,
  117. ));
  118. exit;
  119. }
  120. //获取扩展名
  121. $exts = GetMimeTypeOrExtension($fileType, 1);
  122. $width = 0;
  123. $height = 0;
  124. if ($mediatype === 1) {
  125. $imgSize = getimagesize($uploadedFile);
  126. if (!$imgSize) {
  127. echo json_encode(array(
  128. "code" => -1,
  129. "msg" => "无法获取图片正常尺寸",
  130. "data" => null,
  131. ));
  132. exit;
  133. }
  134. $width = $imgSize[0];
  135. $height = $imgSize[1];
  136. }
  137. if (!is_dir($cfg_basedir.$cfg_user_dir."/{$cfg_ml->M_ID}")) {
  138. MkdirAll($cfg_basedir.$cfg_user_dir."/{$cfg_ml->M_ID}", $cfg_dir_purview);
  139. CloseFtp();
  140. }
  141. //头像特殊处理
  142. $fsize = filesize($ff["tmp_name"]);
  143. if ($type === "face") {
  144. $target_file = $cfg_basedir.$cfg_user_dir."/{$cfg_ml->M_ID}/newface.png";
  145. $target_url = $cfg_mediasurl.'/userup'."/{$cfg_ml->M_ID}/newface.png";
  146. if ($fsize > ($cfg_max_face * 1024)) {
  147. echo json_encode(array(
  148. "code" => -1,
  149. "msg" => "上传头像不能超过{$cfg_max_face}KB",
  150. $rkey => null,
  151. ));
  152. exit;
  153. }
  154. } else {
  155. if ($fsize > ($cfg_mb_upload_size * 1024)) {
  156. echo json_encode(array(
  157. "code" => -1,
  158. "msg" => "上传文件不能超过{$cfg_mb_upload_size}KB",
  159. $rkey => null,
  160. ));
  161. exit;
  162. }
  163. $nowtme = time();
  164. $rnd = $nowtme.'-'.mt_rand(1000,9999);
  165. $target_file = $cfg_basedir.$cfg_user_dir."/{$cfg_ml->M_ID}/".$rnd.".".$exts;
  166. $target_url = $cfg_mediasurl.'/userup'."/{$cfg_ml->M_ID}/".$rnd.".".$exts;
  167. $row = $dsql->GetOne("SELECT aid,title,url FROM `#@__uploads` WHERE url LIKE '$target_url' AND mid='".$cfg_ml->M_ID."'; ");
  168. $uptime = time();
  169. if (is_array($row)) {
  170. $query = "UPDATE `#@__uploads` SET mediatype={$mediatype},width='{$width}',height='{$height}',filesize='{$fsize}',uptime='$uptime' WHERE aid='{$row['aid']}'; ";
  171. $dsql->ExecuteNoneQuery($query);
  172. } else {
  173. $inquery = "INSERT INTO `#@__uploads`(url,mediatype,width,height,playtime,filesize,uptime,mid) VALUES ('$target_url','$mediatype','".$width."','".$height."','0','".$fsize."','$uptime','".$cfg_ml->M_ID."'); ";
  174. $dsql->ExecuteNoneQuery($inquery);
  175. }
  176. }
  177. $rkey = $ck == 1? "url" : "data";
  178. if (move_uploaded_file($ff["tmp_name"], $target_file)) {
  179. if ($mediatype === 1) {
  180. //图片自动裁剪
  181. require_once DEDEINC."/libraries/imageresize.class.php";
  182. try {
  183. $image = new ImageResize($target_file);
  184. if ($type === "face") {
  185. $image->crop(150, 150);
  186. } else {
  187. $image->resize($cfg_ddimg_width, $cfg_ddimg_height);
  188. }
  189. $image->save($target_file);
  190. echo json_encode(array(
  191. "code" => 0,
  192. "uploaded" => 1,
  193. "msg" => "上传成功",
  194. $rkey => $target_url,
  195. ));
  196. } catch (ImageResizeException $e) {
  197. echo json_encode(array(
  198. "code" => -1,
  199. "msg" => "自动裁剪图片失败",
  200. $rkey => null,
  201. ));
  202. }
  203. } else {
  204. echo json_encode(array(
  205. "code" => 0,
  206. "uploaded" => 1,
  207. "msg" => "上传成功",
  208. $rkey => $target_url,
  209. ));
  210. }
  211. } else {
  212. echo json_encode(array(
  213. "code" => -1,
  214. "msg" => "上传失败",
  215. $rkey => null,
  216. ));
  217. }
  218. } else {
  219. $format = isset($format) ? "json" : "";
  220. if (!$cfg_ml->IsLogin()) {
  221. if ($format === 'json') {
  222. echo json_encode(array(
  223. "code" => -1,
  224. "msg" => "请登录会员中心",
  225. $rkey => null,
  226. ));
  227. } else {
  228. echo "";
  229. }
  230. exit;
  231. }
  232. $uid = $cfg_ml->M_LoginID;
  233. !$cfg_ml->fields['face'] && $face = ($cfg_ml->fields['sex'] == '女') ? 'dfgirl' : 'dfboy';
  234. if ($format === 'json') {
  235. echo json_encode(array(
  236. "code" => 200,
  237. "msg" => "",
  238. "data" => array(
  239. "username" => $cfg_ml->M_UserName,
  240. "myurl" => $myurl,
  241. "facepic" => $cfg_ml->fields['face'],
  242. "memberurl" => $cfg_memberurl,
  243. ),
  244. ));
  245. exit;
  246. }
  247. }
  248. ?>