【南方新课堂 金牌学案】2019-2020学年高中化学选修化学反应原理(鲁科
【南方新课堂 金牌学案】2019-2020学年高中化学选修化学反应原理(鲁科
$conf, $runtime; function_exists('chdir') AND chdir(APP_PATH); $r = 'mysql' == $conf['cache']['type'] ? website_set('runtime', $runtime) : cache_set('runtime', $runtime); } function runtime_truncate() { global $conf; 'mysql' == $conf['cache']['type'] ? website_set('runtime', '') : cache_delete('runtime'); } register_shutdown_function('runtime_save'); ?>$conf, $time; $_uid = user_token_get_do(); empty($_uid) and user_token_clear(); // 退出登录 return $_uid; } // 用户 function user_token_get_do() { global $conf, $time, $ip, $useragent; $token = param($conf['cookie_pre'] . 'token'); if (empty($token)) return FALSE; $tokenkey = md5(xn_key()); $s = xn_decrypt($token, $tokenkey); if (empty($s)) return FALSE; $arr = explode("\t", $s); if (count($arr) != 5) return FALSE; list($_ip, $_time, $_uid, $_pwd, $ua_md5) = $arr; if (array_value($conf, 'login_ip') && $ip != $_ip) return FALSE; if (array_value($conf, 'login_ua') && md5($useragent) != $ua_md5) return FALSE; $_user = user_read($_uid); if (empty($_user)) return FALSE; if (array_value($conf, 'login_only') && $_user['login_date'] != $_time) return FALSE; // 密码是否被修改 if (md5($_user['password']) != $_pwd) return FALSE; return $_uid; } // 设置 token,防止 sid 过期后被删除 function user_token_set($uid) { global $conf, $time; if (empty($uid)) return ''; $token = user_token_gen($uid); setcookie($conf['cookie_pre'] . 'token', $token, $time + 86400000, $conf['cookie_path'], $conf['cookie_domain'], '', TRUE); return $token; } function user_token_clear() { global $conf, $time; setcookie($conf['cookie_pre'] . 'token', '', $time - 8640000, $conf['cookie_path'], $conf['cookie_domain'], '', TRUE); } function user_token_gen($uid) { global $conf, $time, $ip, $useragent; $key = 'user_token' . $uid; static $cache = array(); if (isset($cache[$key])) return $cache[$key]; $user = user_read($uid); $pwd = md5($user['password']); $ua_md5 = md5($useragent); $tokenkey = md5(xn_key()); $cache[$key] = xn_encrypt("$ip $time $uid $pwd $ua_md5", $tokenkey); return $cache[$key]; } // 前台登录验证 function user_login_check() { global $user; empty($user) and http_location(url('user-login')); } // 获取用户来路 function user_http_referer() { global $conf; $referer = param('referer'); // 优先从参数获取 | GET is priority empty($referer) and $referer = array_value($_SERVER, 'HTTP_REFERER', ''); $referer = str_replace(array('\"', '"', '<', '>', ' ', '*', "\t", "\r", "\n"), '', $referer); // 干掉特殊字符 strip special chars if ( !preg_match('#^(http|https)://[\w\-=/\.]+/[\w\-=.%\#?]*$#is', $referer) || FALSE !== strpos($referer, url('user-login')) || FALSE !== strpos($referer, url('user-logout')) || FALSE !== strpos($referer, url('user-create')) || FALSE !== strpos($referer, url('user-setpw')) || FALSE !== strpos($referer, url('user-resetpw_complete')) ) { $referer = $conf['path']; } return $referer; } function user_auth_check($token) { global $time, $ip; $auth = param(2); $s = xn_decrypt($auth); empty($s) and message(-1, lang('decrypt_failed')); $arr = explode('-', $s); count($arr) != 4 and message(-1, lang('encrypt_failed')); list($_ip, $_time, $_uid, $_pwd) = $arr; $_user = user_read($_uid); empty($_user) and message(-1, lang('user_not_exists')); $time - $_time > 3600 and message(-1, lang('link_has_expired')); return $_user; } ?>k' => $rank)); return $r; } /* * @param int $page 页数 * @param int $pagesize 每页显示数量 * @param bool $desc 排序TRUE倒序 FALSE升序 * @return mixed * 遍历所有主题tid */ function page_find($page = 1, $pagesize = 20, $desc = TRUE) { $orderby = TRUE == $desc ? -1 : 1; $arrlist = page__find($cond = array(), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid','rank')); return $arrlist; } /* * @param $fid 版块fid 支持数组 $fid = array(1,2,3) * @param int $page 页数 * @param int $pagesize 每页显示数量 * @param bool $desc 排序TRUE降序 FALSE升序 * @return mixed 返回遍历tid数据 */ function page_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { $orderby = TRUE == $desc ? -1 : 1; $arrlist = page__find($cond = array('fid' => $fid), array('rank' => $orderby), $page, $pagesize, 'tid', array('tid','rank')); return $arrlist; } /* * @param $tid 主题tid * @return bool 返回FALSE失败 TRUE成功 */ function page_delete($tid) { if (empty($tid)) return FALSE; $r = page__delete(array('tid' => $tid)); return $r; } function page_count() { $n = page__count(); return $n; } /* * @param $fid 版块fid * @return mixed 返回版块下主题数量 */ function page_fid_count($fid) { $n = page__count(array('fid' => $fid)); return $n; } ?>eak; case 'read': $pre .= $default_pre .= 'read.htm'; break; case 'comment': $pre .= $default_pre .= 'comment.htm'; break; case 'comment_list.inc': $pre .= $default_pre .= 'comment_list.inc.htm'; break; case 'message': $pre .= $default_pre .= 'message.htm'; break; case 'tag_list': $pre .= $default_pre .= 'tag_list.htm'; break; case 'tag': $pre .= $default_pre .= 'tag.htm'; break; case 'flag': $pre .= $default_pre .= 'flag.htm'; break; case 'my': $pre .= $default_pre .= 'my.htm'; break; case 'my_password': $pre .= $default_pre .= 'my_password.htm'; break; case 'my_bind': $pre .= $default_pre .= 'my_bind.htm'; break; case 'my_avatar': $pre .= $default_pre .= 'my_avatar.htm'; break; case 'home_article': $pre .= $default_pre .= 'home_article.htm'; break; case 'home_comment': $pre .= $default_pre .= 'home_comment.htm'; break; case 'user': $pre .= $default_pre .= 'user.htm'; break; case 'user_login': $pre .= $default_pre .= 'user_login.htm'; break; case 'user_create': $pre .= $default_pre .= 'user_create.htm'; break; case 'user_resetpw': $pre .= $default_pre .= 'user_resetpw.htm'; break; case 'user_resetpw_complete': $pre .= $default_pre .= 'user_resetpw_complete.htm'; break; case 'user_comment': $pre .= $default_pre .= 'user_comment.htm'; break; case 'single_page': $pre .= $default_pre .= 'single_page.htm'; break; case 'search': $pre .= $default_pre .= 'search.htm'; break; case 'operate_sticky': $pre .= $default_pre .= 'operate_sticky.htm'; break; case 'operate_close': $pre .= $default_pre .= 'operate_close.htm'; break; case 'operate_delete': $pre .= $default_pre .= 'operate_delete.htm'; break; case 'operate_move': $pre .= $default_pre .= 'operate_move.htm'; break; case '404': $pre .= $default_pre .= '404.htm'; break; case 'read_404': $pre .= $default_pre .= 'read_404.htm'; break; case 'list_404': $pre .= $default_pre .= 'list_404.htm'; break; default: $pre .= $default_pre .= theme_mode_pre(); break; } if ($config['theme']) { $conffile = APP_PATH . 'view/template/' . $config['theme'] . '/conf.json'; $json = is_file($conffile) ? xn_json_decode(file_get_contents($conffile)) : array(); } !empty($json['installed']) and $path_file = APP_PATH . 'view/template/' . $config['theme'] . '/htm/' . ($id ? $id . '_' : '') . $pre; (empty($path_file) || !is_file($path_file)) and $path_file = APP_PATH . 'view/template/' . $config['theme'] . '/htm/' . $pre; if (!empty($config['theme_child']) && is_array($config['theme_child'])) { foreach ($config['theme_child'] as $theme) { if (empty($theme) || is_array($theme)) continue; $path_file = APP_PATH . 'view/template/' . $theme . '/htm/' . ($id ? $id . '_' : '') . $pre; !is_file($path_file) and $path_file = APP_PATH . 'view/template/' . $theme . '/htm/' . $pre; } } !is_file($path_file) and $path_file = APP_PATH . ($dir ? 'plugin/' . $dir . '/view/htm/' : 'view/htm/') . $default_pre; return $path_file; } function theme_mode_pre($type = 0) { global $config; $mode = $config['setting']['website_mode']; $pre = ''; if (1 == $mode) { $pre .= 2 == $type ? 'portal_category.htm' : 'portal.htm'; } elseif (2 == $mode) { $pre .= 2 == $type ? 'flat_category.htm' : 'flat.htm'; } else { $pre .= 2 == $type ? 'index_category.htm' : 'index.htm'; } return $pre; } ?>