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

223 lines
8.4KB

  1. <?php
  2. /**
  3. * 会员配置
  4. *
  5. * @version $id:config.php 8:38 2010年7月9日 tianya $
  6. * @package DedeBIZ.User
  7. * @copyright Copyright (c) 2022 DedeBIZ.COM
  8. * @license GNU GPL v2 (https://www.dedebiz.com/license)
  9. * @link https://www.dedebiz.com
  10. */
  11. define('DEDEUSER', true);
  12. require_once(dirname(__FILE__).'/../system/common.inc.php');
  13. //针对会员中心操作进行XSS过滤
  14. function XSSClean($val)
  15. {
  16. global $cfg_soft_lang;
  17. if ($cfg_soft_lang == 'gb2312') gb2utf8($val);
  18. if (is_array($val)) {
  19. foreach ($val as $key => $value) {
  20. if (in_array($key, array('tags', 'body', 'dede_fields', 'dede_addonfields', 'dopost', 'introduce'))) continue;
  21. $val[$key] = XSSClean($val[$key]);
  22. }
  23. return $val;
  24. }
  25. if ($cfg_soft_lang == 'gb2312') utf82gb($val);
  26. return RemoveXss($val);
  27. }
  28. $_GET = XSSClean($_GET);
  29. $_POST = XSSClean($_POST);
  30. $_REQUEST = XSSClean($_REQUEST);
  31. $_COOKIE = XSSClean($_COOKIE);
  32. require_once(DEDEINC.'/filter.inc.php');
  33. require_once(DEDEINC.'/memberlogin.class.php');
  34. require_once(DEDEINC.'/dedetemplate.class.php');
  35. //检查CSRF
  36. function CheckCSRF()
  37. {
  38. $cc_csrf_token_check = GetCookie("dede_csrf_token");
  39. if (
  40. !(isset($_POST['_csrf_token'], $cc_csrf_token_check) && is_string($_POST['_csrf_token']) && is_string($cc_csrf_token_check) && hash_equals($_POST['_csrf_token'], $cc_csrf_token_check))
  41. ) {
  42. ShowMsg('刷新页面重新提交,请不要发布重复文档', '-1');
  43. exit();
  44. }
  45. DropCookie("dede_csrf_token");
  46. }
  47. //生成CSRF校验token,在比较重要的表单中应该要加上这个token校验
  48. $cc_csrf_token = GetCookie("dede_csrf_token");
  49. if (!isset($GLOBALS['csrf_token']) || $GLOBALS['csrf_token'] === null) {
  50. if (
  51. isset($cc_csrf_token) && is_string($cc_csrf_token)
  52. && preg_match('#^[0-9a-f]{32}$#iS', $cc_csrf_token) === 1
  53. ) {
  54. $GLOBALS['csrf_token'] = $cc_csrf_token;
  55. } else {
  56. $GLOBALS['csrf_token'] = md5(uniqid(mt_rand(), TRUE));
  57. }
  58. }
  59. if (strtoupper($_SERVER['REQUEST_METHOD']) !== 'POST') {
  60. PutCookie('dede_csrf_token', $GLOBALS['csrf_token'], 7200, '/');
  61. }
  62. //获得当前脚本名称,如果系统被禁用了$_SERVER变量,请自行修改这个选项
  63. $dedeNowurl = $s_scriptName = '';
  64. $dedeNowurl = GetCurUrl();
  65. $dedeNowurls = explode('?', $dedeNowurl);
  66. $s_scriptName = $dedeNowurls[0];
  67. $menutype = '';
  68. $menutype_son = '';
  69. $gourl = empty($gourl) ? "" : RemoveXSS($gourl);
  70. //检查是否开放会员功能
  71. if ($cfg_mb_open == 'N') {
  72. if (defined('AJAXLOGIN')) {
  73. if ($format === 'json') {
  74. echo json_encode(array(
  75. "code" => -1,
  76. "msg" => "网站关闭了会员功能,您无法浏览此页面",
  77. "data" => null,
  78. ));
  79. exit;
  80. } else {
  81. die('');
  82. }
  83. } else {
  84. ShowMsg("网站关闭了会员功能,您无法浏览此页面", "/");
  85. exit();
  86. }
  87. }
  88. $keeptime = isset($keeptime) && is_numeric($keeptime) ? $keeptime : -1;
  89. $cfg_ml = new MemberLogin($keeptime);
  90. //检查收件箱
  91. function PmRead(){
  92. global $dsql, $cfg_ml;
  93. $query = "SELECT * FROM `#@__member_pms` WHERE folder LIKE 'outbox' AND isadmin='1'";
  94. $dsql->SetQuery($query);
  95. $dsql->Execute();
  96. while ($row = $dsql->GetArray()) {
  97. $row2 = $dsql->GetOne("SELECT * FROM `#@__member_pms` WHERE fromid = '$row[id]' AND toid='{$cfg_ml->M_ID}'");
  98. if (!is_array($row2)) {
  99. $row3 = "INSERT INTO `#@__member_pms` (`floginid`,`fromid`,`toid`,`tologinid`,`folder`,`subject`,`sendtime`,`writetime`,`hasview`,`isadmin`,`message`) VALUES ('admin','{$row['id']}','{$cfg_ml->M_ID}','{$cfg_ml->M_LoginID}','inbox','{$row['subject']}','{$row['sendtime']}','{$row['writetime']}','{$row['hasview']}','{$row['isadmin']}','{$row['message']}')";
  100. $dsql->ExecuteNoneQuery($row3);
  101. }
  102. }
  103. }
  104. //判断会员是否登录
  105. $myurl = '';
  106. if ($cfg_ml->IsLogin()) {
  107. $myurl = $cfg_memberurl."/index.php?uid=".urlencode($cfg_ml->M_LoginID);
  108. if (!preg_match("#^http[s]?:#i", $myurl)) $myurl = $cfg_basehost.$myurl;
  109. if ($cfg_ml->fields['face'] == "") {
  110. $cfg_ml->fields['face'] = $cfg_cmsurl."/static/web/img/admin.png";
  111. }
  112. PmRead();
  113. }
  114. //有没新短信
  115. $pms = $dsql->GetOne("SELECT COUNT(*) AS nums FROM `#@__member_pms` WHERE toid='{$cfg_ml->M_ID}' AND `hasview`=0 AND folder = 'inbox'");
  116. /**
  117. * 检查会员是否有权限进行某个操作
  118. *
  119. * @param int $rank 权限值
  120. * @param int $money 金币
  121. * @return void
  122. */
  123. function CheckRank($rank = 0, $money = 0)
  124. {
  125. global $cfg_ml, $cfg_memberurl, $cfg_mb_spacesta,$dsql;
  126. if (!$cfg_ml->IsLogin()) {
  127. header("Location:{$cfg_memberurl}/login.php?gourl=".urlencode(GetCurUrl()));
  128. exit();
  129. } else {
  130. if ($cfg_mb_spacesta == '-10') {
  131. //var_dump($cfg_ml->fields);
  132. //如果启用注册邮件验证
  133. if ($cfg_ml->fields['spacesta'] == '-10' && !preg_match("#edit_baseinfo.php$#", GetCurUrl())) {
  134. if (empty($cfg_ml->fields['email'])) {
  135. ShowMsg("邮箱地址为空,请设置一个邮箱地址", "edit_baseinfo.php");
  136. exit;
  137. }
  138. $msg = "<p>您未进行邮件验证,发送验证邮件后请登录邮箱进行确认</p><a href='{$cfg_memberurl}/index_do.php?fmdo=sendMail' class='btn btn-success btn-sm'>发送</a><a href='javascript:history.go(-1);' class='btn btn-outline-success btn-sm'>返回</a>";
  139. ShowMsg($msg, "javascript:;");
  140. exit;
  141. }
  142. }
  143. if ($cfg_ml->M_Rank < $rank) {
  144. $needname = '';
  145. if ($cfg_ml->M_Rank == 0) {
  146. $row = $dsql->GetOne("SELECT membername FROM `#@__arcrank` WHERE `rank`='$rank'");
  147. $myname = "注册会员";
  148. $needname = $row['membername'];
  149. } else {
  150. $dsql->SetQuery("SELECT membername From `#@__arcrank` WHERE `rank`='$rank' OR `rank`='".$cfg_ml->M_Rank."' ORDER BY `rank` DESC");
  151. $dsql->Execute();
  152. $row = $dsql->GetObject();
  153. $needname = $row->membername;
  154. if ($row = $dsql->GetObject()) {
  155. $myname = $row->membername;
  156. } else {
  157. $myname = "注册会员";
  158. }
  159. }
  160. ShowMsg("需要".$needname."才能浏览本页面,您目前等级是".$myname."", "-1");
  161. exit();
  162. } else if ($cfg_ml->M_Money < $money) {
  163. ShowMsg("需要".$money."金币才能浏览本页面,您目前金币".$cfg_ml->M_Money."个", "-1");
  164. exit();
  165. }
  166. }
  167. }
  168. /**
  169. * 更新文档统计
  170. *
  171. * @access public
  172. * @param int $channelid 栏目模型id
  173. * @return mixed
  174. */
  175. function countArchives($channelid)
  176. {
  177. global $cfg_ml, $dsql;
  178. $id = (int)$channelid;
  179. if ($cfg_ml->IsLogin()) {
  180. $channeltype = array(1 => 'article', 2 => 'album', 3 => 'soft', -8 => 'infos');
  181. if (isset($channeltype[$id])) {
  182. $_field = $channeltype[$id];
  183. } else {
  184. $_field = 'articles';
  185. }
  186. $row = $dsql->GetOne("SELECT COUNT(*) AS nums FROM `#@__archives` WHERE channel='$id' AND mid='".$cfg_ml->M_ID."'");
  187. $dsql->ExecuteNoneQuery("UPDATE `#@__member_tj` SET ".$_field."='".$row['nums']."' WHERE mid='".$cfg_ml->M_ID."'");
  188. } else {
  189. return FALSE;
  190. }
  191. }
  192. //安全提示问题,这两句不要修改
  193. $safequestions = array();
  194. $safequestions[0] = '没安全提示问题';
  195. //下面的设置可以手工修改
  196. $safequestions[1] = '您最喜欢的格言什么';
  197. $safequestions[2] = '您家乡的名称是什么';
  198. $safequestions[3] = '您读的小学叫什么';
  199. $safequestions[4] = '您的父亲叫什么名字';
  200. $safequestions[5] = '您的母亲叫什么名字';
  201. $safequestions[6] = '您最喜欢的偶像是谁';
  202. $safequestions[7] = '您最喜欢的歌曲是什么';
  203. //以下不要修改
  204. function GetSafequestion($selid=0,$formname='safequestion')
  205. {
  206. global $safequestions;
  207. $safequestions_form = "<select name='$formname' id='$formname' class='form-control'>";
  208. foreach($safequestions as $k=>$v)
  209. {
  210. if ($k==$selid) $safequestions_form .= "<option value='$k' selected>$v</option>\r\n";
  211. else $safequestions_form .= "<option value='$k'>$v</option>\r\n";
  212. }
  213. $safequestions_form .= "</select>\r\n";
  214. return $safequestions_form;
  215. }
  216. $enabledChannels = MemberLogin::GetEnabledChannels();
  217. function UserInclude($file)
  218. {
  219. return DEDEMEMBER.'/'.$file;
  220. }
  221. ?>