正式商业旗舰版Modoer点评系统3.5(Modoer 3.5)手机WEB端加微信公
点评系统一如既往的好用,功能细化到令人发指的地步,值得推荐,本资源不像论坛那样购买会员然后要回复或者积分等级才能下载,下载了未必能用,本资源立即下载即用,减少了论坛的繁琐流程,没有任何限制,不限制任何域名。 正式版更新内容: 手机版变化如下:
点评系统一如既往的好用,功能细化到令人发指的地步,值得推荐,本资源不像论坛那样购买会员然后要回复或者积分等级才能下载,下载了未必能用,本资源立即下载即用,减少了论坛的繁琐流程,没有任何限制,不限制任何域名。
正式版更新内容:
手机版变化如下:
1.在测试版中增加的手机版评论模块推翻进行了全部的重写,重写后的效果参考了一些流行的手机app的ui和流程,使用起来用户体验更好
2.对手机版本的全部css和大多数的javascript代码进行了重构,css代码参考了Bootstrap的部分代码
3.针对小组的回帖功能,增加了图片上传功能
4.比较重要的功能,Modoer的在线充值支付模块在手机web版中增加了支付宝的手机网站支付功能,这样,我们下面就可以开发商城,团购等需要在线支付的功能。
5.对于支付宝手机网站支付功能,我们先坐上了手机在线充值现金的功能
6.主题的相册浏览部分改进为划屏浏览,并增加了评论功能
7.新增加了ajax分页加载插件,很多之前需要进行翻页的列表页面都进行了改进,都实现了ajax无刷新加载下一页内容的效果,也符合手机里查看数据的习惯
8.主题筛选进行了改进,这次终于可以进行三级分类和地区的筛选了。
9.其他一些修改多半都是改进页面的UI效果和使用新开发的js插件,这里就不一一细说了
正式版(20150205):
增加 微信模块商户主题绑定微信公众平台(可设置绑定权限,可单独开关)
增加 微信模块商家自定义指令添加(支持文字和图文类型)
增加 微信模块商家微站引导页(管理导航,轮换图片)
增加 微信模块商家微站引导页模板系统
增加 微信模块微信自定义菜单新类型(扫描,上传图片等新类型)
增加 榜单模块会员组添加榜单权限
增加 榜单模块会员组添加榜单数量限制的权限
增加 主题模块内容页添加到榜单的功能
增加 主题模块自定义字段里单行文本图形化来防采集(显示模版内些{display:modoer:createimg})
增加 会员模块手机web里允许添加支付密码的功能
增加 会员模块Facebook帐号登录绑定功能
增加 点评模块点评内容同步Facebook功能
增加 在线充值模块Paypal提现功能(可自由选择,个人设置里需填写PayPal帐号)
增加 手机Web模块首页菜单管理集成到后台
增加 个人空间模块空间可上传背景图片
重构 微信模块所有代码以支持多用户绑定
改进 Modoer框架代码使用PHP5.3新特性
改进 微信模块内置指令管理
改进 文件(图片)上传功能
改进 后台模板添加模式
增加 后台内容管理加入内联管理功能
增加 新闻模块增加内联功能
增加 个人空间我的文章列表
增加 会员每日登录积分策略
增加 主题模块浏览地图增加搜索功能
增加 系统工具箱增加系统文件夹权限检测
增加 框架内分站类接管当前城市信息读取
改进 分站以及URL解析代码
改进 所有现金支取必须进行双表验证
改进 后台广告列表改进



<?php /** * 通用函数库 * @author moufer<moufer@163.com> * @copyright (C)2001-2007 Moufersoft */ !defined('IN_MUDDER') && exit('Access Denied'); define('MF_INT_KEY', '_int_keyid'); define('MF_INT', 'intval'); define('MF_FLOAT', 'floatval'); define('MF_HTML', '_HTML'); define('MF_TEXT', '_T'); //取得$_GET里的变量 function _get($var, $default = null, $convert_fun='') { if(isset($_GET[$var])) { if($convert_fun) return $convert_fun($_GET[$var]); return $_GET[$var]; } return $default; } //取得$_GET里的变量 function _post($var, $default = null, $convert_fun='') { if(isset($_POST[$var])) { if($convert_fun) return $convert_fun($_POST[$var]); return $_POST[$var]; } return $default; } //取得$_COOKIE里的变量 function _cookie($var, $default = null, $prefix = 1) { global $_G; if($prefix) { return isset($_G['cookie'][$var]) ? $_G['cookie'][$var] : $default; } else { return isset($_COOKIE[$var]) ? $_COOKIE[$var] : $default; } } //取得一个输入变量 function _input($var, $default = null, $convert_fun='', $sx='pg') { $r = $default; $c = strlen($sx); $funs = array('p'=>'_post','g'=>'_get'); for($i=0;$i<$c;$i++) { $x = $sx{$i}; $f = isset($funs[$x]) ? $funs[$x] : ''; if(!$f) continue; $r = $f($var, $default, $convert_fun); if(!empty($r) && $r != $default) return $r; } if(!$r) $r = $default; return $r; } //设置$_POST里的变量 function set_post($var, $value = '') { $_POST[$var] = $value; } //设置$_POST里的变量 function set_get($var, $value = '') { $_GET[$var] = $value; } //设置cookie function set_cookie($var, $value, $life = 0, $prefix = 1) { $life = $life ? _G('timestamp') + $life : 0; $secure = $_SERVER['SERVER_PORT'] == '443' ? 1 : 0; $var = ($prefix ? _G('cookiepre') : '') . $var; return setcookie($var, $value, $life, _G('cookiepath'), _G('cookiedomain'), $secure); } //删除cookie function del_cookie($var, $prefix = 1) { if(is_array($var)) { foreach($var as $val) set_cookie($val, '', -360000, $prefix); } else { set_cookie($var, '', -360000, $prefix); } } // Get Global value function &_G() { global $_G; $max_level = 5; $result = ''; $args_num = func_num_args(); if($args_num > $max_level) return $result; $args = func_get_args(); $val =& $_G; foreach ($args as $v) { if(!isset($val[$v])) return $result; $val =& $val[$v]; } return $val; } /** * 获取公共配置文件夹(APP_ROOT/config/)文件数据 * @static var array $config * @param string $key 支持二维,三维数组查询,如:aa.bbb,表示: 二维数组['aaa']['bbb'];参数为"@all":表示获取指定文件的全部数据; * @param string $config_file_name 需要获取数据的文件(不写.php),默认获取global.php里的 * @return array|null */ function config($key, $module = 'modoer') { static $config = array(); if(!$module) $module = 'modoer'; if(!isset($config[$module])) { $config[$module] = _G('loader')->variable('config', $module); } if($key == '@all') return $config[$module]; if(strpos($key, '.')) { $keys = explode('.', $key); $tmp =& $config[$module]; foreach ($keys as $k) { if(!is_array($tmp) || !isset($tmp[$k])) return null; $tmp =& $tmp[$k]; } return $tmp; } else { if(isset($config[$module][$key])) return $config[$module][$key]; } return null; } //获取一个数字型的数据库主键id值 function _int_keyid($string) { if(is_array($string)) { foreach($string as $key => $val) $string[$key] = _int_keyid($val); return $string; } else { return abs((int)$string); } } //过滤HTML,用于Text function _T($string) { if(is_array($string)) { foreach($string as $key => $val) $string[$key] = _T($val); return $string; } else { $string = is_string($string) ? preg_replace("/&(#[0-9]+|[a-z]+);/i", "&$1;", htmlspecialchars($string, ENT_QUOTES)) : $string; return str_replace($wu, $rp, trim($string)); } } //过滤HTML,用于TextArea function _TA($string) { return preg_replace("/(\r\n|\n\r|\n|\r)/", "\r\n", _T($string)); } //支持HTML格式,过滤可能引起安全问题的HTML标记 function _HTML($string) { $search_arr = array("/(javascript|jscript|js|vbscript|vbs|about):/i","/on(mouse|exit|error|click|dblclick|key|load|unload|change|move|submit|reset|cut|copy|select|start|stop)/i","/<script([^>]*)>/i","/<iframe([^>]*)>/i","/<frame([^>]*)>/i","/<link([^>]*)>/i","/@import/i"); $replace_arr = array("\\1\n:","on\n\\1","<script\\1>","<iframe\\1>","<frame\\1>","<link\\1>","@\nimport"); $string = preg_replace($search_arr, $replace_arr, $string); //$string = str_replace("&#", "&\n#", $string); return $string; } //格式化换行符号 function _NL($string) { return trim(preg_replace("/\s*(\r\n|\n\r|\n|\r)\s*/", "\r\n", $string)); } //把字符串转化为JS的字符变量 function _JStr($string) { return str_replace(array('"', "\r\n", "\n"), array('\"', '', ''), $string); } //把一维数组转换为字符串 function _ArrayToStr($array, $split=',') { if(empty($array)) return ''; if(!is_array($array)) return $array; return implode($split, $array); } //简单加密 function authcode($string, $operation = 'DECODE') { $string = $operation == 'DECODE' ? base64_decode($string) : base64_encode($string); return $string; } //数组格式化 function arrayeval($array, $level = 0) { if(!is_array($array)) { return "'".$array."'"; } if(is_array($array) && function_exists('var_export')) { return var_export($array, true); } $space = ''; for($i = 0; $i <= $level; $i++) { $space .= "\t"; } $evaluate = "array (\n\r"; $comma = $space; if(is_array($array)) { foreach($array as $key => $val) { $key = is_string($key) ? '\''.add_cs_lashes($key).'\'' : $key; $val = !is_array($val) && (!preg_match("/^\-?[0-9]\d*$/", $val) || strlen($val) > 12) ? '\''.add_cs_lashes($val, '\'\\').'\'' : $val; if(is_array($val)) { $evaluate .= "$comma$key => ".arrayeval($val, $level + 1); } else { $evaluate .= "$comma$key => $val"; } $comma = ",\n\r$space"; } } $evaluate .= "\n\r$space)"; return $evaluate; } //以 C 语言风格使用反斜线转义字符串中的字符 function add_cs_lashes($string) { return $string ? addcslashes($string, '\'\\') : ''; } //转换数组里的全部数值 function new_intval($number) { if(is_array($number)) foreach($number as $key => $val) $number[$key] = new_intval($val); else return intval($number); return $number; } //Un-quotes a quoted string function strip_slashes($string, $filter_line=false) { if(is_array($string)) foreach($string as $key => $val) $string[$key] = strip_slashes($val); else $string = is_string($string) ? stripslashes($string) : $string; if($filter_line) $string = str_replace(array("\r\n","\n"),'', $string); return $string; } //过滤SQL function strip_sql($string) { $pattern_arr = array("/ union /i", "/ select /i", "/ update /i", "/ outfile /i", "/ or /i"); $replace_arr = array(' union ', ' select ', ' update ',' outfile ', ' or '); return is_array($string) ? array_map('strip_sql', $string) : preg_replace($pattern_arr, $replace_arr, $string); } //过滤orderby function strip_order($string) { $string = preg_replace('/.?select.+from.+/i', '', $string); $string = preg_replace("/.?delete.+from.+/i", '', $string); $string = preg_replace("/.?update.+set.+/i", '', $string); $string = preg_replace("/.?select.+union.+/i", '', $string); return $string; } //转换浮点数 function cfloat($float) { $num = (float)$float; return $num; } //从开端截取 function trimmed_title($text, $limit=12, $ext='') { if ($limit) { $val = csubstr($text, 0, $limit); return $val[1] ? $val[0].$ext : $val[0]; } else { return $text; } } //截取 function csubstr($text, $start=0, $limit=12) { $charset = _G('charset'); if (function_exists('mb_substr')) { $more = (mb_strlen($text, $charset) > $limit) ? true : false; $text = mb_substr($text, $start, $limit, $charset); return array($text, $more); } elseif (function_exists('iconv_substr')) { $more = (iconv_strlen($text) > $limit) ? true : false; $text = iconv_substr($text, $start, $limit, $charset); return array($text, $more); } elseif (strtolower($charset) == "utf-8") { preg_match_all("/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/", $text, $ar); if(func_num_args() >= 3) { if (count($ar[0])>$limit) { $more = true; $text = join("",array_slice($ar[0],$start,$limit))."..."; } else { $more = false; $text = join("",array_slice($ar[0],$start,$limit)); } } else { $more = false; $text = join("",array_slice($ar[0],$start)); } return array($text, $more); } else { $fStart = 0; $fStart = $fStart * 2; $limit = $limit * 2; $strlen = strlen($text); for ( $i = 0; $i < $strlen; $i++ ) { if ($i >= $fStart && $i < ($fStart + $limit ) ) { if (ord(substr($text, $i, 1)) > 129) $tmpstr .= substr($text, $i, 2); else $tmpstr .= substr($text, $i, 1); } if (ord(substr($text, $i, 1)) > 129 ) $i++; } $more = strlen($tmpstr) < $strlen; return array($tmpstr, $more); } } //计算字符数量,非占用字节 function strlen_ex($str) { $charset = _G('charset'); if(function_exists('mb_strlen')) { return mb_strlen($str, $charset); } elseif(function_exists('iconv_strlen')) { return iconv_strlen($str, $charset); } elseif($charset == 'utf-8') { preg_match_all("/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/", $str, $ar); return count($ar[0]); } else { $len = 0; $strlen = strlen($str); for( $i = 0; $i < $strlen; $i++ ) { $len++; if (ord(substr($str, $i, 1)) > 129 ) $i++; } return $len; } } //截取,按字节数量截取 function substr_ex($text, $start=0, $limit=255) { $charset = _G('charset'); list($s,) = csubstr($text, $start, $limit); $len = strlen($s); if($len <= $limit) return $s; $i = $l =0; $mo = $charset == 'utf-8' ? 3 : 2; $str = ''; while($l < $limit) { $z = floor(($limit - $l) / $mo); !$z && $z = 1; $y = csubstr($s, $i, $z); $i += $z; $l = strlen($str) + strlen($y[0]); if($l <= $limit) { $str .= $y[0]; } else { break; } } return $str; } //转换unix时间戳 function newdate($date, $format='Y-m-d H:i', $dnum=2, $dunit='月') { $timestamp = _G('timestamp'); $date == 'NOW' ? $timestamp : $date; if(!$date) return ''; $date = is_numeric($date) ? $date : (!$date ? $timestamp : strtotime($date)); $date = ($date == -1 || !$date) ? $timestamp : $date; if($format != 'w2style') { return date($format, $date); } else { $tm = $timestamp - $date; $num = 0; if($tm < 60) { $num = $tm; $unit = 'second'; } elseif($tm < 3600) { $num = floor($tm / 60); $unit = 'minute'; } elseif($tm < 3600 * 24) { $num = floor($tm / 3600); $unit = 'hour'; } elseif($tm < 3600 * 24 * 30) { $num = floor($tm / (3600 * 24)); $unit = 'day'; } elseif($tm < 3600 * 24 * 30 * 365) { $num = floor($tm / (3600 * 24 * 30)); $unit = 'month'; } if($dnum <= $num && $dunit == $unit) { return date('Y-m-d H:i', $date); } return $num > 0 ? (lang('global_time_format', array($num, lang('global_time_'.$unit)))) : date('Y-m-d', $date); } } //判断电子邮件 function isemail($email) { return strlen($email) > 6 && preg_match("/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/", $email); } //判断是不是图片 function is_image($imgfile) { if(!$imgfile) return; $ext = strtolower(pathinfo($imgfile, PATHINFO_EXTENSION)); $exts = array('png','jpeg','jpg','gif'); if(!in_array($ext, $exts)) return false; if(!function_exists('getimagesize')) return false; if(!is_file($imgfile)) return false; return @getimagesize($imgfile); } //判断字符串是否被序列化 function is_serialized( $data ) { // if it isn't a string, it isn't serialized if ( !is_string( $data ) ) return false; $data = trim( $data ); if ( 'N;' == $data ) return true; if ( !preg_match( '/^([adObis]):/', $data, $badions ) ) return false; switch ( $badions[1] ) { case 'a' : case 'O' : case 's' : if ( preg_match( "/^{$badions[1]}:[0-9]+:.*[;}]\$/s", $data ) ) return true; break; case 'b' : case 'i' : case 'd' : if ( preg_match( "/^{$badions[1]}:[0-9.E-]+;\$/", $data ) ) return true; break; } return false; } //判断文件是否可写 function is__writable($path) { if ($path{strlen($path)-1}=='/') return is__writable($path.uniqid(mt_rand()).'.tmp'); else if (is_dir($path)) return is__writable($path.'/'.uniqid(mt_rand()).'.tmp'); $rm = file_exists($path); $f = @fopen($path, 'a'); if ($f===false) return false; fclose($f); if (!$rm) unlink($path); return true; } //获取随机数 ALL(数字或字母),NUM(数字),WORD(字母) function random($length=8, $idtype='ALL') { PHP_VERSION < '4.2.0' && mt_srand((double)microtime() * 1000000); $hash = ''; for ($i = 0; $i < $length; $i++) { if ( 'NUM' == $idtype ) { if (0==$i) { $hash .= chr(rand(49, 57)); } else { $hash .= chr(rand(48, 57)); } } else if ( 'WORD' == $idtype ){ $hash .= chr(rand(65, 90)); } else { if ( 0==$i ) { $hash .= chr(rand(65, 90)); } else { $hash .= (0==rand(0,1))?chr(rand(65, 90)):chr(rand(48,57)); } } } return $hash; } //生成参数序列 function create_identifier($params) { return substr(md5(serialize($params)),0,8); } //生成表单序列 function create_formhash($p1, $p2, $p3) { $authkey = _G('cfg','authkey'); return substr(md5($authkey . $p1 . $p2 . $p3), 8, 8); } //替换全角数字 function cdc2dbc($number) { $search_arr = array('0','1','2','3','4','5','6','7','8','9'); $replace_arr = array('0','1','2','3','4','5','6','7','8','9'); return str_replace($search_arr, $replace_arr, $number); } //判断字串长度范围 function string_length($string, $min, $max) { return strlen($string) >= $min && strlen($string) <= $max;

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

8月17日消息,消息源@i冰宇宙今天發布微博,表示蘋果iPhone16ProMax精確尺寸6.88英寸,GalaxyS25Ultra精確尺寸6.86英寸,兩者都可視為6.9英寸。訊息源表示三星GalaxyS25Ultra比S24Ultra更窄的機身,還有更寬的螢幕,橫向螢幕佔94.1%,而S24Ultra橫向螢幕佔比是91.5%。 fenye查詢該訊息來源相關微博,他也評論了最新曝光的iPhone16ProMax照片,認為接近微曲是錯誤的,該機然是直屏+2.5D玻璃。

雖然最近幾年的蘋果一直被詬病創新不足,但是蘋果也並不總是止步不前。至少在硬體設計上,在蘋果產品的高單價支援下,它的工程師可以輕鬆嘗試一些全新的技術,而不需要過多的考慮成本問題。例如iPadPro,身為蘋果最愛的「顯示技術」試驗田,iPadPro從2021年的miniLED到2024年的串聯OLED,一直走在便攜智慧型裝置的顯示技術前端。雖然iPadPro並非首款搭載miniLED螢幕的便攜式智慧型裝置(微星較蘋果早一年發布miniLED筆記型電腦),但是當你比較兩者的參數,你會很快意識到他們不是一個

8月9日消息,在FMS2024峰會上,SK海力士展示了其最新的儲存產品,包括尚未正式發布規範的UFS4.1通用快閃記憶體。根據JEDEC固態技術協會官網訊息,目前公佈的最新UFS規範是2022年8月的UFS4.0,其理論介面速度高達46.4Gbps,預計UFS4.1將在傳輸速率上實現進一步的提升。 1.海力士展示了512GB和1TBUFS4.1通用快閃記憶體產品,基於321層V91TbTLCNAND快閃記憶體。 SK海力士也展出了3.2GbpsV92TbQLC和3.6GbpsV9H1TbTLC顆粒。海力士展示了基於V7

8月19日消息,努比亞自Z50Ultra發布以來,一直秉承著真全面屏的設計,並且一直在高像素屏下前攝領域不斷探索。今日,據數位部落客智慧皮卡丘爆料稱,今年下半年即將發布的努比亞Z70Ultra將首發1.5K螢幕下攝影技術,是迄今為止業界分辨率最高的UDC方案。據悉,目前中興旗下的屏下前攝方案已推進到第六代。最新的屏下前攝方案在努比亞Z60Ultra、紅魔鬼9SPro系列中皆有所應有。螢幕解析度為2480x1116,介於1080P和1.5K解析度之間。這次努比亞將透過突破現有解析度的限制,將在業界

近日,華為宣布將於9月推出搭載玄璣感知系統的全新智慧穿戴新品,預計為華為的最新智慧手錶。該新品將整合先進的情緒健康監測功能,玄璣感知系統以其六大特性——準確性、全面性、快速性、靈活性、開放性和延展性——為用戶提供全方位的健康評估。系統採用超感知模組,優化了多通道光路架構技術,大幅提升了心率、血氧和呼吸速率等基礎指標的監測精度。此外,玄璣感知系統也拓展了以心率資料為基礎的情緒狀態研究,不僅限於生理指標,還能評估使用者的情緒狀態和壓力水平,並支持超過60項運動健康指標監測,涵蓋心血管、呼吸、神經、內分泌、

根據Smartprix的爆料稱,小米正在研發一台代號為「朱雀」的無按鍵手機。這份爆料稱,這台代號朱雀的手機將秉承一體化的理念設計,使用屏下攝像頭,並搭載高通驍龍8gen4處理器,如果計劃沒有變動,我們很可能在2025年看到它的到來。看到這個消息,我恍惚間以為自己回到了2019年——那時小米發布了小米MIXAlpha概念機,環繞屏無按鍵設計相當驚艷。這是我第一次見識到無按鍵手機的魅力。想要一塊「魔力玻璃」,就要先把按鍵幹掉在《賈伯斯傳》中,賈伯斯曾經表達過:希望手機能夠像一塊「充滿魔力的玻璃」,

8月8日消息,華為Mate70系列手機的詳細配置資訊近日被曝光,該系列手機預計將在2024年第四季發布。 1.據爆料,Mate70系列將全係採用客製化的頂級1.5K解析度螢幕,滿足使用者對螢幕清晰度的要求。預計華為Mate70Pro以及超大杯版本將配備四等深螢幕,而標準款的Mate70則可能採用略小的類直螢幕設計。除了螢幕升級,華為Mate70系列也將全係配備新基材的超大容量電池,預告華為Mate系列手機續航力的突破。儘管華為正在研發超音波指紋解鎖技術,但今年的Mate70系列將不會搭載此功能。此

根據海外媒體通報,全球手機銷量排名前五的中國手機廠商傳音發布了一款與寶馬公司(BMW)合作開發的智慧型手機-InfinixNote40系列賽車版。目前,InfinixNote40系列賽車版提供兩款機型,分別為InfinixNote40Pro5G和InfinixNote40Pro+5G。可惜的是,這些機型登陸中國市場的可能性幾乎沒有。據了解,InfinixNote40系列賽車版的外觀靈感來自於寶馬,背板採用了寶馬MPower的三色徽標,手機內部也有自訂的壁紙和圖標,整機擁有大量的寶馬元素。配置處理
