/** * 验证验证码 * * @param string $nchash 哈希数 * @param string $value 待验证值 * @return boolean */ function uk86_checkSeccode($nchash, $value) { list($checkvalue, $checktime, $checkidhash) = explode("\t", uk86_decrypt(uk86_cookie('seccode' . $nchash), MD5_KEY)); $return = $checkvalue == strtoupper($value) && $checkidhash == $nchash; if (!$return) { uk86_setNcCookie('seccode' . $nchash, '', -3600); } return $return; }
/** * 邮箱绑定验证 */ public function bind_emailOp() { $model_member = Model('member'); $uid = @base64_decode($_GET['uid']); $uid = uk86_decrypt($uid, ''); list($member_id, $member_email) = explode(' ', $uid); if (!is_numeric($member_id)) { uk86_showMessage('验证失败', SHOP_SITE_URL, 'html', 'error'); } $member_info = $model_member->getMemberInfo(array('member_id' => $member_id), 'member_email'); if ($member_info['member_email'] != $member_email) { uk86_showMessage('验证失败', SHOP_SITE_URL, 'html', 'error'); } $member_common_info = $model_member->getMemberCommonInfo(array('member_id' => $member_id)); if (empty($member_common_info) || !is_array($member_common_info)) { uk86_showMessage('验证失败', SHOP_SITE_URL, 'html', 'error'); } if (md5($member_common_info['auth_code']) != $_GET['hash'] || TIMESTAMP - $member_common_info['send_acode_time'] > 24 * 3600) { uk86_showMessage('验证失败', SHOP_SITE_URL, 'html', 'error'); } $update = $model_member->editMember(array('member_id' => $member_id), array('member_email_bind' => 1)); if (!$update) { uk86_showMessage('系统发生错误,如有疑问请与管理员联系', SHOP_SITE_URL, 'html', 'error'); } $data = array(); $data['auth_code'] = ''; $data['send_acode_time'] = 0; $update = $model_member->editMemberCommon($data, array('member_id' => $_SESSION['member_id'])); if (!$update) { showDialog('系统发生错误,如有疑问请与管理员联系'); } uk86_showMessage('邮箱设置成功', 'index.php?act=member_security&op=index'); }
/** * 解密 * @param string $string * @param int $member_id * @param number $ttl */ public function buyDecrypt($string, $member_id, $ttl = 0) { $buy_key = sha1(md5($member_id . '&' . MD5_KEY)); if (empty($string)) { return; } $string = base64_decode(uk86_decrypt(strval($string), $buy_key, $ttl)); return ($tmp = @unserialize($string)) !== false ? $tmp : $string; }
/** * 记录系统日志 * * @param $lang 日志语言包 * @param $state 1成功0失败null不出现成功失败提示 * @param $admin_name * @param $admin_id */ protected final function log($lang = '', $state = 1, $admin_name = '', $admin_id = 0) { if (!C('sys_log') || !is_string($lang)) { return; } if ($admin_name == '') { $admin = unserialize(uk86_decrypt(uk86_cookie('sys_key'), MD5_KEY)); $admin_name = $admin['name']; $admin_id = $admin['id']; } $data = array(); if (is_null($state)) { $state = null; } else { // $state = $state ? L('nc_succ') : L('nc_fail'); $state = $state ? '' : L('nc_fail'); } $data['content'] = $lang . $state; $data['admin_name'] = $admin_name; $data['createtime'] = TIMESTAMP; $data['admin_id'] = $admin_id; $data['ip'] = uk86_getIp(); $data['url'] = $_REQUEST['act'] . '&' . $_REQUEST['op']; return Model('admin_log')->insert($data); }
/** * 设置权限组权限 */ public function gadmin_setOp() { $model = Model('gadmin'); $gid = intval($_GET['gid']); $ginfo = $model->getby_gid($gid); if (empty($ginfo)) { uk86_showMessage(L('admin_set_admin_not_exists')); } if (uk86_chksubmit()) { $limit_str = ''; if (is_array($_POST['permission'])) { $limit_str = implode('|', $_POST['permission']); } $limit_str = uk86_encrypt($limit_str, MD5_KEY . md5($_POST['gname'])); $data['limits'] = $limit_str; $data['gname'] = $_POST['gname']; $update = $model->where(array('gid' => $gid))->update($data); if ($update) { $this->log(L('nc_edit,limit_gadmin') . '[' . $_POST['gname'] . ']', 1); uk86_showMessage(L('nc_common_save_succ'), 'index.php?act=admin&op=gadmin'); } else { uk86_showMessage(L('nc_common_save_succ')); } } //解析已有权限 $hlimit = uk86_decrypt($ginfo['limits'], MD5_KEY . md5($ginfo['gname'])); $ginfo['limits'] = explode('|', $hlimit); Tpl::output('ginfo', $ginfo); Tpl::output('limit', $this->permission()); Tpl::output('top_link', $this->sublink($this->links, 'gadmin')); Tpl::showpage('gadmin.set'); }
/** * 计算购物车总商品数和总金额 * @param string $type 购物车信息保存类型 db,cookie * @param array $condition 只有登录后操作购物车表时才会用到该参数 */ public function getCartNum($type, $condition = array()) { if ($type == 'db') { $cart_all_price = 0; $cart_goods = $this->listCart('db', $condition); $this->cart_goods_num = count($cart_goods); if (!empty($cart_goods) && is_array($cart_goods)) { foreach ($cart_goods as $val) { $cart_all_price += $val['goods_price'] * $val['goods_num']; } } $this->cart_all_price = uk86_ncPriceFormat($cart_all_price); } elseif ($type == 'cookie') { $cart_str = get_magic_quotes_gpc() ? stripslashes(uk86_cookie('cart')) : uk86_cookie('cart'); $cart_str = base64_decode(uk86_decrypt($cart_str)); $cart_array = @unserialize($cart_str); $cart_array = !is_array($cart_array) ? array() : $cart_array; /*$cartGood=Array(); foreach($cart_array as $key=>$val){ if($val['goods_id']!=null){ array_push($cartGood,$val); } }*/ $this->cart_goods_num = count($cart_array); $cart_all_price = 0; foreach ($cart_array as $v) { $cart_all_price += floatval($v['goods_price']) * intval($v['goods_num']); } $this->cart_all_price = $cart_all_price; } @uk86_setNcCookie('cart_goods_num', $this->cart_goods_num, 2 * 3600); return $this->cart_goods_num; }
/** * 浏览过的商品加入浏览历史数据库 * * @param mixed $goods_id 商品ID或者商品ID数组 * @return array */ public function addViewedGoodsToCookie($goods_id) { if (!$goods_id) { return array('state' => false, 'msg' => '参数错误'); } //浏览时间 $browsetime = time(); //构造cookie的一项值,每项cookie的值为商品ID-访问时间 if (is_array($goods_id)) { $goods_idarr = $goods_id; foreach ($goods_id as $v) { $cookievalue[] = $v . '-' . $browsetime; } } else { $cookievalue[] = $goods_id . '-' . $browsetime; $goods_idarr[] = $goods_id; } unset($goods_id); if (uk86_cookie('viewed_goods')) { //如果cookie已经存在 $string_viewed_goods = uk86_decrypt(uk86_cookie('viewed_goods'), MD5_KEY); if (get_magic_quotes_gpc()) { $string_viewed_goods = stripslashes($string_viewed_goods); // 去除斜杠 } $vg_ca = @unserialize($string_viewed_goods); if (!empty($vg_ca) && is_array($vg_ca)) { foreach ($vg_ca as $vk => $vv) { $vv_arr = explode('-', $vv); if (in_array($vv_arr[0], $goods_idarr)) { //如果该商品的浏览记录已经存在,则删除它 unset($vg_ca[$vk]); } } } else { $vg_ca = array(); } //将新浏览历史加入cookie末尾 array_push($vg_ca, implode(',', $cookievalue)); //cookie中最多存储50条浏览信息 if (count($vg_ca) > 50) { $vg_ca = array_slice($vg_ca, -50, 50); } } else { $vg_ca = $cookievalue; } $vg_ca = uk86_encrypt(serialize($vg_ca), MD5_KEY); uk86_setNcCookie('viewed_goods', $vg_ca); }
/** * 判断令牌是否正确 * * @param * @return bool 布尔类型的返回结果 */ public static function uk86_checkToken() { $data = uk86_decrypt($_POST['formhash'], md5(MD5_KEY)); return $data && TIMESTAMP - $data < 5400; }