Example #1
0
/**
 * 验证验证码
 *
 * @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;
}
Example #2
0
 /**
  * 邮箱绑定验证
  */
 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');
 }
Example #3
0
 /**
  * 解密
  * @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;
 }
Example #4
0
 /**
  * 记录系统日志
  *
  * @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);
 }
Example #5
0
 /**
  * 设置权限组权限
  */
 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');
 }
Example #6
0
 /**
  * 计算购物车总商品数和总金额
  * @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);
 }
Example #8
0
 /**
  * 判断令牌是否正确
  * 
  * @param 
  * @return bool 布尔类型的返回结果
  */
 public static function uk86_checkToken()
 {
     $data = uk86_decrypt($_POST['formhash'], md5(MD5_KEY));
     return $data && TIMESTAMP - $data < 5400;
 }