queryTime == '') { $query_time = 0; } else { if (PHP_VERSION >= '5.0.0') { $query_time = number_format(microtime(true) - $GLOBALS['db']->queryTime, 6); } else { list($now_usec, $now_sec) = explode(' ', microtime()); list($start_usec, $start_sec) = explode(' ', $GLOBALS['db']->queryTime); $query_time = number_format(($now_sec - $start_sec) + ($now_usec - $start_usec), 6); } } $GLOBALS['smarty']->assign('query_info', sprintf($GLOBALS['_LANG']['query_info'], $GLOBALS['db']->queryCount, $query_time)); /* 内存占用情况 */ if ($GLOBALS['_LANG']['memory_info'] && function_exists('memory_get_usage')) { $GLOBALS['smarty']->assign('memory_info', sprintf($GLOBALS['_LANG']['memory_info'], memory_get_usage() / 1048576)); } /* 是否启用了 gzip */ $gzip_enabled = gzip_enabled() ? $GLOBALS['_LANG']['gzip_enabled'] : $GLOBALS['_LANG']['gzip_disabled']; $GLOBALS['smarty']->assign('gzip_enabled', $gzip_enabled); } function assign_menu_info() { global $_LANG; include_once('includes/inc_menu.php'); include_once('includes/inc_priv.php'); foreach ($modules AS $key => $value) { ksort($modules[$key]); } ksort($modules); foreach ($modules AS $key => $val) { $menus[$key]['label'] = $_LANG[$key]; if (is_array($val)) { foreach ($val AS $k => $v) { if ( isset($purview[$k])) { if (is_array($purview[$k])) { $boole = false; foreach ($purview[$k] as $action) { $boole = $boole || admin_priv($action, '', false); } if (!$boole) { continue; } } else { if (! admin_priv($purview[$k], '', false)) { continue; } } } if ($k == 'ucenter_setup' && $_CFG['integrate_code'] != 'ucenter') { continue; } $menus[$key]['children'][$k]['label'] = $_LANG[$k]; $menus[$key]['children'][$k]['action'] = $v; } } else { $menus[$key]['action'] = $val; } // 如果children的子元素长度为0则删除该组 if(empty($menus[$key]['children'])) { unset($menus[$key]); } } $GLOBALS['smarty']->assign('menus', $menus); $GLOBALS['smarty']->assign('no_help', $_LANG['no_help']); $GLOBALS['smarty']->assign('help_lang', $_CFG['lang']); $GLOBALS['smarty']->assign('charset', EC_CHARSET); $GLOBALS['smarty']->assign('admin_id', $_SESSION['admin_id']); } /** * 创建地区的返回信息 * * @access public * @param array $arr 地区数组 * * @return void */ function region_result($parent, $sel_name, $type) { global $cp; $arr = get_regions($type, $parent); foreach ($arr AS $v) { $region =& $cp->add_node('region'); $region_id =& $region->add_node('id'); $region_name =& $region->add_node('name'); $region_id->set_data($v['region_id']); $region_name->set_data($v['region_name']); } $select_obj =& $cp->add_node('select'); $select_obj->set_data($sel_name); } /** * 获得指定国家的所有省份 * * @access public * @param int country 国家的编号 * @return array */ function get_regions($type = 0, $parent = 0) { $sql = 'SELECT region_id, region_name FROM ' . $GLOBALS['ecs']->table('region') . " WHERE region_type = '$type' AND parent_id = '$parent'"; return $GLOBALS['db']->GetAll($sql); } function get_banks($parent = 0) { $sql = 'SELECT bank_code, bank_name FROM ' . $GLOBALS['ecs']->table('bank') . " WHERE parent_id = '$parent' order by bank_code"; return $GLOBALS['db']->GetAll($sql); } function get_gamename_by_id($id = 0) { if($id>0){ $sql = 'SELECT games_name FROM ' . $GLOBALS['ecs']->table('games') . " WHERE games_id = '$id'"; return $GLOBALS['db']->GetOne($sql); }else{ return '電子錢包'; } } /** * 初始化会员数据整合类 * * @access public * @return object */ function &init_users() { $set_modules = false; static $cls = null; if ($cls != null) { return $cls; } include_once(ROOT_PATH . 'includes/modules/integrates/' . $GLOBALS['_CFG']['integrate_code'] . '.php'); $cfg = unserialize($GLOBALS['_CFG']['integrate_config']); $cls = new $GLOBALS['_CFG']['integrate_code']($cfg); return $cls; } /** * 过滤和排序所有分类,返回一个带有缩进级别的数组 * * @access private * @param int $cat_id 上级分类ID * @param array $arr 含有所有分类的数组 * @param int $level 级别 * @return void */ function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id])) { return $cat_options[$spec_cat_id]; } if (!isset($cat_options[0])) { $level = $last_cat_id = 0; $options = $cat_id_array = $level_array = array(); $data = read_static_cache('cat_option_static'); if ($data === false) { while (!empty($arr)) { foreach ($arr AS $key => $value) { $cat_id = $value['cat_id']; if ($level == 0 && $last_cat_id == 0) { if ($value['parent_id'] > 0) { break; } $options[$cat_id] = $value; $options[$cat_id]['level'] = $level; $options[$cat_id]['id'] = $cat_id; $options[$cat_id]['name'] = $value['cat_name']; unset($arr[$key]); if ($value['has_children'] == 0) { continue; } $last_cat_id = $cat_id; $cat_id_array = array($cat_id); $level_array[$last_cat_id] = ++$level; continue; } if ($value['parent_id'] == $last_cat_id) { $options[$cat_id] = $value; $options[$cat_id]['level'] = $level; $options[$cat_id]['id'] = $cat_id; $options[$cat_id]['name'] = $value['cat_name']; unset($arr[$key]); if ($value['has_children'] > 0) { if (end($cat_id_array) != $last_cat_id) { $cat_id_array[] = $last_cat_id; } $last_cat_id = $cat_id; $cat_id_array[] = $cat_id; $level_array[$last_cat_id] = ++$level; } } elseif ($value['parent_id'] > $last_cat_id) { break; } } $count = count($cat_id_array); if ($count > 1) { $last_cat_id = array_pop($cat_id_array); } elseif ($count == 1) { if ($last_cat_id != end($cat_id_array)) { $last_cat_id = end($cat_id_array); } else { $level = 0; $last_cat_id = 0; $cat_id_array = array(); continue; } } if ($last_cat_id && isset($level_array[$last_cat_id])) { $level = $level_array[$last_cat_id]; } else { $level = 0; } } //如果数组过大,不采用静态缓存方式 if (count($options) <= 2000) { write_static_cache('cat_option_static', $options); } } else { $options = $data; } $cat_options[0] = $options; } else { $options = $cat_options[0]; } if (!$spec_cat_id) { return $options; } else { if (empty($options[$spec_cat_id])) { return array(); } $spec_cat_id_level = $options[$spec_cat_id]['level']; foreach ($options AS $key => $value) { if ($key != $spec_cat_id) { unset($options[$key]); } else { break; } } $spec_cat_id_array = array(); foreach ($options AS $key => $value) { if (($spec_cat_id_level == $value['level'] && $value['cat_id'] != $spec_cat_id) || ($spec_cat_id_level > $value['level'])) { break; } else { $spec_cat_id_array[$key] = $value; } } $cat_options[$spec_cat_id] = $spec_cat_id_array; return $spec_cat_id_array; } } /** * 载入配置信息 * * @access public * @return array */ function load_config() { $arr = array(); $data = read_static_cache('shop_config'); if ($data === false) { $sql = 'SELECT code, value FROM ' . $GLOBALS['ecs']->table('shop_config') . ' WHERE parent_id > 0'; $res = $GLOBALS['db']->getAll($sql); foreach ($res AS $row) { $arr[$row['code']] = $row['value']; } /* 对数值型设置处理 */ // $arr['watermark_alpha'] = intval($arr['watermark_alpha']); //$arr['market_price_rate'] = floatval($arr['market_price_rate']); // $arr['integral_scale'] = floatval($arr['integral_scale']); //$arr['integral_percent'] = floatval($arr['integral_percent']); // $arr['cache_time'] = intval($arr['cache_time']); //$arr['thumb_width'] = intval($arr['thumb_width']); //$arr['thumb_height'] = intval($arr['thumb_height']); //$arr['image_width'] = intval($arr['image_width']); //$arr['image_height'] = intval($arr['image_height']); //$arr['best_number'] = !empty($arr['best_number']) && intval($arr['best_number']) > 0 ? intval($arr['best_number']) : 3; //$arr['new_number'] = !empty($arr['new_number']) && intval($arr['new_number']) > 0 ? intval($arr['new_number']) : 3; //$arr['hot_number'] = !empty($arr['hot_number']) && intval($arr['hot_number']) > 0 ? intval($arr['hot_number']) : 3; //$arr['promote_number'] = !empty($arr['promote_number']) && intval($arr['promote_number']) > 0 ? intval($arr['promote_number']) : 3; //$arr['top_number'] = intval($arr['top_number']) > 0 ? intval($arr['top_number']) : 10; //$arr['history_number'] = intval($arr['history_number']) > 0 ? intval($arr['history_number']) : 5; //$arr['comments_number'] = intval($arr['comments_number']) > 0 ? intval($arr['comments_number']) : 5; //$arr['article_number'] = intval($arr['article_number']) > 0 ? intval($arr['article_number']) : 5; //$arr['page_size'] = intval($arr['page_size']) > 0 ? intval($arr['page_size']) : 10; //$arr['bought_goods'] = intval($arr['bought_goods']); //$arr['goods_name_length'] = intval($arr['goods_name_length']); $arr['top10_time'] = intval($arr['top10_time']); // $arr['goods_gallery_number'] = intval($arr['goods_gallery_number']) ? intval($arr['goods_gallery_number']) : 5; $arr['no_picture'] = !empty($arr['no_picture']) ? str_replace('../', './', $arr['no_picture']) : 'images/no_picture.gif'; // 修改默认商品图片的路径 $arr['qq'] = !empty($arr['qq']) ? $arr['qq'] : ''; $arr['ww'] = !empty($arr['ww']) ? $arr['ww'] : ''; $arr['default_storage'] = isset($arr['default_storage']) ? intval($arr['default_storage']) : 1; $arr['min_goods_amount'] = isset($arr['min_goods_amount']) ? floatval($arr['min_goods_amount']) : 0; $arr['one_step_buy'] = empty($arr['one_step_buy']) ? 0 : 1; $arr['invoice_type'] = empty($arr['invoice_type']) ? array('type' => array(), 'rate' => array()) : unserialize($arr['invoice_type']); $arr['show_order_type'] = isset($arr['show_order_type']) ? $arr['show_order_type'] : 0; // 显示方式默认为列表方式 $arr['help_open'] = isset($arr['help_open']) ? $arr['help_open'] : 1; // 显示方式默认为列表方式 if (!isset($GLOBALS['_CFG']['ecs_version'])) { /* 如果没有版本号则默认为2.0.5 */ $GLOBALS['_CFG']['ecs_version'] = 'v2.0.5'; } //限定语言项 $lang_array = array('zh_cn', 'zh_tw', 'en_us'); if (empty($arr['lang']) || !in_array($arr['lang'], $lang_array)) { $arr['lang'] = 'zh_tw'; // 默认语言为简体中文 } if (empty($arr['integrate_code'])) { $arr['integrate_code'] = 'ecshop'; // 默认的会员整合插件为 ecshop } write_static_cache('shop_config', $arr); } else { $arr = $data; } return $arr; } /** * 获得指定分类下所有底层分类的ID * * @access public * @param integer $cat 指定的分类ID * @return string */ function get_children($cat = 0) { return 'g.cat_id ' . db_create_in(array_unique(array_merge(array($cat), array_keys(cat_list($cat, 0, false))))); } /** * 获得指定文章分类下所有底层分类的ID * * @access public * @param integer $cat 指定的分类ID * * @return void */ function get_article_children ($cat = 0) { return db_create_in(array_unique(array_merge(array($cat), array_keys(article_cat_list($cat, 0, false)))), 'cat_id'); } /** * 获取邮件模板 * * @access public * @param: $tpl_name[string] 模板代码 * * @return array */ function get_mail_template($tpl_name) { $sql = 'SELECT template_subject, is_html, template_content FROM ' . $GLOBALS['ecs']->table('mail_templates') . " WHERE template_code = '$tpl_name'"; return $GLOBALS['db']->GetRow($sql); } /** * 记录订单操作记录 * * @access public * @param string $order_sn 订单编号 * @param integer $order_status 订单状态 * @param integer $shipping_status 配送状态 * @param integer $pay_status 付款状态 * @param string $note 备注 * @param string $username 用户名,用户自己的操作则为 buyer * @return void */ function order_action($order_sn, $order_status, $shipping_status, $pay_status, $note = '', $username = null, $place = 0) { if (is_null($username)) { $username = $_SESSION['admin_name']; } $sql = 'INSERT INTO ' . $GLOBALS['ecs']->table('order_action') . ' (order_id, action_user, order_status, shipping_status, pay_status, action_place, action_note, log_time) ' . 'SELECT ' . "order_id, '$username', '$order_status', '$shipping_status', '$pay_status', '$place', '$note', '" .gmtime() . "' " . 'FROM ' . $GLOBALS['ecs']->table('order_info') . " WHERE order_sn = '$order_sn'"; $GLOBALS['db']->query($sql); } /** * 格式化商品价格 * * @access public * @param float $price 商品价格 * @return string */ function price_format($price, $change_price = true) { if($price==='') { $price=0; } if ($change_price && defined('ECS_ADMIN') === false) { switch ($GLOBALS['_CFG']['price_format']) { case 0: $price = number_format($price, 2, '.', ''); break; case 1: // 保留不为 0 的尾数 $price = preg_replace('/(.*)(\\.)([0-9]*?)0+$/', '\1\2\3', number_format($price, 2, '.', '')); if (substr($price, -1) == '.') { $price = substr($price, 0, -1); } break; case 2: // 不四舍五入,保留1位 $price = substr(number_format($price, 2, '.', ''), 0, -1); break; case 3: // 直接取整 $price = intval($price); break; case 4: // 四舍五入,保留 1 位 $price = number_format($price, 1, '.', ''); break; case 5: // 先四舍五入,不保留小数 $price = round($price); break; } } else { $price = number_format($price, 2, '.', ''); } return sprintf($GLOBALS['_CFG']['currency_format'], $price); } /** * 获取指定 id snatch 活动的结果 * * @access public * @param int $id snatch_id * * @return array array(user_name, bie_price, bid_time, num) * num通常为1,如果为2表示有2个用户取到最小值,但结果只返回最早出价用户。 */ function get_snatch_result($id) { $sql = 'SELECT u.user_id, u.user_name, lg.bid_price, lg.bid_time, count(*) as num' . ' FROM ' . $GLOBALS['ecs']->table('snatch_log') . ' AS lg '. ' LEFT JOIN ' . $GLOBALS['ecs']->table('users') . ' AS u ON lg.user_id = u.user_id'. " WHERE lg.snatch_id = '$id'". ' GROUP BY lg.bid_price' . ' ORDER BY num ASC, lg.bid_price ASC, lg.bid_time ASC LIMIT 1'; $rec = $GLOBALS['db']->GetRow($sql); if ($rec) { $rec['bid_time'] = local_date($GLOBALS['_CFG']['time_format'], $rec['bid_time']); $rec['formated_bid_price'] = price_format($rec['bid_price'], false); /* 活动信息 */ $sql = 'SELECT ext_info " . " FROM ' . $GLOBALS['ecs']->table('goods_activity') . " WHERE act_id= '$id' AND act_type=" . GAT_SNATCH. " LIMIT 1"; $row = $GLOBALS['db']->getOne($sql); $info = unserialize($row); if (!empty($info['max_price'])) { $rec['buy_price'] = ($rec['bid_price'] > $info['max_price']) ? $info['max_price'] : $rec['bid_price']; } else { $rec['buy_price'] = $rec['bid_price']; } /* 检查订单 */ $sql = "SELECT COUNT(*)" . " FROM " . $GLOBALS['ecs']->table('order_info') . " WHERE extension_code = 'snatch'" . " AND extension_id = '$id'" . " AND order_status " . db_create_in(array(OS_CONFIRMED, OS_UNCONFIRMED)); $rec['order_count'] = $GLOBALS['db']->getOne($sql); } return $rec; } /** * 清除指定后缀的模板缓存或编译文件 * * @access public * @param bool $is_cache 是否清除缓存还是清出编译文件 * @param string $ext 需要删除的文件名,不包含后缀 * * @return int 返回清除的文件个数 */ function clear_tpl_files($is_cache = true, $ext = '') { $dirs = array(); if (isset($GLOBALS['shop_id']) && $GLOBALS['shop_id'] > 0) { $tmp_dir = DATA_DIR ; } else { $tmp_dir = 'temp'; } if ($is_cache) { $cache_dir = ROOT_PATH . $tmp_dir . '/caches/'; $dirs[] = ROOT_PATH . $tmp_dir . '/query_caches/'; $dirs[] = ROOT_PATH . $tmp_dir . '/static_caches/'; for($i = 0; $i < 16; $i++) { $hash_dir = $cache_dir . dechex($i); $dirs[] = $hash_dir . '/'; } } else { $dirs[] = ROOT_PATH . $tmp_dir . '/compiled/'; $dirs[] = ROOT_PATH . $tmp_dir . '/compiled/admin/'; } $str_len = strlen($ext); $count = 0; foreach ($dirs AS $dir) { $folder = @opendir($dir); if ($folder === false) { continue; } while ($file = readdir($folder)) { if ($file == '.' || $file == '..' || $file == 'index.htm' || $file == 'index.html') { continue; } if (is_file($dir . $file)) { /* 如果有文件名则判断是否匹配 */ $pos = ($is_cache) ? strrpos($file, '_') : strrpos($file, '.'); if ($str_len > 0 && $pos !== false) { $ext_str = substr($file, 0, $pos); if ($ext_str == $ext) { if (@unlink($dir . $file)) { $count++; } } } else { if (@unlink($dir . $file)) { $count++; } } } } closedir($folder); } return $count; } /** * 清除模版编译文件 * * @access public * @param mix $ext 模版文件名, 不包含后缀 * @return void */ function clear_compiled_files($ext = '') { return clear_tpl_files(false, $ext); } /** * 清除缓存文件 * * @access public * @param mix $ext 模版文件名, 不包含后缀 * @return void */ function clear_cache_files($ext = '') { return clear_tpl_files(true, $ext); } /** * 清除模版编译和缓存文件 * * @access public * @param mix $ext 模版文件名后缀 * @return void */ function clear_all_files($ext = '') { return clear_tpl_files(false, $ext) + clear_tpl_files(true, $ext); } /** * 页面上调用的js文件 * * @access public * @param string $files * @return void */ function smarty_insert_scripts($args) { static $scripts = array(); $arr = explode(',', str_replace(' ','',$args['files'])); $str = ''; foreach ($arr AS $val) { if (in_array($val, $scripts) == false) { $scripts[] = $val; if ($val{0} == '.') { $str .= ''; } else { $str .= ''; } } } return $str; } /** * 创建分页的列表 * * @access public * @param integer $count * @return string */ function smarty_create_pages($params) { extract($params); $str = ''; $len = 10; if (empty($page)) { $page = 1; } if (!empty($count)) { $step = 1; $str .= ""; for ($i = 2; $i < $count; $i += $step) { $step = ($i >= $page + $len - 1 || $i <= $page - $len + 1) ? $len : 1; $str .= "'; } return $select; } else { foreach ($options AS $key => $value) { $options[$key]['url'] = build_uri('article_cat', array('acid' => $value['cat_id']), $value['cat_name']); } return $options; } } /** * 过滤和排序所有文章分类,返回一个带有缩进级别的数组 * * @access private * @param int $cat_id 上级分类ID * @param array $arr 含有所有分类的数组 * @param int $level 级别 * @return void */ function article_cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id])) { return $cat_options[$spec_cat_id]; } if (!isset($cat_options[0])) { $level = $last_cat_id = 0; $options = $cat_id_array = $level_array = array(); while (!empty($arr)) { foreach ($arr AS $key => $value) { $cat_id = $value['cat_id']; if ($level == 0 && $last_cat_id == 0) { if ($value['parent_id'] > 0) { break; } $options[$cat_id] = $value; $options[$cat_id]['level'] = $level; $options[$cat_id]['id'] = $cat_id; $options[$cat_id]['name'] = $value['cat_name']; unset($arr[$key]); if ($value['has_children'] == 0) { continue; } $last_cat_id = $cat_id; $cat_id_array = array($cat_id); $level_array[$last_cat_id] = ++$level; continue; } if ($value['parent_id'] == $last_cat_id) { $options[$cat_id] = $value; $options[$cat_id]['level'] = $level; $options[$cat_id]['id'] = $cat_id; $options[$cat_id]['name'] = $value['cat_name']; unset($arr[$key]); if ($value['has_children'] > 0) { if (end($cat_id_array) != $last_cat_id) { $cat_id_array[] = $last_cat_id; } $last_cat_id = $cat_id; $cat_id_array[] = $cat_id; $level_array[$last_cat_id] = ++$level; } } elseif ($value['parent_id'] > $last_cat_id) { break; } } $count = count($cat_id_array); if ($count > 1) { $last_cat_id = array_pop($cat_id_array); } elseif ($count == 1) { if ($last_cat_id != end($cat_id_array)) { $last_cat_id = end($cat_id_array); } else { $level = 0; $last_cat_id = 0; $cat_id_array = array(); continue; } } if ($last_cat_id && isset($level_array[$last_cat_id])) { $level = $level_array[$last_cat_id]; } else { $level = 0; } } $cat_options[0] = $options; } else { $options = $cat_options[0]; } if (!$spec_cat_id) { return $options; } else { if (empty($options[$spec_cat_id])) { return array(); } $spec_cat_id_level = $options[$spec_cat_id]['level']; foreach ($options AS $key => $value) { if ($key != $spec_cat_id) { unset($options[$key]); } else { break; } } $spec_cat_id_array = array(); foreach ($options AS $key => $value) { if (($spec_cat_id_level == $value['level'] && $value['cat_id'] != $spec_cat_id) || ($spec_cat_id_level > $value['level'])) { break; } else { $spec_cat_id_array[$key] = $value; } } $cat_options[$spec_cat_id] = $spec_cat_id_array; return $spec_cat_id_array; } } /** * 调用UCenter的函数 * * @param string $func * @param array $params * * @return mixed */ function uc_call($func, $params=null) { restore_error_handler(); if (!function_exists($func)) { include_once(ROOT_PATH . 'uc_client/client.php'); } $res = call_user_func_array($func, $params); set_error_handler('exception_handler'); return $res; } /** * error_handle回调函数 * * @return */ function exception_handler($errno, $errstr, $errfile, $errline) { return; } /** * 重新获得商品图片与商品相册的地址 * * @param int $goods_id 商品ID * @param string $image 原商品相册图片地址 * @param boolean $thumb 是否为缩略图 * @param string $call 调用方法(商品图片还是商品相册) * @param boolean $del 是否删除图片 * * @return string $url */ function get_image_path($goods_id, $image='', $thumb=false, $call='goods', $del=false) { $url = empty($image) ? $GLOBALS['_CFG']['no_picture'] : $image; return $url; } /** * 调用使用UCenter插件时的函数 * * @param string $func * @param array $params * * @return mixed */ function user_uc_call($func, $params = null) { if (isset($GLOBALS['_CFG']['integrate_code']) && $GLOBALS['_CFG']['integrate_code'] == 'ucenter') { restore_error_handler(); if (!function_exists($func)) { include_once(ROOT_PATH . 'includes/lib_uc.php'); } $res = call_user_func_array($func, $params); set_error_handler('exception_handler'); return $res; } else { return; } } /** * 调用array_combine函数 * * @param array $keys * @param array $values * * @return $combined */ if (!function_exists('array_combine')) { function array_combine($keys, $values) { if (!is_array($keys)) { user_error('array_combine() expects parameter 1 to be array, ' . gettype($keys) . ' given', E_USER_WARNING); return; } if (!is_array($values)) { user_error('array_combine() expects parameter 2 to be array, ' . gettype($values) . ' given', E_USER_WARNING); return; } $key_count = count($keys); $value_count = count($values); if ($key_count !== $value_count) { user_error('array_combine() Both parameters should have equal number of elements', E_USER_WARNING); return false; } if ($key_count === 0 || $value_count === 0) { user_error('array_combine() Both parameters should have number of elements at least 0', E_USER_WARNING); return false; } $keys = array_values($keys); $values = array_values($values); $combined = array(); for ($i = 0; $i < $key_count; $i++) { $combined[$keys[$i]] = $values[$i]; } return $combined; } } function check_mobile(){ $useragent=$_SERVER['HTTP_USER_AGENT']; if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4))){ return true; } return false; } ?>