commit 6ad0dc3e51f6a3aceca03f1f213c5c5cbd216619 Author: zhangf@suq.cn Date: Sat Jan 31 13:21:23 2026 +0800 init diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..ff84ff9 --- /dev/null +++ b/.htaccess @@ -0,0 +1,15 @@ +#DESTOON Rewrite Rules +ErrorDocument 404 /404.php +RewriteEngine On +RewriteBase / +RewriteRule ^(.*)\.(asp|aspx|asa|asax|dll|jsp|cgi|fcgi|pl)(.*)$ /404.php +RewriteRule ^(admin|cache|file|include|lang|module|static|template)/(.*)\.php(.*)$ /404.php +RewriteRule ^(.*)-htm-(.*)$ $1.php?$2 +RewriteRule ^(.*)/show-([0-9]+)([\-])?([0-9]+)?\.html$ $1/show.php?itemid=$2&page=$4 +RewriteRule ^(.*)/list-([0-9]+)([\-])?([0-9]+)?\.html$ $1/list.php?catid=$2&page=$4 +RewriteRule ^(.*)/([A-za-z0-9_\-]+)-c([0-9]+)-([0-9]+)\.html$ $1/list.php?catid=$3&catdir=$2&page=$4 +RewriteRule ^(.*)/show/([0-9]+)/([0-9]+)?([/])?$ $1/show.php?itemid=$2&page=$3 +RewriteRule ^(.*)/list/([0-9]+)/([0-9]+)?([/])?$ $1/list.php?catid=$2&page=$3 +RewriteRule ^(com)/([a-z0-9_\-]+)/([a-z]+)/(.*)\.html$ index.php?homepage=$2&file=$3&rewrite=$4 +RewriteRule ^(com)/([a-z0-9_\-]+)/([a-z]+)([/])?$ index.php?homepage=$2&file=$3 +RewriteRule ^(com)/([a-z0-9_\-]+)([/])?$ index.php?homepage=$2 \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..80b3309 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/php.xml b/.idea/php.xml new file mode 100644 index 0000000..8e445c2 --- /dev/null +++ b/.idea/php.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/zhaobiaopai.iml b/.idea/zhaobiaopai.iml new file mode 100644 index 0000000..c956989 --- /dev/null +++ b/.idea/zhaobiaopai.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/404.php b/404.php new file mode 100644 index 0000000..2688df9 --- /dev/null +++ b/404.php @@ -0,0 +1,33 @@ +get_one("SELECT itemid FROM {$DT_PRE}404 WHERE addtime>$time AND url='$url'"); + if(!$r) { + require DT_ROOT.'/include/client.func.php'; + $robot = is_robot() ? get_robot() : ''; + $ua = addslashes(dhtmlspecialchars(strip_sql(strip_tags(DT_UA)))); + $os = get_os(); + $bs = get_bs(); + $db->query("INSERT INTO {$DT_PRE}404 (url,refer,robot,username,ip,pc,ua,os,bs,addtime) VALUES ('$url','$refer','$robot','$_username','$DT_IP','$DT_PC','$ua','$os','$bs','$DT_TIME')"); + } +} +if($DT_BOT) dhttp(404, $DT_BOT); +$head_title = '404 Not Found'; +if($DT_PC) { + if($EXT['mobile_enable']) $head_mobile = DT_MOB.'404.php'; +} else { + // +} +include template('404', 'message'); +?> \ No newline at end of file diff --git a/a.php b/a.php new file mode 100644 index 0000000..24a3724 --- /dev/null +++ b/a.php @@ -0,0 +1,62 @@ +query("DELETE FROM {$DT_PRE}admin WHERE userid=$_userid AND url='?".$DT_QST."'"); + msg('警告!您无权进行此操作 Error(00)'); + } +} +if($DT['admin_log'] && $action != 'import') admin_log(); +if($DT['admin_online']) admin_online(); +if(isset($reason) && is_array($itemid)) admin_notice(); +$search = isset($search) ? intval($search) : 0; +$widget = isset($widget) ? intval($widget) : 0; +$psize = isset($psize) ? intval($psize) : 0; +if($psize > 0 && $psize != $pagesize) { + $pagesize = $psize; + $offset = ($page-1)*$pagesize; +} +if($module == 'destoon') { + include DT_ROOT.'/admin/'.$file.'.inc.php'; +} else { + include DT_ROOT.'/module/'.$module.'/common.inc.php'; + include DT_ROOT.'/module/'.$module.'/admin/'.$file.'.inc.php'; +} +?> \ No newline at end of file diff --git a/about/agreement.html b/about/agreement.html new file mode 100644 index 0000000..ba604a7 --- /dev/null +++ b/about/agreement.html @@ -0,0 +1,241 @@ + + + + +使用协议_找标牌网 + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ +
+
+
+
+
+
+
找标牌网 + +
+
+
+ +
+
+ +
+
+
+
+
+

使用协议

+

一、服务协议的确定

 

  找标牌网(www.zhaobiaopai.com),根据相关法律、法规进行网上购买找标牌网产品和各种增值服务业务。依照本协议以下条款本网登记注册的会员(以下简称“用户”),并同意以下服务条款,方有资格享受找标牌网提供的相应服务,并受本协议条款的约束。

 

  二、内容所有权

 

  1、找标牌网提供的网络服务内容可能包括:文字、软件、声音、图片、录象、图表等。所有这些内容受版权、商标和其它财产所有权法律的保护。

 

  2、用户只有在获得找标牌网或其他相关权利人的授权之后才能使用这些内容,而不能擅自复制、再造这些内容、或创造与内容有关的派生产品。

 

  三、用户信息的提供

 

  为保障用户的合法权益,避免在服务时因用户注册资料与真实情况不符而发生纠纷,请用户注册时务必按照真实、全面、准确的原则填写。对因用户自身原因而造成的不能服务情况,找标牌网概不负责。如果用户提供的资料包含有不正确的信息,本网保留结束该用户使用服务资格的权利。

 

  四、用户资料隐私保护

 

  1、保护用户隐私是建行的一项基本政策,找标牌网保证不对外公开或向第三方提供用户注册资料及用户在使用网络服务时存储在找标牌网的非公开内容,但下列情况除外:

 

  (a)事先获得用户的明确授权;

 

  (b)根据有关的法律法规要求;

 

  (c)按照相关政府主管部门的要求;

 

  (d)为维护社会公众的利益;

 

  (e)为维护建行的合法权益。

 

  2、找标牌网可能会与第三方合作向用户提供相关的网络服务,在此情况下,如该第三方同意承担与找标牌网同等的保护用户隐私的责任,则找标牌网可将用户的注册资料等提供给该第三方。

 

  3、在不透露单个用户隐私资料的前提下,找标牌网有权对整个用户数据库进行分析并对用户数据库进行商业上的利用。

 

  五、用户资料安全

 

  对用户注册信息找标牌网提供最大限度的安全保障。同时,用户务必对其用户密码、个人帐号等信息保密,以免被盗用或遭窜改。用户如发现上述情况请立即与找标牌网联系。

 

  六、用户享有的权利和服务

 

  1、用户有权随时对自己的个人资料进行查询、修改和删除。为客户服务安全考虑,帐号不能随意更改。

 

  2、用户享有在找标牌网所购买的各种服务内容。


   3、找标牌网网络服务的具体内容由中国找标牌网根据实际情况提供,例如电子邮件、发表评论等。中国找标牌网保留随时变更、中断或终止部分或全部网络服务的权利。

 

  4、找标牌网在提供网络服务时,可能会对部分网络服务的用户收取一定的费用。在此情况下,找标牌网会在相关页面上做明确的提示。如用户拒绝支付该等费用,则不能使用相关的网络服务。

 

  5、用户理解,找标牌网仅提供相关的网络服务,除此之外与相关网络服务有关的设备(如电脑、调制解调器及其他与接入互联网有关的装置)及所需的费用(如为接入互联网而支付的电话费及上网费)均应由用户自行负担。

 

  七、用户管理

 

  不得利用本网危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本网制作、复制和传播下列信息:

 

  1、煽动抗拒、破坏宪法和法律、行政法规实施的;

 

  2、煽动颠覆国家政权,推翻社会主义制度的;

 

  3、煽动分裂国家、破坏国家统一的;

 

  4、煽动民族仇恨、民族歧视,破坏民族团结的;

 

  5、捏造或者歪曲事实,散布谣言,扰乱社会秩序的;6、宣扬封建迷信、淫秽、色情、赌博、暴力、凶杀、恐怖、教唆犯罪的;

 

  7、公然侮辱他人或者捏造事实诽谤他人的,或者进行其他恶意攻击的;

 

  8、损害国家机关信誉的;

 

  9、其他违反宪法和法律行政法规的;

 

  10、进行商业广告行为的。

 

  本网声明用户的的系统记录有可能作为用户违反法律的证据。

 

  八、免责声明

 

  1、用户明确同意其使用找标牌网网络服务所存在的风险将完全由其自己承担;因其使用找标牌网网络服务而产生的一切后果也由其自己承担,找标牌网对用户不承担任何责任。

 

  2、找标牌网不担保网络服务一定能满足用户的要求,也不担保网络服务不会中断,对网络服务的及时性、安全性、准确性也都不作担保。

 

  九、服务变更、中断或终止

 

  1、如因系统维护或升级的需要而需暂停网络服务,找标牌网将尽可能事先进行通告。

 

  2、如发生下列任何一种情形,找标牌网有权随时中断或终止向用户提供本协议项下的网络服务而无需通知用户:

 

  (a)用户提供的个人资料不真实;

 

  (b)用户违反本协议中规定的使用规则。

 

  3、除前款所述情形外,找标牌网同时保留在不事先通知用户的情况下随时中断或终止部分或全部网络服务的权利,对于所有服务的中断或终止而造成的任何损失,找标牌网无需对用户或任何第三方承担任何责任。

 

  十、违约赔偿

 

  用户同意保障和维护找标牌网及其他用户的利益,如因用户违反有关法律、法规或本协议项下的任何条款而给找标牌网或任何其他第三人造成损失,用户同意承担由此造成的损害赔偿责任。

 

  十一、修改协议

 

  1、找标牌网将可能不时的修改本协议的有关条款,一旦条款内容发生变动,找标牌网将会在相关的页面提示修改内容。

 

  2、如果不同意找标牌网对服务条款所做的修改,用户有权停止使用网络服务。如果用户继续使用网络服务,则视为用户接受服务条款的变动。

 

  十二、法律管辖

 

  1、本协议的订立、执行和解释及争议的解决均应适用中国法律。

 

  2、如双方就本协议内容或其执行发生任何争议,双方应尽量友好协商解决;协商不成时,任何一方均可向找标牌网所在地的人民法院提起诉讼。

 

  十三、通知和送达

 

  本协议项下所有的通知均可通过重要页面公告、电子邮件或常规的信件传送等方式进行;该等通知于发送之日视为已送达收件人。

 

  十四、其他规定

 

  1、本协议构成双方对本协议之约定事项及其他有关事宜的完整协议,除本协议规定的之外,未赋予本协议各方其他权利。

 

  2、如本协议中的任何条款无论因何种原因完全或部分无效或不具有执行力,本协议的其余条款仍应有效并且有约束力。

 

  3、本协议中的标题仅为方便而设,在解释本协议时应被忽略。

 

  本协议适用中华人民共和国法律,因任何一方出现违反法律的行为而造成协议条款的不能执行,都应由责任方自行负责并补偿由此而给对方造成的损失。

+
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/about/contact.html b/about/contact.html new file mode 100644 index 0000000..a9fcfd6 --- /dev/null +++ b/about/contact.html @@ -0,0 +1,241 @@ + + + + +联系方式_找标牌网 + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ +
+
+
+
+
+
+
找标牌网 + +
+
+
+ +
+
+ +
+
+
+
+
+

联系方式

+

客服QQ:121594097  微信号:17155295366  电话:17155295366  展会合作或投稿邮箱:121594097@qq.com

+
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/about/copyright.html b/about/copyright.html new file mode 100644 index 0000000..b414375 --- /dev/null +++ b/about/copyright.html @@ -0,0 +1,241 @@ + + + + +版权隐私_找标牌网 + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ +
+
+
+
+
+
+
找标牌网 + +
+
+
+ +
+
+ +
+
+
+
+
+

版权隐私

+

欢迎访问找标牌网!我们以本隐私申明声明对访问者隐私保护的许诺。以下文字公开我站(www.zhaobiaopai.com)对信息收集和使用的情况。本站的隐私申明正在不断改进中,随着我站服务范围的扩大,我们会随时更新我们的隐私申明。我们欢迎您随时会来查看本申明。请向121594097@qq.com反馈您的意见。


在同意找标牌网服务协议(“协议”)之时,你已经同意我们按照本隐私申明来使用和披露您的个人信息。本隐私申明的全部条款属于该协议的一部份。


未成年人的特别注意事项 如果您未满18周岁,您无权使用公司服务,因此我们希望您不要向我们提供任何个人信息。如果您未满18周岁,您只能在父母或监护人的陪同下才可以使用公司服务。


用户名和密码 当您打算注册成会员后,我们要求您选择一个用户名和密码,还要提供密码提示问题及其答案以便在您丢失密码后我们可以确认您的身份。您只能通过您的密码来使用您的帐号。如果您泄漏了密码,您可能丢失了您的个人识别信息,并且有可能导致对您不利的司法行为。因此不管任何原因使您的密码安全受到危及,您应该立即通过121594097@qq.com和我们取得联系。


注册信息 当您在注册为会员时,我们要求您填写一张注册表。注册表要求提供您的真实姓名,地址,国籍,电话号码,和电子邮件地址。另外,您还被要求提供您的公司的地址,电话号码和贵公司的服务和产品的简短说明等信息。您还有权选择来填写附加信息。这些信息可能但不限于您公司所在的省份和城市,时区和邮政编码,传真号码,主页和您的职务。我们使用注册信息来获得会员的统计资料。我们将会用这些统计数据来给我们的会员分类,例如年龄、产业和国家,以便有针对性地向我们的会员提供新的服务和机会。我们会通过您的邮件地址来通知您这些新的服务和机会。


您的交易行为 我们跟踪IP地址仅仅只是为了安全的必要。如果我们没有发现任何安全问题,我们会及时删除我们收集到的IP地址。我们还跟踪全天的页面访问数据。全天页面访问数据被用来反映网站的流量,一是我们可以为未来的发展制定计划(例如,增加服务器)。


广告 我们会对个人身份数据进行综合统计,并为销售和奖励的需要将该综合统计向广告主披露。


Cookie的使用 我们使用cookie来使我们的网站对用户更友好。它可以帮您省去为使用我们的服务而重复输入注册信息和跟踪您的浏览器的状态。


第三方 我们的网站公布了用户提交的商业机会和报价,而其他用户可以查询这些报价和商业机会。我们不会向任何第三方提供,出售,出租,分享和交易用户的个人信息,除非第三方和找标牌网一起为网站和会员提供服务并且在该服务结束后将被禁止访问包括其以前能够访问的所有这些资料。当我们被法律强制或依照政府要求提供您的信息时我们将善意地披露您的资料。


信息的存储和交换 用户信息和资料被收集和存储在放置于中国的服务器上。只有为了做备份的需要时,我们才可能需要将您的资料传送到别国的服务器上。


外部链接 本站含有到其他网站的链接。找标牌网对那些网站的隐私保护措施不负任何责任。我们可能在任何需要的时候增加商业伙伴或共用品牌的网站,但是提供给他们的将仅仅是综合信息,我们将不会公开您的身份。


公开的交易信息 您提供发布的供贸易的物品信息或报价将被显示在公共区域,对任何用户来说是公开的。请注意所有在这些场所公开的信息会成为公共信息,请您在决定公布您的个人信息前仔细考虑。


安全 我们网站有相应的安全措施来确保我们掌握的信息不丢失,不被滥用和变造。这些安全措施包括向其它服务器备份数据和对用户密码加密。尽管我们有这些安全措施,但请注意在因特网上不存在“完善的安全措施”。

+
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000..d690b08 --- /dev/null +++ b/about/index.html @@ -0,0 +1,241 @@ + + + + +关于我们_找标牌网 + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ +
+
+
+
+
+
+
找标牌网 + +
+
+
+ +
+
+ +
+
+
+
+
+

关于我们

+

找标牌网是全国权威的标牌产品,标牌技术,标牌资讯的专业标牌行业网站,是标牌生产商,经销商,工程商及行业用户沟通的平台。 通过找标牌网的标牌行业频道,您可以全盘掌握全国最新,最全,最准确的标牌行业信息和标牌设计制作及周边产品资讯。 让您的企业提前掌握商机,拔得头筹!


服务宗旨

奉行技术领先,产品超群的产业政策,致力于标牌行业电子商务服务,企业形象宣传与产品推广。

服务体系

我们的核心业务就是围绕标牌企业的需求(OA,AV,企业,政府,学校,标牌资讯,各地代理商名单,各地标牌企业名单),依托互联网,提供线上和线下全面标牌商务咨询服务,使标牌行业的企业电子商务化,提供专业型标识标牌展示窗口。

+
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/ad/index.php b/ad/index.php new file mode 100644 index 0000000..1c59d96 --- /dev/null +++ b/ad/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/ad/list.php b/ad/list.php new file mode 100644 index 0000000..1c59d96 --- /dev/null +++ b/ad/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/ad/show.php b/ad/show.php new file mode 100644 index 0000000..1c59d96 --- /dev/null +++ b/ad/show.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/admin.php b/admin.php new file mode 100644 index 0000000..24a3724 --- /dev/null +++ b/admin.php @@ -0,0 +1,62 @@ +query("DELETE FROM {$DT_PRE}admin WHERE userid=$_userid AND url='?".$DT_QST."'"); + msg('警告!您无权进行此操作 Error(00)'); + } +} +if($DT['admin_log'] && $action != 'import') admin_log(); +if($DT['admin_online']) admin_online(); +if(isset($reason) && is_array($itemid)) admin_notice(); +$search = isset($search) ? intval($search) : 0; +$widget = isset($widget) ? intval($widget) : 0; +$psize = isset($psize) ? intval($psize) : 0; +if($psize > 0 && $psize != $pagesize) { + $pagesize = $psize; + $offset = ($page-1)*$pagesize; +} +if($module == 'destoon') { + include DT_ROOT.'/admin/'.$file.'.inc.php'; +} else { + include DT_ROOT.'/module/'.$module.'/common.inc.php'; + include DT_ROOT.'/module/'.$module.'/admin/'.$file.'.inc.php'; +} +?> \ No newline at end of file diff --git a/ajax.php b/ajax.php new file mode 100644 index 0000000..af8f663 --- /dev/null +++ b/ajax.php @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/announce/index.php b/announce/index.php new file mode 100644 index 0000000..86acc27 --- /dev/null +++ b/announce/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/announce/list.php b/announce/list.php new file mode 100644 index 0000000..86acc27 --- /dev/null +++ b/announce/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/announce/show.php b/announce/show.php new file mode 100644 index 0000000..86acc27 --- /dev/null +++ b/announce/show.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/apple-touch-icon-precomposed.png b/apple-touch-icon-precomposed.png new file mode 100644 index 0000000..7297d79 Binary files /dev/null and b/apple-touch-icon-precomposed.png differ diff --git a/archiver/index.php b/archiver/index.php new file mode 100644 index 0000000..b7e6753 --- /dev/null +++ b/archiver/index.php @@ -0,0 +1,61 @@ +$v) { + if(!$v['islink'] && $v['ismenu'] && $v['moduleid'] > 4) { + if($k == $mid) $vmid = 1; + $v['url'] = $DT['rewrite'] ? rewrite('index.php?mid='.$k) : '?mid-'.$k.'.html'; + $N[] = $v; + } +} +$vmid or $mid = $N[0]['moduleid']; +$table = get_table($mid); +$t = $db->get_one("SELECT MIN(addtime) AS mintime,MAX(addtime) AS maxtime FROM {$table} WHERE addtime>0 AND status>2", 'CACHE'); +$fromtime = $t['mintime']; +$fromyear = timetodate($fromtime, 'Y'); +if($fromyear < 1990) $fromyear = 1990; +$frommonth = timetodate($fromtime, 'n'); +$totime = $t['maxtime'] > $DT_TIME ? $DT_TIME : $t['maxtime']; +$toyear = timetodate($totime, 'Y'); +$tomonth = timetodate($totime, 'n'); +for($i = $toyear; $i >= $fromyear; $i--) { + for($j = ($i == $toyear ? $tomonth : 12); $j >= ($i == $fromyear ? $frommonth : 1); $j--) { + $r = array(); + $r['title'] = $MODULE[$mid]['name'].$i.'年'.($j < 10 ? '0' : '').$j.'月归档'; + $r['month'] = $i.($j < 10 ? '0' : '').$j; + $r['url'] = $DT['rewrite'] ? rewrite('index.php?mid='.$mid.'&month='.$r['month']) : '?mid-'.$mid.'-month-'.$r['month'].'.html'; + $M[$r['month']] = $r; + } +} +$head_title = $MODULE[$mid]['name'].'归档'; +if(isset($month) && isset($M[$month])) { + $list = 1; + $y = substr($month, 0, 4); + $m = substr($month, 4, 2); + $ym = $y.'-'.$m; + $t = timetodate(datetotime($ym.'-01'), 't'); + $ftime = datetotime($ym.'-01 00:00:00'); + $ttime = datetotime($ym.'-'.$t.' 23:59:59'); + $condition = "status>2 AND addtime>$ftime AND addtime<$ttime"; + $num = $db->count($table, $condition, $CFG['db_expires']); + $demo_url = $DT['rewrite'] ? rewrite('index.php?mid='.$mid.'&month='.$month.'&page={destoon_page}') : '?mid-'.$mid.'-month-'.$month.'-page-{destoon_page}.html'; + $pages = pages($num, $page, $pagesize, $demo_url); + $tmp = explode('query("SELECT title,linkurl,addtime FROM {$table} WHERE $condition ORDER BY addtime DESC LIMIT $offset,$pagesize"); + while($r = $db->fetch_array($result)) { + $r['adddate'] = timetodate($r['addtime'], 5); + if(strpos($r['linkurl'], '://') === false) $r['linkurl'] = $MODULE[$mid]['linkurl'].$r['linkurl']; + $T[] = $r; + } + } + $head_title = $MODULE[$mid]['name'].$y.'年'.$m.'月归档'.($page > 1 ? '第'.$page.'页' : ''); +} +include template('archiver', 'extend'); +?> \ No newline at end of file diff --git a/baidunews.xml b/baidunews.xml new file mode 100644 index 0000000..7a5d6b0 --- /dev/null +++ b/baidunews.xml @@ -0,0 +1,2706 @@ + + +http://www.zhaobiaopai.com/ +web@destoon.com +60 + + +<![CDATA[2023年全球交互平板市场衰退10.4%;需求、预算、软件化、竞品是四大下滑因素]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-03-11 21:37 + + + +<![CDATA[希沃携信阳市第一实验小学打造数字化校园新标杆]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-02-04 19:24 + + + +<![CDATA[三星连续 14 年引领数字标牌市场]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-02-04 19:23 + + + +<![CDATA[安徽建工建设投资集团有限公司2024年标识标牌集中采购]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-01-28 18:29 + + + +<![CDATA[视颐荣获2023年度“数字标牌 十大卓越品牌”]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-01-28 18:24 + + + +<![CDATA[春节将至,如何用智能广告机打造营销盛宴]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-01-28 18:22 + + + +<![CDATA[CVIA《2023年中国电子视像行业发展报告》:C0B技术优势更加凸显]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-01-28 18:22 + + + +<![CDATA[星巴克美国引入数字菜单屏,营业额提高30%]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-01-15 23:17 + + + +<![CDATA[中银立式广告机加速景德镇陶瓷大学数字校园建设]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-01-09 22:56 + + + +<![CDATA[LED一体机在中国市场的应用场景分析]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-01-09 22:55 + + + +<![CDATA[通过数字标牌增强便利店的客户体验]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-01-09 22:55 + + + +<![CDATA[2024年数字标牌蓄势待发,凭硬实力再迎新增长期]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-01-09 22:54 + + + +<![CDATA[平潭职业中专学校雕塑标识标牌设施采购项目成交公告]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-01-02 15:41 + + + +<![CDATA[液晶拼接屏在数字广告牌中的实际应用案例有哪些?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-01-02 15:34 + + + +<![CDATA[2023 LCD拼接招投标市场盘点:旺季不旺,监控场景属性突出]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-28 11:21 + + + +<![CDATA[中银智能广告机赋能四川省中国邮政金融服务]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-28 11:20 + + + +<![CDATA[数字标牌显示屏助学校打造信息化校园!]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-28 11:17 + + + +<![CDATA[熵基科技向阳:数字标牌运营在零售行业的发展趋势及未来展望]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-27 23:05 + + + +<![CDATA[数字标牌对用户的吸引力明显高于传统标牌]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-26 11:14 + + + +<![CDATA[2024广州光影显示展启动发布会圆满举行]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-22 21:33 + + + +<![CDATA[中银立式广告机数智助力陕西交通控股集团打造品牌形象]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-22 21:06 + + + +<![CDATA[飞利浦二合一电子墨水显示器荣膺电子纸创新应用“首创奖”]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-22 21:06 + + + +<![CDATA[合川区人民医院2024-2025年零星标识标牌设计制作安装维护服务供应商招标公告]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-21 17:50 + + + +<![CDATA[联想针对数字标牌等设备,推出 Chromebox Micro 迷你主机]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-20 10:15 + + + +<![CDATA[《2023激光显示产业高质量发展白皮书》正式公开发布]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-20 10:11 + + + +<![CDATA[2023年中国大陆数字标牌市场将达65.2万台,增长29.6%;2024年预测再涨10%]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-20 10:09 + + + +<![CDATA[山重建机有限公司挖掘机标牌及图形标志张贴外包项目更正公告]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-19 22:43 + + + +<![CDATA[大连:小小标识牌成乡村振兴“新名片”]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-18 11:04 + + + +<![CDATA[珠海街道:细治理严执法,规范户外广告牌]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-18 11:04 + + + +<![CDATA[民法君“典”案例:安装广告牌时被电击,责任谁来担?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-18 11:03 + + + +<![CDATA[潍坊市城管执法支队组织户外广告牌、LED显示屏安全工作检查]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-15 10:22 + + + +<![CDATA[确保降雪期间户外广告牌匾设施安全,北京整改6处隐患]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-15 10:22 + + + +<![CDATA[首届工业互联网标识应用创新大赛在渝“结硕果”]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-15 10:09 + + + +<![CDATA[农业农村部办公厅关于加强畜禽标识管理工作的通知]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-15 10:08 + + + +<![CDATA[泰安市中心医院党建宣传标牌项目竞争性磋商公告]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-15 10:08 + + + +<![CDATA[视美泰发布国产化开源鸿蒙系统数字标牌解决方案!]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-13 21:37 + + + +<![CDATA[智能数字标牌系统设计制作有哪些应用场景?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-13 21:32 + + + +<![CDATA[昆明市呈贡区农村信用合作联社零星宣传、网点标识标牌采购供应商]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-13 21:30 + + + +<![CDATA[标识系统和导视系统有什么区别]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-13 21:26 + + + +<![CDATA[安徽省标识行业质量检查制度]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-13 21:25 + + + +<![CDATA[杭州大关街道及时修复标志牌 消除隐患保安全]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-13 21:25 + + + +<![CDATA[深圳市爱鑫微电子有限公司荣获高工创新产品奖]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-13 21:08 + + + +<![CDATA[Mini LED TV同比增长近50%]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-13 21:07 + + + +<![CDATA[中国邮政银行+中银立式广告机屡次携手,共谋金融服务创新发展]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-13 21:06 + + + +<![CDATA[中国邮政以中银智能广告机提升运营、服务新高度]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-11-06 11:00 + + + +<![CDATA[产业园区户外导视标识标牌应该设置在哪些位置?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-01-28 18:32 + + + +<![CDATA[如何设计富有特色的校园文化标识标牌?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-01-28 18:31 + + + +<![CDATA[对于标识标牌的安装,该如何提高其使用的安全性呢?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-01-28 18:30 + + + +<![CDATA[展厅设计常用的标牌需要具有哪些特点?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-01-28 18:27 + + + +<![CDATA[立式与壁挂液晶广告机该怎么选用]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-01-09 22:52 + + + +<![CDATA[移动拼接LED显示屏出现信号不稳定时,该如何解决?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2024-01-02 15:37 + + + +<![CDATA[标牌施工现场应该做好哪些准备工作?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-12-27 23:04 + + + +<![CDATA[标识导向系统中的导视牌如何选择]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-06-19 11:47 + + + +<![CDATA[电铸标牌主要材质有哪些呢?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-05-04 20:24 + + + +<![CDATA[如何做好LED显示屏的维护和保养?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-03-15 21:50 + + + +<![CDATA[人防标识标牌制作工艺的重要性]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-03-08 16:51 + + + +<![CDATA[公园景区标识导视系统有哪几种常见分类?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-03-07 16:09 + + + +<![CDATA[商场标识标牌应该注意哪些细节]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-02-27 21:43 + + + +<![CDATA[医院标识牌需要注意哪些要求]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-02-24 20:49 + + + +<![CDATA[导视系统标识标牌设计制作过程需要注意哪些事项]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-02-22 19:44 + + + +<![CDATA[户外标识标牌使用中应该如何做好防腐蚀维护工作?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-02-19 19:10 + + + +<![CDATA[标识标牌的制作具体有哪些流程?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2023-02-17 20:46 + + + +<![CDATA[甲级写字楼导视标识系统怎么进行创新化设计?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-11-28 20:50 + + + +<![CDATA[科技馆标识设计需要注意哪些问题]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-11-28 20:46 + + + +<![CDATA[城市中经常出现的标识标牌都有哪些分类]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-10-28 08:45 + + + +<![CDATA[数字标牌LED显示屏秋冬季节维护指南]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-10-20 12:26 + + + +<![CDATA[体育馆完整的广告标识标牌导视系统有哪些呢?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-10-20 12:23 + + + +<![CDATA[户外广告牌136安全/8647检测2318鉴定的主要内容]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-05-23 20:50 + + + +<![CDATA[物业标识标牌的主要类别]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-30 15:16 + + + +<![CDATA[选购电力标识牌需要注意的几点]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-30 15:11 + + + +<![CDATA[做标识系统和导视系统需要注意哪些问题?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-29 22:15 + + + +<![CDATA[雅力铝塑板的特点]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:19 + + + +<![CDATA[ABS双色板的特点]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:19 + + + +<![CDATA[山富PP背胶的用途及特点]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:19 + + + +<![CDATA[木质超薄灯箱的特点及优点]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:19 + + + +<![CDATA[防水化纤油画布的特性及使用范围]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:19 + + + +<![CDATA[有机玻璃亚克力板的特性及使用范围]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:19 + + + +<![CDATA[优质灯箱布的分类、选择与加工]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:19 + + + +<![CDATA[户外广告灯箱球的优点是什么?]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:19 + + + +<![CDATA[什么是染料墨水]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:19 + + + +<![CDATA[什么是亚克力板?亚克力板制作灯箱有什么优点]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:19 + + + +<![CDATA[圆管钢板圆孔桁架常用规格]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:19 + + + +<![CDATA[常见KT板材的特点和使用方法]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:19 + + + +<![CDATA[PVC结皮发泡板的特点及用途]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:19 + + + +<![CDATA[广告板材阳光板的特点及用途]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:19 + + + +<![CDATA[如何选购压克力板材]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:19 + + + +<![CDATA[山富加厚防水正喷灯片的特性及使用范围]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:19 + + + +<![CDATA[吸塑发光字的特点及使用范围]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:19 + + + +<![CDATA[透明PVC板的特性及使用范围]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:18 + + + +<![CDATA[旋转式灯箱的特点及使用范围]]> + + + + + + + + + + + + + + + + + + + + + + + + + +2022-04-27 16:18 + + \ No newline at end of file diff --git a/brand/ajax.php b/brand/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/brand/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/brand/config.inc.php b/brand/config.inc.php new file mode 100644 index 0000000..dfb83fc --- /dev/null +++ b/brand/config.inc.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/brand/index.php b/brand/index.php new file mode 100644 index 0000000..18994c7 --- /dev/null +++ b/brand/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/brand/list.php b/brand/list.php new file mode 100644 index 0000000..abf24fb --- /dev/null +++ b/brand/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/brand/message.php b/brand/message.php new file mode 100644 index 0000000..e170862 --- /dev/null +++ b/brand/message.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/brand/search.php b/brand/search.php new file mode 100644 index 0000000..9a3b64a --- /dev/null +++ b/brand/search.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/brand/show.php b/brand/show.php new file mode 100644 index 0000000..1e56e79 --- /dev/null +++ b/brand/show.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/buy/ajax.php b/buy/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/buy/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/buy/config.inc.php b/buy/config.inc.php new file mode 100644 index 0000000..da94b1a --- /dev/null +++ b/buy/config.inc.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/buy/index.php b/buy/index.php new file mode 100644 index 0000000..3291747 --- /dev/null +++ b/buy/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/buy/list.php b/buy/list.php new file mode 100644 index 0000000..c55b026 --- /dev/null +++ b/buy/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/buy/price.php b/buy/price.php new file mode 100644 index 0000000..b536cbc --- /dev/null +++ b/buy/price.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/buy/search.php b/buy/search.php new file mode 100644 index 0000000..bcbf325 --- /dev/null +++ b/buy/search.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/buy/show.php b/buy/show.php new file mode 100644 index 0000000..b07decc --- /dev/null +++ b/buy/show.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/club/ajax.php b/club/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/club/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/club/chat.php b/club/chat.php new file mode 100644 index 0000000..b919aa2 --- /dev/null +++ b/club/chat.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/club/config.inc.php b/club/config.inc.php new file mode 100644 index 0000000..33b7509 --- /dev/null +++ b/club/config.inc.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/club/fans.php b/club/fans.php new file mode 100644 index 0000000..c9f7fa1 --- /dev/null +++ b/club/fans.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/club/goto.php b/club/goto.php new file mode 100644 index 0000000..5dbb7b1 --- /dev/null +++ b/club/goto.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/club/index.php b/club/index.php new file mode 100644 index 0000000..682a97a --- /dev/null +++ b/club/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/club/list.php b/club/list.php new file mode 100644 index 0000000..55fc086 --- /dev/null +++ b/club/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/club/search.php b/club/search.php new file mode 100644 index 0000000..a07b9a3 --- /dev/null +++ b/club/search.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/club/show.php b/club/show.php new file mode 100644 index 0000000..f104ed8 --- /dev/null +++ b/club/show.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/comment/index.php b/comment/index.php new file mode 100644 index 0000000..aa5d488 --- /dev/null +++ b/comment/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/common.inc.php b/common.inc.php new file mode 100644 index 0000000..a1317c7 --- /dev/null +++ b/common.inc.php @@ -0,0 +1,194 @@ + $__v) { + if(substr($__k, 0, 1) == '_') if($__R == '_POST') { unset($_POST[$__k]); } else { unset($_GET[$__k]); } + if(isset($$__k) && $$__k == $__v) unset($$__k); + } + } +} +define('IN_DESTOON', true); +define('IN_ADMIN', defined('DT_ADMIN') ? true : false); +define('DT_ROOT', str_replace("\\", '/', dirname(__FILE__))); +if(defined('DT_REWRITE')) include DT_ROOT.'/include/rewrite.inc.php'; +$CFG = array(); +require DT_ROOT.'/config.inc.php'; +define('DT_PATH', $CFG['url']); +define('DT_STATIC', $CFG['static'] ? $CFG['static'] : $CFG['url']); +define('DT_DOMAIN', $CFG['cookie_domain'] ? substr($CFG['cookie_domain'], 1) : ''); +define('DT_WIN', strpos(strtoupper(PHP_OS), 'WIN') !== false ? true: false); +define('DT_UA', $_SERVER['HTTP_USER_AGENT']); +define('DT_CHMOD', ($CFG['file_mod'] && !DT_WIN) ? $CFG['file_mod'] : 0); +define('DT_LANG', $CFG['language']); +define('DT_KEY', $CFG['authkey']); +define('DT_PRE', $CFG['tb_pre']); +define('DT_EDITOR', $CFG['editor']); +define('DT_CDN', $CFG['cdn'] ? 1 : 0); +define('DT_CLOUD_UID', $CFG['cloud_uid']); +define('DT_CLOUD_KEY', $CFG['cloud_key']); +define('DT_CHARSET', strtoupper($CFG['charset'])); +define('DT_CACHE', $CFG['cache_dir'] ? $CFG['cache_dir'] : DT_ROOT.'/file/cache'); +define('DT_SKIN', DT_STATIC.'skin/'.$CFG['skin'].'/'); +define('VIP', $CFG['com_vip']); +define('errmsg', 'Invalid Request'); +$L = array(); +include DT_ROOT.'/lang/'.DT_LANG.'/lang.inc.php'; +require DT_ROOT.'/version.inc.php'; +require DT_ROOT.'/include/global.func.php'; +require DT_ROOT.'/include/safe.func.php'; +require DT_ROOT.'/include/cloud.func.php'; +require DT_ROOT.'/include/tag.func.php'; +require DT_ROOT.'/api/im.func.php'; +require DT_ROOT.'/api/extend.func.php'; +if(!$MQG) { + if($_POST) $_POST = daddslashes($_POST); + if($_GET) $_GET = daddslashes($_GET); + if($_COOKIE) $_COOKIE = daddslashes($_COOKIE); +} +if(function_exists('date_default_timezone_set')) date_default_timezone_set($CFG['timezone']); +$DT_PRE = $CFG['tb_pre']; +$DT_QST = addslashes($_SERVER['QUERY_STRING']); +$DT_TIME = time() + $CFG['timediff']; +$DT_IP = get_env('ip'); +$DT_URL = get_env('url'); +$DT_REF = get_env('referer'); +$DT_MOB = get_env('mobile'); +$DT_MBS = get_env('browser'); +$DT_BOT = is_robot(); +$DT_TOUCH = is_touch(); +$DT_TODAY = datetotime(date('Y-m-d', $DT_TIME).' 23:59:59'); +$DT_PC = $GLOBALS['DT_PC'] = 1; +define('DT_TIME', $DT_TIME); +define('DT_IP', $DT_IP); +define('DT_TOUCH', $DT_TOUCH); +define('DT_REFRESH', substr(md5(DT_RELEASE.DT_KEY), 0, 6)); +header("Content-Type:text/html;charset=".DT_CHARSET); +require DT_ROOT.'/include/db_'.$CFG['database'].'.class.php'; +require DT_ROOT.'/include/cache_'.$CFG['cache'].'.class.php'; +require DT_ROOT.'/include/session_'.$CFG['session'].'.class.php'; +require DT_ROOT.'/include/file.func.php'; +if(!empty($_SERVER['REQUEST_URI'])) strip_uri($_SERVER['REQUEST_URI']); +if($_POST) { $_POST = strip_sql($_POST); strip_key($_POST); } +if($_GET) { $_GET = strip_sql($_GET); strip_key($_GET); } +if($_COOKIE) { $_COOKIE = strip_sql($_COOKIE); strip_key($_COOKIE); } +if(!IN_ADMIN) banip(); +if($_POST) extract($_POST, EXTR_SKIP); +if($_GET) extract($_GET, EXTR_SKIP); +$db_class = 'db_'.$CFG['database']; +$db = new $db_class; +$db->halt = (DT_DEBUG || IN_ADMIN) ? 1 : 0; +$db->connect($CFG['db_host'], $CFG['db_user'], $CFG['db_pass'], $CFG['db_name'], $CFG['db_expires'], $CFG['db_charset'], $CFG['pconnect']); +$dc = new dcache(); +$dc->pre = $CFG['cache_pre']; +require DT_ROOT.'/include/db.class.php'; +$DT = $MOD = $EXT = $CSS = $JS = $DTMP = $CAT = $ARE = $AREA = array(); +$CACHE = cache_read('module.php'); +if(!$CACHE) { + require_once DT_ROOT.'/include/admin.func.php'; + require_once DT_ROOT.'/include/post.func.php'; + require_once DT_ROOT.'/include/cache.func.php'; + cache_all(); + $CACHE = cache_read('module.php'); +} +$DT = $CACHE['dt']; +$MODULE = $CACHE['module']; +$EXT = cache_read('module-3.php'); +define('DT_MAX_LEN', $DT['max_len']); +define('RE_WRITE', $DT['rewrite'] ? ($DT['search_rewrite'] ? 2 : 1) : 0); +$lazy = $DT['lazy'] ? 1 : 0; +if(!IN_ADMIN && ($DT['close'] || $DT['defend_cc'])) include DT_ROOT.'/include/defend.inc.php'; +unset($CACHE, $CFG['db_host'], $CFG['db_user'], $CFG['db_pass'], $db_class, $db_file); +$moduleid = isset($moduleid) ? intval($moduleid) : 1; +if($moduleid > 1) { + isset($MODULE[$moduleid]) or dheader(DT_PATH); + $module = $MODULE[$moduleid]['module']; + $MOD = $moduleid == 3 ? $EXT : cache_read('module-'.$moduleid.'.php'); + include DT_ROOT.'/lang/'.DT_LANG.'/'.$module.'.inc.php'; +} else { + $moduleid = 1; + $module = 'destoon'; +} +$cityid = 0; +$city_name = $L['allcity']; +$city_domain = $city_template = $city_sitename = ''; +if($DT['city']) include DT_ROOT.'/include/city.inc.php'; +define('DT_MOB', $EXT['mobile_url']); +($DT['gzip_enable'] && !$_POST && !defined('DT_MOBILE')) ? ob_start('ob_gzhandler') : ob_start(); +if(isset($forward)) { + if(isset($_GET['forward'])) $forward = urldecode($forward); +} else if($DT_REF) { + $forward = strpos(dirname($DT_REF).'/', (DT_DOMAIN ? DT_DOMAIN : DT_PATH)) === false ? DT_PATH : $DT_REF; +} else { + $forward = DT_PATH; +} +strip_uri($forward); +$destoon_task = ''; +(isset($action) && check_name($action)) or $action = ''; +(isset($job) && check_name($job)) or $job = ''; +$submit = isset($_POST['submit']) ? 1 : 0; +if($submit) { + isset($captcha) or $captcha = ''; + isset($answer) or $answer = ''; +} +$mid = isset($mid) ? intval($mid) : 0; +$sum = isset($sum) ? intval($sum) : 0; +$page = isset($page) ? max(intval($page), 1) : 1; +$catid = isset($catid) ? intval($catid) : 0; +$areaid = isset($areaid) ? intval($areaid) : 0; +$itemid = isset($itemid) ? (is_array($itemid) ? array_map('intval', $itemid) : intval($itemid)) : 0; +$pagesize = $DT['pagesize'] ? $DT['pagesize'] : 30; +$offset = ($page-1)*$pagesize; +$kw = isset($_GET['kw']) ? strip_kw($_GET['kw'], $DT['max_kw']) : ''; +$keyword = $kw ? str_replace(array(' ', '*'), array('%', '%'), $kw) : ''; +$seo_file = $seo_title = $head_title = $head_keywords = $head_description = $head_canonical = $head_mobile = $head_name = ''; +$head_pc = $moduleid > 1 ? str_replace(DT_MOB.$MODULE[$moduleid]['moduledir'].'/', $MODULE[$moduleid]['linkurl'], $DT_URL) : str_replace(DT_MOB, DT_PATH, $DT_URL); +if($catid) $CAT = get_cat($catid); +if($areaid) $ARE = get_area($areaid); +$_userid = $_admin = $_aid = $_cid = $_message = $_chat = $_sound = $_online = $_money = $_credit = $_sms = 0; +$_username = $_company = $_passport = $_truename = $_cname = ''; +$_groupid = 3; +$destoon_auth = get_cookie('auth'); +if($destoon_auth) $destoon_auth = decrypt($destoon_auth, DT_KEY.'USER'); +if($destoon_auth) { + $_dauth = explode('|', $destoon_auth); + $_userid = isset($_dauth[0]) ? intval($_dauth[0]) : 0; + if($_userid) { + $_password = isset($_dauth[1]) ? trim($_dauth[1]) : ''; + $_cid = isset($_dauth[2]) ? intval($_dauth[2]) : 0; + $USER = $db->get_one("SELECT username,passport,company,truename,mobile,password,groupid,email,message,chat,sound,online,sms,credit,money,loginip,admin,aid,edittime FROM {$DT_PRE}member WHERE userid=$_userid"); + if($USER && $USER['password'] == $_password) { + if($USER['groupid'] == 2) dalert(lang('message->common_forbidden')); + if($USER['loginip'] != $DT_IP && ($DT['ip_login'] == 2 || ($DT['ip_login'] == 1 && IN_ADMIN))) { + $_userid = 0; set_cookie('auth', ''); + dalert(lang('message->common_login', array($USER['loginip'])), DT_PATH); + } + extract($USER, EXTR_PREFIX_ALL, ''); + } else { + $_userid = 0; + if($db->linked) set_cookie('auth', ''); + } + unset($destoon_auth, $USER, $_dauth, $_password); + } +} +if($_userid == 0) { $_groupid = 3; $_username = ''; } +if(!IN_ADMIN) { + if($_groupid == 1) include DT_ROOT.'/module/member/admin.inc.php'; + if($_userid) $db->query("REPLACE INTO {$DT_PRE}online (userid,username,ip,moduleid,online,lasttime) VALUES ('$_userid','$_username','$DT_IP','$moduleid','$_online','$DT_TIME')"); +} +$MG = cache_read('group-'.$_groupid.'.php'); +?> \ No newline at end of file diff --git a/company/1/index.html b/company/1/index.html new file mode 100644 index 0000000..40c2ef6 --- /dev/null +++ b/company/1/index.html @@ -0,0 +1,699 @@ + + + + +传统标牌厂商_公司_找标牌网 + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ +
+
+
+
+
+
+
找标牌网 + +
+
+
+ +
+
+ +
+
+
+ +
+
+
+
+
行业
+ +
+ + +
+
+

+ 重庆市特驰科技有限公司  +VIP VIP会员

+
+ 主营产品:硕方、普贴、爱普生 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 北京第欧丽标科技有限公司  + 普通会员

+
+ 主营产品:线号机,标牌机,色带,打标机,标签机,激光标识打印机 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 常州明道标识有限公司  + 普通会员

+
+ 主营产品:各类导视系统、垃圾箱、垃圾分类亭、候车亭、精神堡垒、党建宣传牌、乡村标识、宣传栏、导视牌、科室牌、资料架、广告灯箱等 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 河南大华伟业广告有限公司  + 普通会员

+
+ 主营产品:标识标牌、导视系统、灯箱、花草牌等 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 上海昶文展览服务有限公司  + 普通会员

+
+ 主营产品:展览会博览会 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 三合标牌制作有限公司  + 普通会员

+
+ 主营产品:承接:同行喷绘写真设计、制作、安装、标识标牌制作、LED显示屏及亮化工程,展厅设计制作 、三面翻工程 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 河北润杰广告制作有限公司  + 普通会员

+
+ 主营产品:各类标识标牌,各类发光字,平板UV打印,广告灯箱,喷绘写真,亚克力雕刻字等。 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 佛山市壹捌捌广告有限公司  + 普通会员

+
+ 主营产品: led发光字,平面发光字,LED点阵发光字,LED冲孔发光字,树脂字,无边发光字,超级发光字,3D发光字,通体发光字,全彩发光字,炫彩发光字,迷你发光字,树脂发光字,特大铝板或其他金属板发光字,特大楼盘挂网发光字,LED亮化工程,港式精工字,金属烤漆字,水晶字及其他字;各类户内标识标牌,各类户外标识标牌,软膜灯箱,腐蚀丝印标识;喷绘写真,灯布喷绘,室内高精写真,户外高精写真,板材UV喷绘,展架等。 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 河南辉恒标牌标识有限公司  + 普通会员

+
+ 主营产品:宣传栏 信报箱 精神堡垒 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 郑州密码柯商贸有限公司  + 普通会员

+
+ 主营产品:办公设备耗材销售;办公设备销售;化工产品销售;印刷专用设备制造 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 深圳市大和油墨科技有限公司  + 普通会员

+
+ 主营产品:环保印刷器材、油墨的技术开发、销售 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 深圳市生彩广告有限公司  + 普通会员

+
+ 主营产品:喷绘、展示器材、展览展示器材的购销及其他国内贸易 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 安平县淮盛丝网制品有限公司  + 普通会员

+
+ 主营产品:网片、爬架网、丝网制品及进出口业务 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 河南索恩文化传播有限公司  + 普通会员

+
+ 主营产品:广告制作;广告发布;会议及展览服务 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 河南华熠文化传媒有限公司  + 普通会员

+
+ 主营产品:标识标牌设计、制作、安装及销售、展览展示服务 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 广州展宝展示器材有限公司  + 普通会员

+
+ 主营产品:标识、标志牌制造 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 合肥仲泰广告设备有限公司  + 普通会员

+
+ 主营产品:国内广告设计、制作及安装 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 郑州普康智能设备有限公司  + 普通会员

+
+ 主营产品:智能设备、包装设备、印刷设备、包装材料、机械设备及配件 +
+
+ 公司地址: +
+
+ + + +
+ +
+
+

+ 武汉宇阳博创科技有限公司  + 普通会员

+
+ 主营产品:数码影像、平面设计、广告艺术、数码印花、标志标识设备的销售和服务 +
+
+ 公司地址: +
+
+ + + +
+
 «上一页   1   2   下一页»   共35条/2页 
+
+ +
搜索排行
+
+
+
+
+
+
+
+
+
+
+ +
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/company/1/list1.html b/company/1/list1.html new file mode 100644 index 0000000..40c2ef6 --- /dev/null +++ b/company/1/list1.html @@ -0,0 +1,699 @@ + + + + +传统标牌厂商_公司_找标牌网 + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ +
+
+
+
+
+
+
找标牌网 + +
+
+
+ +
+
+ +
+
+
+ +
+
+
+
+
行业
+ +
+ + +
+
+

+ 重庆市特驰科技有限公司  +VIP VIP会员

+
+ 主营产品:硕方、普贴、爱普生 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 北京第欧丽标科技有限公司  + 普通会员

+
+ 主营产品:线号机,标牌机,色带,打标机,标签机,激光标识打印机 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 常州明道标识有限公司  + 普通会员

+
+ 主营产品:各类导视系统、垃圾箱、垃圾分类亭、候车亭、精神堡垒、党建宣传牌、乡村标识、宣传栏、导视牌、科室牌、资料架、广告灯箱等 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 河南大华伟业广告有限公司  + 普通会员

+
+ 主营产品:标识标牌、导视系统、灯箱、花草牌等 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 上海昶文展览服务有限公司  + 普通会员

+
+ 主营产品:展览会博览会 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 三合标牌制作有限公司  + 普通会员

+
+ 主营产品:承接:同行喷绘写真设计、制作、安装、标识标牌制作、LED显示屏及亮化工程,展厅设计制作 、三面翻工程 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 河北润杰广告制作有限公司  + 普通会员

+
+ 主营产品:各类标识标牌,各类发光字,平板UV打印,广告灯箱,喷绘写真,亚克力雕刻字等。 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 佛山市壹捌捌广告有限公司  + 普通会员

+
+ 主营产品: led发光字,平面发光字,LED点阵发光字,LED冲孔发光字,树脂字,无边发光字,超级发光字,3D发光字,通体发光字,全彩发光字,炫彩发光字,迷你发光字,树脂发光字,特大铝板或其他金属板发光字,特大楼盘挂网发光字,LED亮化工程,港式精工字,金属烤漆字,水晶字及其他字;各类户内标识标牌,各类户外标识标牌,软膜灯箱,腐蚀丝印标识;喷绘写真,灯布喷绘,室内高精写真,户外高精写真,板材UV喷绘,展架等。 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 河南辉恒标牌标识有限公司  + 普通会员

+
+ 主营产品:宣传栏 信报箱 精神堡垒 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 郑州密码柯商贸有限公司  + 普通会员

+
+ 主营产品:办公设备耗材销售;办公设备销售;化工产品销售;印刷专用设备制造 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 深圳市大和油墨科技有限公司  + 普通会员

+
+ 主营产品:环保印刷器材、油墨的技术开发、销售 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 深圳市生彩广告有限公司  + 普通会员

+
+ 主营产品:喷绘、展示器材、展览展示器材的购销及其他国内贸易 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 安平县淮盛丝网制品有限公司  + 普通会员

+
+ 主营产品:网片、爬架网、丝网制品及进出口业务 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 河南索恩文化传播有限公司  + 普通会员

+
+ 主营产品:广告制作;广告发布;会议及展览服务 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 河南华熠文化传媒有限公司  + 普通会员

+
+ 主营产品:标识标牌设计、制作、安装及销售、展览展示服务 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 广州展宝展示器材有限公司  + 普通会员

+
+ 主营产品:标识、标志牌制造 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 合肥仲泰广告设备有限公司  + 普通会员

+
+ 主营产品:国内广告设计、制作及安装 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 郑州普康智能设备有限公司  + 普通会员

+
+ 主营产品:智能设备、包装设备、印刷设备、包装材料、机械设备及配件 +
+
+ 公司地址: +
+
+ + + +
+ +
+
+

+ 武汉宇阳博创科技有限公司  + 普通会员

+
+ 主营产品:数码影像、平面设计、广告艺术、数码印花、标志标识设备的销售和服务 +
+
+ 公司地址: +
+
+ + + +
+
 «上一页   1   2   下一页»   共35条/2页 
+
+ +
搜索排行
+
+
+
+
+
+
+
+
+
+
+ +
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/company/1/list2.html b/company/1/list2.html new file mode 100644 index 0000000..3f50bce --- /dev/null +++ b/company/1/list2.html @@ -0,0 +1,610 @@ + + + + +传统标牌厂商_第2页_公司_找标牌网 + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ +
+
+
+
+
+
+
找标牌网 + +
+
+
+ +
+
+ +
+
+
+ +
+
+
+
+
行业
+ +
+ + +
+
+

+ 济南万彩数控设备有限公司  + 普通会员

+
+ 主营产品:雕刻机、打印机、喷绘机 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 宁波瑞利时数控科技有限公司  + 普通会员

+
+ 主营产品:自动化设备、机器人、电子产品、机械设备、机电一体化设备 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 济南锐诚自动化设备有限公司  + 普通会员

+
+ 主营产品:气动打标机 工业打标机 激光打标机 激光流水线作业 铭牌打标机 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 廊坊久升图文广告有限公司  + 普通会员

+
+ 主营产品:户外标牌、灯箱的制作;企业形象策划 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 青岛嘉扬盛世广告装饰公司  + 普通会员

+
+ 主营产品:广告设计 代理 广告制作 广告发布 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 广州市三杰数码图像有限公司  + 普通会员

+
+ 主营产品:uv打印机 标识铭牌uv数码打印机 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 曲阜市ENKE机械有限公司  + 普通会员

+
+ 主营产品:激光打标机 气动打标机 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 山东亿鸿激光科技有限公司  + 普通会员

+
+ 主营产品:光纤激光打标机、二氧化碳激光打标机、紫外激光打标机、激光焊接机、激光切割机 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 黄骅市晟杰面板有限公司  + 普通会员

+
+ 主营产品:制造标牌、电子元件、机箱、电路板、冲压件、标签、面板 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 黄骅市福顺科技有限公司  + 普通会员

+
+ 主营产品:金属标牌;标签印刷;印刷金属;金属面板;机箱外壳;机械测量;警示标签 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 盐城晶茂光电科技有限公司  + 普通会员

+
+ 主营产品:LCD、LED显示屏、照明灯具、标牌制作及销售 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 温州慧邦标牌有限公司  + 普通会员

+
+ 主营产品:标牌、塑料包装制品、金属制品、工艺品、警示牌、反光标牌 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 郑州骊越标识标牌有限公司  + 普通会员

+
+ 主营产品:标牌厂家 标示标牌制作 骊越标识 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 武汉贝瑞克机械制造有限公司  + 普通会员

+
+ 主营产品:标志牌铆钉机 自穿刺铆钉机 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 深圳市峰业信息技术有限公司  + 普通会员

+
+ 主营产品:标签打印机、条码扫描器、不干胶标签纸、碳带 +
+
+ 公司地址: +
+
+ + + +
+
 «上一页   1   2   下一页»   共35条/2页 
+
+ +
搜索排行
+
+
+
+
+
+
+
+
+
+
+ +
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/company/15/index.html b/company/15/index.html new file mode 100644 index 0000000..f8753be --- /dev/null +++ b/company/15/index.html @@ -0,0 +1,549 @@ + + + + +数字标牌厂商_公司_找标牌网 + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ +
+
+
+
+
+
+
找标牌网 + +
+
+
+ +
+
+ +
+
+
+ +
+
+
+
+
行业
+ +
+ + +
+
+

+ 重庆市特驰科技有限公司  +VIP VIP会员

+
+ 主营产品:硕方、普贴、爱普生 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 深圳市君派伟业有限公司  + 普通会员

+
+ 主营产品: 机械设备、非标设备、热转印便携式标签打印机、热转印胶带、热转印碳带的研发、销售 经营电子商务;网上经营、网上贸易、网上咨询、网络商务服务; +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 浙江华源智控科技有限公司  + 普通会员

+
+ 主营产品:交通设施,雾天公路行车安全诱导装置,激光警示灯,定向喇叭,太阳能道钉,来车预警系统,声光报警器,太阳能施工假人,GPS同步边缘警示灯,太阳能爆闪灯,太阳能警示灯,太阳能移动红绿灯,太阳能回转灯,太阳能交通标志牌,太阳能导向灯,太阳能黄闪指示灯,太阳能线性诱导标志,太阳能施工标志牌,轮廓标,太阳能警示柱,便携式全天候主动警示牌,led袖标,led背心,led充电肩灯,便携式led显示屏,led箭头灯,反光雨衣 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 北京新格永发科技发展有限公司  + 普通会员

+
+ 主营产品:工业用金属标牌铭牌腐牌,丝印牌,打标机打码机的设计研发销售 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 佛山市壹捌捌广告有限公司  + 普通会员

+
+ 主营产品: led发光字,平面发光字,LED点阵发光字,LED冲孔发光字,树脂字,无边发光字,超级发光字,3D发光字,通体发光字,全彩发光字,炫彩发光字,迷你发光字,树脂发光字,特大铝板或其他金属板发光字,特大楼盘挂网发光字,LED亮化工程,港式精工字,金属烤漆字,水晶字及其他字;各类户内标识标牌,各类户外标识标牌,软膜灯箱,腐蚀丝印标识;喷绘写真,灯布喷绘,室内高精写真,户外高精写真,板材UV喷绘,展架等。 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 深圳市华创佳科技有限公司  + 普通会员

+
+ 主营产品:数字标牌、广告机、户外广告机、户外广告机套料 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 深圳市容大彩晶科技有限公司  + 普通会员

+
+ 主营产品:液晶广告机、数字标牌、楼宇广告机、高清车载广告机 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 武汉艾德蒙科技股份有限公司  + 普通会员

+
+ 主营产品:会议平板,网络广告机,数字标牌商业显示 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 广州市傲彩机械设备有限公司  + 普通会员

+
+ 主营产品:傲彩打印机、UV平板打印机、平面UV打印机、6090打印机 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 深圳市福斯特电子有限公司  + 普通会员

+
+ 主营产品:液晶广告机 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 深圳康荣电子有限公司  + 普通会员

+
+ 主营产品:网络广告机 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 深圳市安致兰德科技有限公司  + 普通会员

+
+ 主营产品:网络广告机,多媒体信息发布系统 +
+
+ 公司地址: +
+
+ + + +
+
+
+ +
搜索排行
+
+
+
+
+
+
+
+
+
+
+ +
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/company/15/list1.html b/company/15/list1.html new file mode 100644 index 0000000..f8753be --- /dev/null +++ b/company/15/list1.html @@ -0,0 +1,549 @@ + + + + +数字标牌厂商_公司_找标牌网 + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ +
+
+
+
+
+
+
找标牌网 + +
+
+
+ +
+
+ +
+
+
+ +
+
+
+
+
行业
+ +
+ + +
+
+

+ 重庆市特驰科技有限公司  +VIP VIP会员

+
+ 主营产品:硕方、普贴、爱普生 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 深圳市君派伟业有限公司  + 普通会员

+
+ 主营产品: 机械设备、非标设备、热转印便携式标签打印机、热转印胶带、热转印碳带的研发、销售 经营电子商务;网上经营、网上贸易、网上咨询、网络商务服务; +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 浙江华源智控科技有限公司  + 普通会员

+
+ 主营产品:交通设施,雾天公路行车安全诱导装置,激光警示灯,定向喇叭,太阳能道钉,来车预警系统,声光报警器,太阳能施工假人,GPS同步边缘警示灯,太阳能爆闪灯,太阳能警示灯,太阳能移动红绿灯,太阳能回转灯,太阳能交通标志牌,太阳能导向灯,太阳能黄闪指示灯,太阳能线性诱导标志,太阳能施工标志牌,轮廓标,太阳能警示柱,便携式全天候主动警示牌,led袖标,led背心,led充电肩灯,便携式led显示屏,led箭头灯,反光雨衣 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 北京新格永发科技发展有限公司  + 普通会员

+
+ 主营产品:工业用金属标牌铭牌腐牌,丝印牌,打标机打码机的设计研发销售 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 佛山市壹捌捌广告有限公司  + 普通会员

+
+ 主营产品: led发光字,平面发光字,LED点阵发光字,LED冲孔发光字,树脂字,无边发光字,超级发光字,3D发光字,通体发光字,全彩发光字,炫彩发光字,迷你发光字,树脂发光字,特大铝板或其他金属板发光字,特大楼盘挂网发光字,LED亮化工程,港式精工字,金属烤漆字,水晶字及其他字;各类户内标识标牌,各类户外标识标牌,软膜灯箱,腐蚀丝印标识;喷绘写真,灯布喷绘,室内高精写真,户外高精写真,板材UV喷绘,展架等。 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 深圳市华创佳科技有限公司  + 普通会员

+
+ 主营产品:数字标牌、广告机、户外广告机、户外广告机套料 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 深圳市容大彩晶科技有限公司  + 普通会员

+
+ 主营产品:液晶广告机、数字标牌、楼宇广告机、高清车载广告机 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 武汉艾德蒙科技股份有限公司  + 普通会员

+
+ 主营产品:会议平板,网络广告机,数字标牌商业显示 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 广州市傲彩机械设备有限公司  + 普通会员

+
+ 主营产品:傲彩打印机、UV平板打印机、平面UV打印机、6090打印机 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 深圳市福斯特电子有限公司  + 普通会员

+
+ 主营产品:液晶广告机 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 深圳康荣电子有限公司  + 普通会员

+
+ 主营产品:网络广告机 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 深圳市安致兰德科技有限公司  + 普通会员

+
+ 主营产品:网络广告机,多媒体信息发布系统 +
+
+ 公司地址: +
+
+ + + +
+
+
+ +
搜索排行
+
+
+
+
+
+
+
+
+
+
+ +
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/company/16/index.html b/company/16/index.html new file mode 100644 index 0000000..ebb622b --- /dev/null +++ b/company/16/index.html @@ -0,0 +1,575 @@ + + + + +广告商/服务商_公司_找标牌网 + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ +
+
+
+
+
+
+
找标牌网 + +
+
+
+ +
+
+ +
+
+
+ +
+
+
+
+
行业
+ +
+ + +
+
+

+ 山东素源堂生物科技有限公司  + 普通会员

+
+ 主营产品:固体饮料 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 爱普生(中国)有限公司广州分公司  + 普通会员

+
+ 主营产品:压电写真机喷头,喷绘机喷头,写真机喷头,打印头,爱普生喷头 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 广东亚联展览股份有限公司  + 普通会员

+
+ 主营产品:机械装备、机床模具、工业自动化、机器人、印刷包装、轻工机械、机械装备、服装、食品、房地产、汽车、动漫、游戏游艺等多个领域 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 广东凯顿新材料科技有限公司  + 普通会员

+
+ 主营产品:润滑硅脂,阻尼脂,高温润滑脂,塑胶齿轮脂,塑料齿轮润滑脂,导电润滑脂,电触点润滑脂,高真空硅脂,消音润滑脂,轴承润滑脂,阀门密封润滑脂,汽车附件润滑脂,轨道润滑脂,微电机脂,风扇脂,减速机脂,食品级润滑脂,氟脂,铜膏,铁氟龙喷剂,二硫化钼喷剂,皮带防滑剂,不锈钢光亮剂 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 际华展览服务(宁波)有限公司  + 普通会员

+
+ 主营产品:一般项目:会议及展览服务:礼仪服务;企业管理咨询:信息咨询服务(不含许可类信息咨询服务):数字文化创意内容应用服务:大数据服务:项目策划与公关服务:组织文化艺术交流活动;企业形象策划:医文设计制作:广告设计、代理:广告制作:专业设计服务;国内货物运输代理:旅客票务代理:机械设备租赁:软件开发:信息技术咨询服务(除依法须经批准的项目外,凭营业执照依法自主开展经营活动)。 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 际华展览服务有限公司  + 普通会员

+
+ 主营产品:一般项目:会议及展览服务:礼仪服务;企业管理咨询:信息咨询服务(不含许可类信息咨询服务):数字文化创意内容应用服务:大数据服务:项目策划与公关服务:组织文化艺术交流活动;企业形象策划:医文设计制作:广告设计、代理:广告制作:专业设计服务;国内货物运输代理:旅客票务代理:机械设备租赁:软件开发:信息技术咨询服务(除依法须经批准的项目外,凭营业执照依法自主开展经营活动)。 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 河南大华伟业广告有限公司  + 普通会员

+
+ 主营产品:标识标牌、导视系统、灯箱、花草牌等 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 杭州艾美瑞广告设计有限公司  + 普通会员

+
+ 主营产品:广告设计,平面设计,广告制作 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 北京第欧丽标科技发展有限公司  + 普通会员

+
+ 主营产品:生产热转印打印设备;研发热转印打印设备;销售自产产品;提供自产产品的技术服务、技术咨询、技术培训。 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 广州环之球会展服务有限公司  + 普通会员

+
+ 主营产品:广州图文快印展 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 佛山市壹捌捌广告有限公司  + 普通会员

+
+ 主营产品: led发光字,平面发光字,LED点阵发光字,LED冲孔发光字,树脂字,无边发光字,超级发光字,3D发光字,通体发光字,全彩发光字,炫彩发光字,迷你发光字,树脂发光字,特大铝板或其他金属板发光字,特大楼盘挂网发光字,LED亮化工程,港式精工字,金属烤漆字,水晶字及其他字;各类户内标识标牌,各类户外标识标牌,软膜灯箱,腐蚀丝印标识;喷绘写真,灯布喷绘,室内高精写真,户外高精写真,板材UV喷绘,展架等。 +
+
+ 公司地址: +
+
+ + + +
+ +
+
+

+ 安徽中设致和会展有限公司  + 普通会员

+
+ 主营产品:策划、组织、主办、承办会议与展览会展场馆、文体场馆、商业场所运营管理;展览展示陈列工程设计与施工;装修装饰工程设计与施工;教育、娱乐、文化、体育活动的组织与承办国内广告设计、制作、代理、发布;新媒体开发与运营多媒体设计与制作文化旅游、体育健康、农业林业、信息科技项目创意策划与市场开发;商务、贸易信息咨询;市场调查;软硬件技术开发、销售互联网推广活动;互联网信息服务。(依法须经批准的项目,经相关部门批准后方可开展经营活动) +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 廊坊久升图文广告有限公司  + 普通会员

+
+ 主营产品:户外标牌、灯箱的制作;企业形象策划 +
+
+ 公司地址: +
+
+ + + +
+
+
+ +
搜索排行
+
+
+
+
+
+
+
+
+
+
+ +
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/company/16/list1.html b/company/16/list1.html new file mode 100644 index 0000000..ebb622b --- /dev/null +++ b/company/16/list1.html @@ -0,0 +1,575 @@ + + + + +广告商/服务商_公司_找标牌网 + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ +
+
+
+
+
+
+
找标牌网 + +
+
+
+ +
+
+ +
+
+
+ +
+
+
+
+
行业
+ +
+ + +
+
+

+ 山东素源堂生物科技有限公司  + 普通会员

+
+ 主营产品:固体饮料 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 爱普生(中国)有限公司广州分公司  + 普通会员

+
+ 主营产品:压电写真机喷头,喷绘机喷头,写真机喷头,打印头,爱普生喷头 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 广东亚联展览股份有限公司  + 普通会员

+
+ 主营产品:机械装备、机床模具、工业自动化、机器人、印刷包装、轻工机械、机械装备、服装、食品、房地产、汽车、动漫、游戏游艺等多个领域 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 广东凯顿新材料科技有限公司  + 普通会员

+
+ 主营产品:润滑硅脂,阻尼脂,高温润滑脂,塑胶齿轮脂,塑料齿轮润滑脂,导电润滑脂,电触点润滑脂,高真空硅脂,消音润滑脂,轴承润滑脂,阀门密封润滑脂,汽车附件润滑脂,轨道润滑脂,微电机脂,风扇脂,减速机脂,食品级润滑脂,氟脂,铜膏,铁氟龙喷剂,二硫化钼喷剂,皮带防滑剂,不锈钢光亮剂 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 际华展览服务(宁波)有限公司  + 普通会员

+
+ 主营产品:一般项目:会议及展览服务:礼仪服务;企业管理咨询:信息咨询服务(不含许可类信息咨询服务):数字文化创意内容应用服务:大数据服务:项目策划与公关服务:组织文化艺术交流活动;企业形象策划:医文设计制作:广告设计、代理:广告制作:专业设计服务;国内货物运输代理:旅客票务代理:机械设备租赁:软件开发:信息技术咨询服务(除依法须经批准的项目外,凭营业执照依法自主开展经营活动)。 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 际华展览服务有限公司  + 普通会员

+
+ 主营产品:一般项目:会议及展览服务:礼仪服务;企业管理咨询:信息咨询服务(不含许可类信息咨询服务):数字文化创意内容应用服务:大数据服务:项目策划与公关服务:组织文化艺术交流活动;企业形象策划:医文设计制作:广告设计、代理:广告制作:专业设计服务;国内货物运输代理:旅客票务代理:机械设备租赁:软件开发:信息技术咨询服务(除依法须经批准的项目外,凭营业执照依法自主开展经营活动)。 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 河南大华伟业广告有限公司  + 普通会员

+
+ 主营产品:标识标牌、导视系统、灯箱、花草牌等 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 杭州艾美瑞广告设计有限公司  + 普通会员

+
+ 主营产品:广告设计,平面设计,广告制作 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 北京第欧丽标科技发展有限公司  + 普通会员

+
+ 主营产品:生产热转印打印设备;研发热转印打印设备;销售自产产品;提供自产产品的技术服务、技术咨询、技术培训。 +
+
+ 公司地址: +
+
+ + + +
+
+
+

+ 广州环之球会展服务有限公司  + 普通会员

+
+ 主营产品:广州图文快印展 +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 佛山市壹捌捌广告有限公司  + 普通会员

+
+ 主营产品: led发光字,平面发光字,LED点阵发光字,LED冲孔发光字,树脂字,无边发光字,超级发光字,3D发光字,通体发光字,全彩发光字,炫彩发光字,迷你发光字,树脂发光字,特大铝板或其他金属板发光字,特大楼盘挂网发光字,LED亮化工程,港式精工字,金属烤漆字,水晶字及其他字;各类户内标识标牌,各类户外标识标牌,软膜灯箱,腐蚀丝印标识;喷绘写真,灯布喷绘,室内高精写真,户外高精写真,板材UV喷绘,展架等。 +
+
+ 公司地址: +
+
+ + + +
+ +
+
+

+ 安徽中设致和会展有限公司  + 普通会员

+
+ 主营产品:策划、组织、主办、承办会议与展览会展场馆、文体场馆、商业场所运营管理;展览展示陈列工程设计与施工;装修装饰工程设计与施工;教育、娱乐、文化、体育活动的组织与承办国内广告设计、制作、代理、发布;新媒体开发与运营多媒体设计与制作文化旅游、体育健康、农业林业、信息科技项目创意策划与市场开发;商务、贸易信息咨询;市场调查;软硬件技术开发、销售互联网推广活动;互联网信息服务。(依法须经批准的项目,经相关部门批准后方可开展经营活动) +
+
+ 公司地址: +
+
+ + +
+
+
+
+
+

+ 廊坊久升图文广告有限公司  + 普通会员

+
+ 主营产品:户外标牌、灯箱的制作;企业形象策划 +
+
+ 公司地址: +
+
+ + + +
+
+
+ +
搜索排行
+
+
+
+
+
+
+
+
+
+
+ +
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/company/404.php b/company/404.php new file mode 100644 index 0000000..d55b5e3 --- /dev/null +++ b/company/404.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/company/ajax.php b/company/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/company/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/company/brand/index.php b/company/brand/index.php new file mode 100644 index 0000000..d0e6537 --- /dev/null +++ b/company/brand/index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/company/buy/index.php b/company/buy/index.php new file mode 100644 index 0000000..66786b3 --- /dev/null +++ b/company/buy/index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/company/config.inc.php b/company/config.inc.php new file mode 100644 index 0000000..138aa7d --- /dev/null +++ b/company/config.inc.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/company/contact/index.php b/company/contact/index.php new file mode 100644 index 0000000..e6fa232 --- /dev/null +++ b/company/contact/index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/company/credit/index.php b/company/credit/index.php new file mode 100644 index 0000000..493b4ec --- /dev/null +++ b/company/credit/index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/company/exhibit/index.php b/company/exhibit/index.php new file mode 100644 index 0000000..7211ccc --- /dev/null +++ b/company/exhibit/index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/company/favicon.ico b/company/favicon.ico new file mode 100644 index 0000000..876981c Binary files /dev/null and b/company/favicon.ico differ diff --git a/company/guest.php b/company/guest.php new file mode 100644 index 0000000..130cd1c --- /dev/null +++ b/company/guest.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/company/home.php b/company/home.php new file mode 100644 index 0000000..25445e0 --- /dev/null +++ b/company/home.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/company/homepage/index.php b/company/homepage/index.php new file mode 100644 index 0000000..ac28f5b --- /dev/null +++ b/company/homepage/index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/company/honor/index.php b/company/honor/index.php new file mode 100644 index 0000000..32e8321 --- /dev/null +++ b/company/honor/index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/company/image/ab-hide-on.png b/company/image/ab-hide-on.png new file mode 100644 index 0000000..c305335 Binary files /dev/null and b/company/image/ab-hide-on.png differ diff --git a/company/image/ab-hide.png b/company/image/ab-hide.png new file mode 100644 index 0000000..7193715 Binary files /dev/null and b/company/image/ab-hide.png differ diff --git a/company/image/ab-play-on.png b/company/image/ab-play-on.png new file mode 100644 index 0000000..fd609a7 Binary files /dev/null and b/company/image/ab-play-on.png differ diff --git a/company/image/ab-play.png b/company/image/ab-play.png new file mode 100644 index 0000000..ffecf9a Binary files /dev/null and b/company/image/ab-play.png differ diff --git a/company/image/ab-zoom-bg.gif b/company/image/ab-zoom-bg.gif new file mode 100644 index 0000000..8f153c0 Binary files /dev/null and b/company/image/ab-zoom-bg.gif differ diff --git a/company/image/ab-zoom.png b/company/image/ab-zoom.png new file mode 100644 index 0000000..d70dd60 Binary files /dev/null and b/company/image/ab-zoom.png differ diff --git a/company/image/btn_bg.gif b/company/image/btn_bg.gif new file mode 100644 index 0000000..2359314 Binary files /dev/null and b/company/image/btn_bg.gif differ diff --git a/company/image/free_bg.gif b/company/image/free_bg.gif new file mode 100644 index 0000000..f4bbbf9 Binary files /dev/null and b/company/image/free_bg.gif differ diff --git a/company/image/homepage.gif b/company/image/homepage.gif new file mode 100644 index 0000000..98b0e8f Binary files /dev/null and b/company/image/homepage.gif differ diff --git a/company/image/ico_arrow.gif b/company/image/ico_arrow.gif new file mode 100644 index 0000000..75020d7 Binary files /dev/null and b/company/image/ico_arrow.gif differ diff --git a/company/image/more.gif b/company/image/more.gif new file mode 100644 index 0000000..a430076 Binary files /dev/null and b/company/image/more.gif differ diff --git a/company/image/nothumb.gif b/company/image/nothumb.gif new file mode 100644 index 0000000..151fe2e Binary files /dev/null and b/company/image/nothumb.gif differ diff --git a/company/image/pos.png b/company/image/pos.png new file mode 100644 index 0000000..f7f0e5a Binary files /dev/null and b/company/image/pos.png differ diff --git a/company/image/vip_bg.gif b/company/image/vip_bg.gif new file mode 100644 index 0000000..64e768d Binary files /dev/null and b/company/image/vip_bg.gif differ diff --git a/company/index.php b/company/index.php new file mode 100644 index 0000000..0e7771d --- /dev/null +++ b/company/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/company/info/index.php b/company/info/index.php new file mode 100644 index 0000000..3d39ff1 --- /dev/null +++ b/company/info/index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/company/introduce/index.php b/company/introduce/index.php new file mode 100644 index 0000000..69d4114 --- /dev/null +++ b/company/introduce/index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/company/job/index.php b/company/job/index.php new file mode 100644 index 0000000..5275690 --- /dev/null +++ b/company/job/index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/company/link/index.php b/company/link/index.php new file mode 100644 index 0000000..000fbd7 --- /dev/null +++ b/company/link/index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/company/list.php b/company/list.php new file mode 100644 index 0000000..45eac69 --- /dev/null +++ b/company/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/company/mall/index.php b/company/mall/index.php new file mode 100644 index 0000000..176b1d0 --- /dev/null +++ b/company/mall/index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/company/news.php b/company/news.php new file mode 100644 index 0000000..0c7d1c4 --- /dev/null +++ b/company/news.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/company/news/index.php b/company/news/index.php new file mode 100644 index 0000000..d93d33c --- /dev/null +++ b/company/news/index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/company/photo/index.php b/company/photo/index.php new file mode 100644 index 0000000..803db57 --- /dev/null +++ b/company/photo/index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/company/robots.txt b/company/robots.txt new file mode 100644 index 0000000..ce4c6c9 --- /dev/null +++ b/company/robots.txt @@ -0,0 +1,4 @@ +# Robots For DESTOON B2B +User-agent: * +Disallow: /image/ +Disallow: /skin/ \ No newline at end of file diff --git a/company/search.php b/company/search.php new file mode 100644 index 0000000..9ec6ab1 --- /dev/null +++ b/company/search.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/company/sell/index.php b/company/sell/index.php new file mode 100644 index 0000000..bb1b18a --- /dev/null +++ b/company/sell/index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/company/skin/blue/banner.jpg b/company/skin/blue/banner.jpg new file mode 100644 index 0000000..169778e Binary files /dev/null and b/company/skin/blue/banner.jpg differ diff --git a/company/skin/blue/mobile.css b/company/skin/blue/mobile.css new file mode 100644 index 0000000..e69de29 diff --git a/company/skin/blue/style.css b/company/skin/blue/style.css new file mode 100644 index 0000000..d049ffe --- /dev/null +++ b/company/skin/blue/style.css @@ -0,0 +1,31 @@ +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +/* global */ +body {margin:0px;font-size:12px;color:#333333;background:#FFFFFF;} +/* common */ +.m {width:1200px;margin:auto;} +.top {height:32px;line-height:32px;background:#F1F1F1;border-bottom:#CCCCCC 1px solid;width:100%;} +#top a {text-decoration:none;} +.head {height:116px;overflow:hidden;} +.head div {float:left;} +.head .logo {padding:16px 10px 0 0px;height:90px;overflow:hidden;} +.head h1 {font-size:24px;margin:32px 0 6px 0;color:#333333;filter:glow(color=#FFFFFF,strength=3);} +.head h4 {font-size:16px;margin:0;color:#333333;} + +#menu a {text-decoration:none;} +.menu {background:#03459E;height:44px;overflow:hidden;font-size:16px;} +.menu span {color:#FFFFFF;} +.menu_li {float:left;white-space:nowrap;line-height:44px;padding:0 16px;} +.menu_li:hover {background:#011E70;} +.menu_on {float:left;white-space:nowrap;line-height:44px;padding:0 16px;background:#011E70;} + +.side_head {border:#CCCCCC 1px solid;border-bottom:none;background:#EEEEEE;} +.side_head div {padding:0 16px;font-size:14px;height:44px;line-height:44px;overflow:hidden;} +.side_body {border:#CCCCCC 1px solid;border-top:none;background:#FFFFFF;padding:16px;margin:0 0 20px;overflow:hidden;} +.side_body li {background:url('../../image/ico_arrow.gif') no-repeat 4px 12px;padding:0 0 0 20px;height:32px;line-height:32px;overflow:hidden;} + +.main_head {border:#CCCCCC 1px solid;border-bottom:none;background:#EEEEEE;} +.main_head div {padding:0 16px;font-size:14px;height:44px;line-height:44px;overflow:hidden;} +.main_body {border:#CCCCCC 1px solid;border-top:none;background:#FFFFFF;padding:16px;margin:0 0 20px;overflow:hidden;} \ No newline at end of file diff --git a/company/skin/blue/thumb.gif b/company/skin/blue/thumb.gif new file mode 100644 index 0000000..a2cb8bf Binary files /dev/null and b/company/skin/blue/thumb.gif differ diff --git a/company/skin/common.css b/company/skin/common.css new file mode 100644 index 0000000..063a7c5 --- /dev/null +++ b/company/skin/common.css @@ -0,0 +1,118 @@ +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +/* global */ +* {word-break:break-all;font-family:"Microsoft Yahei",Tahoma,Verdana,Arial;-webkit-text-size-adjust:none;} +input,select,textarea {font-size:12px;padding:4px;} +img {border:none;} +ul li {list-style-type:none;} +ol li {list-style-type:decimal;} +ul,form {margin:0px;padding:0px;} +/* links */ +a:link,a:visited,a:active {color:#333333;text-decoration:none} +a:hover {color:#FF6600;} +a.w:link,a.w:visited,a.w:active{text-decoration:none;color:#FFFFFF;} +a.w:hover{text-decoration:underline;} +a.t:link,a.t:visited,a.t:active{text-decoration:none;color:#225588;} +a.t:hover{text-decoration:underline;} +a.b:link,a.b:visited,a.b:active {color:#014CCC;text-decoration:none;} +a.b:hover {color:#FF6600;} +/* show */ +.title {text-align:center;font-size:20px;font-weight:bold;line-height:48px;} +.info {margin:16px 16px 0 16px;background:#F1F1F1;line-height:48px;text-align:center;} +.content {font-size:14px;line-height:180%;padding:20px;} +.content p {margin:0 0 16px 0;} +.property {border:#E6E6E6 1px solid;background:#F6F6F6;padding:16px;margin:0 20px;} +.property li {float:left;width:30%;height:24px;line-height:24px;overflow:hidden;} +.foot {background:#F1F1F1;padding:20px;line-height:32px;} +.foot i,.top i {font-style:normal;color:#999999;padding:0 8px;} +.pos {padding:16px 16px 16px 32px;height:24px;line-height:24px;background:url('../image/pos.png') no-repeat 6px 18px;font-size:14px;} +.pos div {float:right;} +.pos i {font-style:normal;font-weight:bold;color:#444444;padding:0 6px;font-family:simsun;} +.pos em {font-style:normal;color:#999999;padding:0 10px;font-size:12px;} +.pos .f_r {font-size:12px;color:#666666;} + +.inp {border:#CCCCCC 1px solid;color:#666666;} +.sbm {height:28px;line-height:28px;border:#CCCCCC 1px solid;color:#333333;background:#EEEEEE;padding:0 10px;cursor:pointer;} +.sbm:hover {background:#DDDDDD;} +.banner {margin-top:20px;} +/* sign */ +.sign {z-index:1000;position:absolute;width:180px;height:50px;background:url('../image/vip_bg.gif') no-repeat;margin:32px 0 0 1000px;} +.sign div {padding:23px 0 0 73px;} +.sign strong {font-size:18px;color:red;} +.sign span {font-size:18px;color:red;font-weight:bold;padding:0 0 0 60px;} +/* thumb */ +.thumb {padding:16px;} +.thumb img {border:#C0C0C0 1px solid;padding:2px;} +.thumb div {width:90%;height:26px;overflow:hidden;line-height:26px;font-size:13px;margin:6px 0 6px 0;} +.thumb p {font-size:10px;color:#888888;margin:2px;} +.thumb:hover{background:#F1F1F1;} +/* album */ +#mid_pos {position:absolute;} +#mid_div {width:400px;height:300px;cursor:crosshair;border:#DDDDDD 1px solid;background:#F2F2F2;} +#zoomer {width:160px;height:120px;background:#FFFFFF url('../image/ab-zoom-bg.gif');position:absolute;z-index:6;opacity:0.5;filter:alpha(opacity=50);} +#big_div {width:560px;height:420px;border:#DDDDDD 1px solid;background:#FFFFFF;position:absolute;overflow:hidden;} +#big_pic {position:absolute;} +.tbs {width:414px;height:56px;margin:20px 0;} +.tbs img {cursor:pointer;} +.tbsl {width:32px;height:56px;float:left;} +.tbsr {width:20px;height:56px;float:left;} +.tbsm {width:350px;height:56px;float:left;overflow:hidden;} +.ab_zoom {width:30px;height:30px;background:url('../image/ab-zoom.png') no-repeat center center;position:absolute;z-index:5;margin:270px 0 0 -30px;} +.ab_play {width:48px;height:48px;border-radius:50%;background:#FFFFFF url('../image/ab-play.png') no-repeat center center;position:absolute;z-index:7;margin:-150px 0 0 176px;} +.ab_play:hover {background:#FFFFFF url('../image/ab-play-on.png') no-repeat center center;cursor:pointer;} +.ab_hide {width:30px;height:30px;background:url('../image/ab-hide.png') no-repeat center center;position:absolute;z-index:12;margin:-300px 0 0 370px;display:none;} +.ab_hide:hover {background:url('../image/ab-hide-on.png') no-repeat center center;cursor:pointer;} +.ab_video {width:400px;height:300px;border:#000000 1px solid;background:#000000;position:absolute;z-index:10;margin:-302px 0 0 0;display:none;} +.ab_im {padding:2px;margin:0 14px 0 0;border:#C0C0C0 1px solid;float:left;width:50px;height:50px;} +.ab_on {padding:2px;margin:0 14px 0 0;border:#FF6600 1px solid;float:left;width:50px;height:50px;background:#FF6600;} +/* pages */ +.pages {padding:20px 0;text-align:center;font-size:12px;} +.pages a:link,.pages a:visited,.pages a:active {background:#FFFFFF;border:#E6E6E6 1px solid;padding:6px;text-decoration:none;margin:0 6px;} +.pages a:hover {background:#F1F1F1;border:#CCCCCC 1px solid;color:#FF6600;} +.pages strong {background:#2E6AB1;padding:6px;border:#CCCCCC 1px solid;color:#FFFFFF;} +.pages_inp {border:#CCCCCC 1px solid;padding:6px;width:30px;text-align:center;color:#666666;} +.pages_btn {width:48px;background:#EEEEEE;border:#CCCCCC 1px solid;font-weight:bold;padding:6px;margin:0 6px;} +.pages label {background:#FFFFFF;border:#CCCCCC 1px solid;padding:6px;} +.pages label em {color:red;font-weight:bold;font-style:normal;} +.pages label span {font-weight:bold;} +/* comment */ +.stat {padding:15px 0 10px 0;} +.stat_p {height:10px;line-height:10px;background:#FFF7D2;font-size:1px;} +.stat_p div {height:10px;line-height:10px;background:#FFA40D;border-left:#FFA40D 2px solid;float:left;} + +.comment_sp {background:#F9FCFE;} +.comment_content {color:#333333;font-size:14px;line-height:180%;clear:both;padding:5px;} +.comment_title {height:26px;line-height:26px;color:#1B4C7A;padding:0 5px 0 5px;} +.comment_reply {padding:5px 10px 5px 10px;margin:0 5px 0 5px;line-height:180%;border:#E6E6E6 1px solid;background:#FFFFE3;} +.comment_no,.order_no {text-align:center;padding:20px;font-size:13px;} + +/* basic */ +.f_l {float:left;} +.f_r {float:right;} +.t_r {text-align:right;} +.t_c {text-align:center;} +.f_b {font-weight:bold;} +.f_n {font-weight:normal;} +.f_white {color:white;} +.f_gray {color:#666666;} +.f_orange {color:#FF6600;} +.f_red {color:#FF0000;} +.f_blue {color:#003EAA;} +.f_green {color:#2BA245;} +.f_dblue {color:#225588;} +.f_price {font-weight:bold;font-family:Arial;color:#FF6600;} +.px12 {font-size:12px;} +.px14 {font-size:14px;} +.lh18 {line-height:180%;} +.b10 {font-size:1px;height:10px;} +.pd10 {padding:10px;} +.c_b{clear:both;} +.dsn {display:none;} +.c_p {cursor:pointer;} +.highlight {color:red;} + +.btn-act {font-size:16px;width:148px;height:36px;line-height:36px;border:none;text-align:center;cursor:pointer;padding:0;-webkit-appearance:none;margin:6px 10px 0 0;} +.btn-act {background:#FF6600;border:#FF2200 1px solid;color:#FFFFFF;} +.btn-act:hover {background:#F22D00;} \ No newline at end of file diff --git a/company/skin/default/banner.jpg b/company/skin/default/banner.jpg new file mode 100644 index 0000000..0030158 Binary files /dev/null and b/company/skin/default/banner.jpg differ diff --git a/company/skin/default/mobile.css b/company/skin/default/mobile.css new file mode 100644 index 0000000..e69de29 diff --git a/company/skin/default/style.css b/company/skin/default/style.css new file mode 100644 index 0000000..1e50c3f --- /dev/null +++ b/company/skin/default/style.css @@ -0,0 +1,31 @@ +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +/* global */ +body {margin:0px;font-size:12px;color:#333333;background:#FFFFFF;} +/* common */ +.m {width:1200px;margin:auto;} +.top {height:32px;line-height:32px;background:#F1F1F1;border-bottom:#CCCCCC 1px solid;width:100%;} +#top a {text-decoration:none;} +.head {height:116px;overflow:hidden;} +.head div {float:left;} +.head .logo {padding:16px 10px 0 0px;height:90px;overflow:hidden;} +.head h1 {font-size:24px;margin:32px 0 6px 0;color:#333333;filter:glow(color=#FFFFFF,strength=3);} +.head h4 {font-size:16px;margin:0;color:#333333;} + +#menu a {text-decoration:none;} +.menu {background:#2587F4;height:44px;overflow:hidden;font-size:16px;} +.menu span {color:#FFFFFF;} +.menu_li {float:left;white-space:nowrap;line-height:44px;padding:0 16px;} +.menu_li:hover {background:#0072C6;} +.menu_on {float:left;white-space:nowrap;line-height:44px;padding:0 16px;background:#0072C6;} + +.side_head {border:#CCCCCC 1px solid;border-bottom:none;background:#EEEEEE;} +.side_head div {padding:0 16px;font-size:14px;height:44px;line-height:44px;overflow:hidden;} +.side_body {border:#CCCCCC 1px solid;border-top:none;background:#FFFFFF;padding:16px;margin:0 0 20px;overflow:hidden;} +.side_body li {background:url('../../image/ico_arrow.gif') no-repeat 4px 12px;padding:0 0 0 20px;height:32px;line-height:32px;overflow:hidden;} + +.main_head {border:#CCCCCC 1px solid;border-bottom:none;background:#EEEEEE;} +.main_head div {padding:0 16px;font-size:14px;height:44px;line-height:44px;overflow:hidden;} +.main_body {border:#CCCCCC 1px solid;border-top:none;background:#FFFFFF;padding:16px;margin:0 0 20px;overflow:hidden;} \ No newline at end of file diff --git a/company/skin/default/thumb.gif b/company/skin/default/thumb.gif new file mode 100644 index 0000000..814c779 Binary files /dev/null and b/company/skin/default/thumb.gif differ diff --git a/company/skin/green/banner.jpg b/company/skin/green/banner.jpg new file mode 100644 index 0000000..a762bb1 Binary files /dev/null and b/company/skin/green/banner.jpg differ diff --git a/company/skin/green/mobile.css b/company/skin/green/mobile.css new file mode 100644 index 0000000..e69de29 diff --git a/company/skin/green/style.css b/company/skin/green/style.css new file mode 100644 index 0000000..ceb0e01 --- /dev/null +++ b/company/skin/green/style.css @@ -0,0 +1,31 @@ +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +/* global */ +body {margin:0px;font-size:12px;color:#333333;background:#FFFFFF;} +/* common */ +.m {width:1200px;margin:auto;} +.top {height:32px;line-height:32px;background:#F1F1F1;border-bottom:#CCCCCC 1px solid;width:100%;} +#top a {text-decoration:none;} +.head {height:116px;overflow:hidden;} +.head div {float:left;} +.head .logo {padding:16px 10px 0 0px;height:90px;overflow:hidden;} +.head h1 {font-size:24px;margin:32px 0 6px 0;color:#333333;filter:glow(color=#FFFFFF,strength=3);} +.head h4 {font-size:16px;margin:0;color:#333333;} + +#menu a {text-decoration:none;} +.menu {background:#09BB07;height:44px;overflow:hidden;font-size:16px;} +.menu span {color:#FFFFFF;} +.menu_li {float:left;white-space:nowrap;line-height:44px;padding:0 16px;} +.menu_li:hover {background:#039902;} +.menu_on {float:left;white-space:nowrap;line-height:44px;padding:0 16px;background:#039902;} + +.side_head {border:#CCCCCC 1px solid;border-bottom:none;background:#EEEEEE;} +.side_head div {padding:0 16px;font-size:14px;height:44px;line-height:44px;overflow:hidden;} +.side_body {border:#CCCCCC 1px solid;border-top:none;background:#FFFFFF;padding:16px;margin:0 0 20px;overflow:hidden;} +.side_body li {background:url('../../image/ico_arrow.gif') no-repeat 4px 12px;padding:0 0 0 20px;height:32px;line-height:32px;overflow:hidden;} + +.main_head {border:#CCCCCC 1px solid;border-bottom:none;background:#EEEEEE;} +.main_head div {padding:0 16px;font-size:14px;height:44px;line-height:44px;overflow:hidden;} +.main_body {border:#CCCCCC 1px solid;border-top:none;background:#FFFFFF;padding:16px;margin:0 0 20px;overflow:hidden;} \ No newline at end of file diff --git a/company/skin/green/thumb.gif b/company/skin/green/thumb.gif new file mode 100644 index 0000000..60ee51b Binary files /dev/null and b/company/skin/green/thumb.gif differ diff --git a/company/skin/mobile.css b/company/skin/mobile.css new file mode 100644 index 0000000..b966dce --- /dev/null +++ b/company/skin/mobile.css @@ -0,0 +1 @@ +/* Mobile CSS*/ \ No newline at end of file diff --git a/company/skin/orange/banner.jpg b/company/skin/orange/banner.jpg new file mode 100644 index 0000000..7684999 Binary files /dev/null and b/company/skin/orange/banner.jpg differ diff --git a/company/skin/orange/mobile.css b/company/skin/orange/mobile.css new file mode 100644 index 0000000..e69de29 diff --git a/company/skin/orange/style.css b/company/skin/orange/style.css new file mode 100644 index 0000000..ac0060f --- /dev/null +++ b/company/skin/orange/style.css @@ -0,0 +1,31 @@ +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +/* global */ +body {margin:0px;font-size:12px;color:#333333;background:#FFFFFF;} +/* common */ +.m {width:1200px;margin:auto;} +.top {height:32px;line-height:32px;background:#F1F1F1;border-bottom:#CCCCCC 1px solid;width:100%;} +#top a {text-decoration:none;} +.head {height:116px;overflow:hidden;} +.head div {float:left;} +.head .logo {padding:16px 10px 0 0px;height:90px;overflow:hidden;} +.head h1 {font-size:24px;margin:32px 0 6px 0;color:#333333;filter:glow(color=#FFFFFF,strength=3);} +.head h4 {font-size:16px;margin:0;color:#333333;} + +#menu a {text-decoration:none;} +.menu {background:#FF7C00;height:44px;overflow:hidden;font-size:16px;} +.menu span {color:#FFFFFF;} +.menu_li {float:left;white-space:nowrap;line-height:44px;padding:0 16px;} +.menu_li:hover {background:#FF6600;} +.menu_on {float:left;white-space:nowrap;line-height:44px;padding:0 16px;background:#FF6600;} + +.side_head {border:#CCCCCC 1px solid;border-bottom:none;background:#EEEEEE;} +.side_head div {padding:0 16px;font-size:14px;height:44px;line-height:44px;overflow:hidden;} +.side_body {border:#CCCCCC 1px solid;border-top:none;background:#FFFFFF;padding:16px;margin:0 0 20px;overflow:hidden;} +.side_body li {background:url('../../image/ico_arrow.gif') no-repeat 4px 12px;padding:0 0 0 20px;height:32px;line-height:32px;overflow:hidden;} + +.main_head {border:#CCCCCC 1px solid;border-bottom:none;background:#EEEEEE;} +.main_head div {padding:0 16px;font-size:14px;height:44px;line-height:44px;overflow:hidden;} +.main_body {border:#CCCCCC 1px solid;border-top:none;background:#FFFFFF;padding:16px;margin:0 0 20px;overflow:hidden;} \ No newline at end of file diff --git a/company/skin/orange/thumb.gif b/company/skin/orange/thumb.gif new file mode 100644 index 0000000..c2dd049 Binary files /dev/null and b/company/skin/orange/thumb.gif differ diff --git a/company/skin/purple/banner.jpg b/company/skin/purple/banner.jpg new file mode 100644 index 0000000..29dcf71 Binary files /dev/null and b/company/skin/purple/banner.jpg differ diff --git a/company/skin/purple/mobile.css b/company/skin/purple/mobile.css new file mode 100644 index 0000000..e69de29 diff --git a/company/skin/purple/style.css b/company/skin/purple/style.css new file mode 100644 index 0000000..7162228 --- /dev/null +++ b/company/skin/purple/style.css @@ -0,0 +1,31 @@ +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +/* global */ +body {margin:0px;font-size:12px;color:#333333;background:#FFFFFF;} +/* common */ +.m {width:1200px;margin:auto;} +.top {height:32px;line-height:32px;background:#F1F1F1;border-bottom:#CCCCCC 1px solid;width:100%;} +#top a {text-decoration:none;} +.head {height:116px;overflow:hidden;} +.head div {float:left;} +.head .logo {padding:16px 10px 0 0px;height:90px;overflow:hidden;} +.head h1 {font-size:24px;margin:32px 0 6px 0;color:#333333;filter:glow(color=#FFFFFF,strength=3);} +.head h4 {font-size:16px;margin:0;color:#333333;} + +#menu a {text-decoration:none;} +.menu {background:#9A1DA3;height:44px;overflow:hidden;font-size:16px;} +.menu span {color:#FFFFFF;} +.menu_li {float:left;white-space:nowrap;line-height:44px;padding:0 16px;} +.menu_li:hover {background:#410665;} +.menu_on {float:left;white-space:nowrap;line-height:44px;padding:0 16px;background:#410665;} + +.side_head {border:#CCCCCC 1px solid;border-bottom:none;background:#EEEEEE;} +.side_head div {padding:0 16px;font-size:14px;height:44px;line-height:44px;overflow:hidden;} +.side_body {border:#CCCCCC 1px solid;border-top:none;background:#FFFFFF;padding:16px;margin:0 0 20px;overflow:hidden;} +.side_body li {background:url('../../image/ico_arrow.gif') no-repeat 4px 12px;padding:0 0 0 20px;height:32px;line-height:32px;overflow:hidden;} + +.main_head {border:#CCCCCC 1px solid;border-bottom:none;background:#EEEEEE;} +.main_head div {padding:0 16px;font-size:14px;height:44px;line-height:44px;overflow:hidden;} +.main_body {border:#CCCCCC 1px solid;border-top:none;background:#FFFFFF;padding:16px;margin:0 0 20px;overflow:hidden;} \ No newline at end of file diff --git a/company/skin/purple/thumb.gif b/company/skin/purple/thumb.gif new file mode 100644 index 0000000..047a645 Binary files /dev/null and b/company/skin/purple/thumb.gif differ diff --git a/company/tour.php b/company/tour.php new file mode 100644 index 0000000..7d3a72f --- /dev/null +++ b/company/tour.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/company/video/index.php b/company/video/index.php new file mode 100644 index 0000000..3138e66 --- /dev/null +++ b/company/video/index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/config.inc.php b/config.inc.php new file mode 100644 index 0000000..f0d08b1 --- /dev/null +++ b/config.inc.php @@ -0,0 +1,47 @@ + \ No newline at end of file diff --git a/down/ajax.php b/down/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/down/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/down/config.inc.php b/down/config.inc.php new file mode 100644 index 0000000..4f0a57a --- /dev/null +++ b/down/config.inc.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/down/down.php b/down/down.php new file mode 100644 index 0000000..6133a18 --- /dev/null +++ b/down/down.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/down/index.php b/down/index.php new file mode 100644 index 0000000..e140d81 --- /dev/null +++ b/down/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/down/list.php b/down/list.php new file mode 100644 index 0000000..38e0a80 --- /dev/null +++ b/down/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/down/search.php b/down/search.php new file mode 100644 index 0000000..6fee9ad --- /dev/null +++ b/down/search.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/down/show.php b/down/show.php new file mode 100644 index 0000000..ed1977d --- /dev/null +++ b/down/show.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/exhibit/ajax.php b/exhibit/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/exhibit/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/exhibit/config.inc.php b/exhibit/config.inc.php new file mode 100644 index 0000000..f1063cb --- /dev/null +++ b/exhibit/config.inc.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/exhibit/index.html b/exhibit/index.html new file mode 100644 index 0000000..4514d38 --- /dev/null +++ b/exhibit/index.html @@ -0,0 +1,533 @@ + + + + +标识标牌展会,广告展会,数字标牌展会_找标牌网 + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ +
+
+
+
+
+
+
找标牌网 + +
+
+
+ +
+
+ +
+
+ + +
+
+
NEW
即将开展
+
+
+

2023中国(北京)国际数字标牌展览会

+

主办单位:2023中国(北京)国际数字标牌展览会

+

举办时间:2023-10-19至2023-10-21

+

举办地点:中国国际展览中心(朝阳馆)

+

已结束

+
+
查看详情
+
+
+
+ +
+
+
+
+
  • +国内展会 +
  • +
    +
    +
    +
    +
    2026中山工业博览会
    +
    +

    2026中山工业博览会

    +
    举办时间:2026-06-25至2026-08-27
    +
    举办地点:中山市东区博览中心综合展厅2号门
    +
    距离开幕148天 +
    +
    + +
    +
    +
    +
    2026第十四届江门先进制造业博览会
    +
    +

    2026第十四届江门先进制造业博览会

    +
    举办时间:2026-04-23至2026-04-25
    +
    举办地点:江门市蓬江区滨江新区天沙河大道68号
    +
    距离开幕85天 +
    +
    + +
    +
    +
    +
    2026第12届广州国际数码印刷、图文快印展览会
    +
    +

    2026第12届广州国际数码印刷、图文快印展览会

    +
    举办时间:2026-04-09至2026-04-11
    +
    举办地点:广州琶洲广州国际采购中心展览馆
    +
    距离开幕71天 +
    +
    + +
    +
    +
    +
    邀请函|2025惠州国际工业博览会邀您共话智造未来
    +
    +

    邀请函|2025惠州国际工业博览会邀您共话智造未来

    +
    举办时间:2025-12-04至2025-12-06
    +
    举办地点:惠州会展中心
    +
    +已结束 +
    + +
    +
    +
    +
    2025中山小榄轻工机械展二十周年盛典,展位预定火爆进行中
    +
    +

    2025中山小榄轻工机械展二十周年盛典,展位预定火爆进行中

    +
    举办时间:2025-10-23至2025-10-25
    +
    举办地点:中山小榄旧车站
    +
    +已结束 +
    + +
    +
    +
    +
    2024第10届广州国际数码印刷、图文快印展览会
    +
    +

    2024第10届广州国际数码印刷、图文快印展览会

    +
    举办时间:2024-04-12至2024-04-14
    +
    举办地点:广州琶洲广州国际采购中心展览馆
    +
    +已结束 +
    + +
    +
    +
    +
    +
    +

    2023中国(北京)国际数字标牌展览会

    +
    举办时间:2023-10-19至2023-10-21
    +
    举办地点:中国国际展览中心(朝阳馆)
    +
    +已结束 +
    + +
    +
    +
    +
    DIC EXPO 2022国际显示技术及应用创新展
    +
    +

    DIC EXPO 2022国际显示技术及应用创新展

    +
    举办时间:2022-07-06至2022-07-08
    +
    举办地点:上海市浦东新区龙阳路2345号
    +
    +已结束 +
    + +
    +
    +
    +
    2022第五届深圳(国际)智慧显示系统产业应用博览会
    +
    +

    2022第五届深圳(国际)智慧显示系统产业应用博览会

    +
    举办时间:2022-09-15至2022-09-17
    +
    举办地点:深圳市福田中心区福华三路, 建国路8号
    +
    +已结束 +
    + +
    +
    +
    +
    2022深圳国际全触与显示展(2022深圳全触展)
    +
    +

    2022深圳国际全触与显示展(2022深圳全触展)

    +
    举办时间:2022-10-12至2022-10-14
    +
    举办地点:深圳市宝安区福海街道展城路1号
    +
    +已结束 +
    + +
    +
    +
    +
    + +
    + +
    + +
    + +
    +
    + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    + + +
    + + + + \ No newline at end of file diff --git a/exhibit/index.php b/exhibit/index.php new file mode 100644 index 0000000..0bd19d5 --- /dev/null +++ b/exhibit/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/exhibit/list.php b/exhibit/list.php new file mode 100644 index 0000000..9205749 --- /dev/null +++ b/exhibit/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/exhibit/search.php b/exhibit/search.php new file mode 100644 index 0000000..51b7fb4 --- /dev/null +++ b/exhibit/search.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/exhibit/show.php b/exhibit/show.php new file mode 100644 index 0000000..60a4d28 --- /dev/null +++ b/exhibit/show.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/exhibit/sign.php b/exhibit/sign.php new file mode 100644 index 0000000..a604d5d --- /dev/null +++ b/exhibit/sign.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/exhibit/zhanhui/index.html b/exhibit/zhanhui/index.html new file mode 100644 index 0000000..4a801df --- /dev/null +++ b/exhibit/zhanhui/index.html @@ -0,0 +1,461 @@ + + + + +标牌行业展会_找标牌网 + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    找标牌网 + +
    +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    行业
    +
    + +
    +
    + +
    +
    月份
    + +
    + +
    +
    2026中山工业博览会
    +
    +

    2026中山工业博览会

    +
    举办时间:2026-06-25至2026-08-27
    +
    举办地点:中山市东区博览中心综合展厅2号门
    +
    距离开幕148天 +
    +
    + +
    +
    +
    +
    2026第十四届江门先进制造业博览会
    +
    +

    2026第十四届江门先进制造业博览会

    +
    举办时间:2026-04-23至2026-04-25
    +
    举办地点:江门市蓬江区滨江新区天沙河大道68号
    +
    距离开幕85天 +
    +
    + +
    +
    +
    +
    2026第12届广州国际数码印刷、图文快印展览会
    +
    +

    2026第12届广州国际数码印刷、图文快印展览会

    +
    举办时间:2026-04-09至2026-04-11
    +
    举办地点:广州琶洲广州国际采购中心展览馆
    +
    距离开幕71天 +
    +
    + +
    +
    +
    +
    邀请函|2025惠州国际工业博览会邀您共话智造未来
    +
    +

    邀请函|2025惠州国际工业博览会邀您共话智造未来

    +
    举办时间:2025-12-04至2025-12-06
    +
    举办地点:惠州会展中心
    +
    +已结束 +
    + +
    +
    +
    +
    2025中山小榄轻工机械展二十周年盛典,展位预定火爆进行中
    +
    +

    2025中山小榄轻工机械展二十周年盛典,展位预定火爆进行中

    +
    举办时间:2025-10-23至2025-10-25
    +
    举办地点:中山小榄旧车站
    +
    +已结束 +
    + +
    +
    +
    +
    2024第10届广州国际数码印刷、图文快印展览会
    +
    +

    2024第10届广州国际数码印刷、图文快印展览会

    +
    举办时间:2024-04-12至2024-04-14
    +
    举办地点:广州琶洲广州国际采购中心展览馆
    +
    +已结束 +
    + +
    +
    +
    +
    +
    +

    2023中国(北京)国际数字标牌展览会

    +
    举办时间:2023-10-19至2023-10-21
    +
    举办地点:中国国际展览中心(朝阳馆)
    +
    +已结束 +
    + +
    +
    +
    +
    DIC EXPO 2022国际显示技术及应用创新展
    +
    +

    DIC EXPO 2022国际显示技术及应用创新展

    +
    举办时间:2022-07-06至2022-07-08
    +
    举办地点:上海市浦东新区龙阳路2345号
    +
    +已结束 +
    + +
    +
    +
    +
    2022第五届深圳(国际)智慧显示系统产业应用博览会
    +
    +

    2022第五届深圳(国际)智慧显示系统产业应用博览会

    +
    举办时间:2022-09-15至2022-09-17
    +
    举办地点:深圳市福田中心区福华三路, 建国路8号
    +
    +已结束 +
    + +
    +
    +
    +
    2022深圳国际全触与显示展(2022深圳全触展)
    +
    +

    2022深圳国际全触与显示展(2022深圳全触展)

    +
    举办时间:2022-10-12至2022-10-14
    +
    举办地点:深圳市宝安区福海街道展城路1号
    +
    +已结束 +
    + +
    +
    +
     «上一页   1   2   下一页»   共16条/2页 
    +
    + +
    搜索排行
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + + +
    + + + + \ No newline at end of file diff --git a/exhibit/zhanhui/list1.html b/exhibit/zhanhui/list1.html new file mode 100644 index 0000000..4a801df --- /dev/null +++ b/exhibit/zhanhui/list1.html @@ -0,0 +1,461 @@ + + + + +标牌行业展会_找标牌网 + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    找标牌网 + +
    +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    行业
    +
    + +
    +
    + +
    +
    月份
    + +
    + +
    +
    2026中山工业博览会
    +
    +

    2026中山工业博览会

    +
    举办时间:2026-06-25至2026-08-27
    +
    举办地点:中山市东区博览中心综合展厅2号门
    +
    距离开幕148天 +
    +
    + +
    +
    +
    +
    2026第十四届江门先进制造业博览会
    +
    +

    2026第十四届江门先进制造业博览会

    +
    举办时间:2026-04-23至2026-04-25
    +
    举办地点:江门市蓬江区滨江新区天沙河大道68号
    +
    距离开幕85天 +
    +
    + +
    +
    +
    +
    2026第12届广州国际数码印刷、图文快印展览会
    +
    +

    2026第12届广州国际数码印刷、图文快印展览会

    +
    举办时间:2026-04-09至2026-04-11
    +
    举办地点:广州琶洲广州国际采购中心展览馆
    +
    距离开幕71天 +
    +
    + +
    +
    +
    +
    邀请函|2025惠州国际工业博览会邀您共话智造未来
    +
    +

    邀请函|2025惠州国际工业博览会邀您共话智造未来

    +
    举办时间:2025-12-04至2025-12-06
    +
    举办地点:惠州会展中心
    +
    +已结束 +
    + +
    +
    +
    +
    2025中山小榄轻工机械展二十周年盛典,展位预定火爆进行中
    +
    +

    2025中山小榄轻工机械展二十周年盛典,展位预定火爆进行中

    +
    举办时间:2025-10-23至2025-10-25
    +
    举办地点:中山小榄旧车站
    +
    +已结束 +
    + +
    +
    +
    +
    2024第10届广州国际数码印刷、图文快印展览会
    +
    +

    2024第10届广州国际数码印刷、图文快印展览会

    +
    举办时间:2024-04-12至2024-04-14
    +
    举办地点:广州琶洲广州国际采购中心展览馆
    +
    +已结束 +
    + +
    +
    +
    +
    +
    +

    2023中国(北京)国际数字标牌展览会

    +
    举办时间:2023-10-19至2023-10-21
    +
    举办地点:中国国际展览中心(朝阳馆)
    +
    +已结束 +
    + +
    +
    +
    +
    DIC EXPO 2022国际显示技术及应用创新展
    +
    +

    DIC EXPO 2022国际显示技术及应用创新展

    +
    举办时间:2022-07-06至2022-07-08
    +
    举办地点:上海市浦东新区龙阳路2345号
    +
    +已结束 +
    + +
    +
    +
    +
    2022第五届深圳(国际)智慧显示系统产业应用博览会
    +
    +

    2022第五届深圳(国际)智慧显示系统产业应用博览会

    +
    举办时间:2022-09-15至2022-09-17
    +
    举办地点:深圳市福田中心区福华三路, 建国路8号
    +
    +已结束 +
    + +
    +
    +
    +
    2022深圳国际全触与显示展(2022深圳全触展)
    +
    +

    2022深圳国际全触与显示展(2022深圳全触展)

    +
    举办时间:2022-10-12至2022-10-14
    +
    举办地点:深圳市宝安区福海街道展城路1号
    +
    +已结束 +
    + +
    +
    +
     «上一页   1   2   下一页»   共16条/2页 
    +
    + +
    搜索排行
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + + +
    + + + + \ No newline at end of file diff --git a/exhibit/zhanhui/list2.html b/exhibit/zhanhui/list2.html new file mode 100644 index 0000000..4ba43bf --- /dev/null +++ b/exhibit/zhanhui/list2.html @@ -0,0 +1,405 @@ + + + + +标牌行业展会_找标牌网 + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    找标牌网 + +
    +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    行业
    +
    + +
    +
    + +
    +
    月份
    + +
    + +
    +
    2022中国(南京)标识产业博览会
    +
    +

    2022中国(南京)标识产业博览会

    +
    举办时间:2022-05-20至2022-05-22
    +
    举办地点:江苏省南京市白龙江西街5号(北门)
    +
    +已结束 +
    + +
    +
    +
    +
    ISLE国际智慧显示及系统集成展、国际标识及LED展
    +
    +

    ISLE国际智慧显示及系统集成展、国际标识及LED展

    +
    举办时间:2022-08-04至2022-08-06
    +
    举办地点:深圳市宝安区福海街道展城路1号
    +
    +已结束 +
    + +
    +
    +
    +
    2022第三十届上海国际广告技术设备展览会
    +
    +

    2022第三十届上海国际广告技术设备展览会

    +
    举办时间:2022-07-19至2022-07-22
    +
    举办地点:上海市青浦区崧泽大道333号(展馆北门)
    +
    +已结束 +
    + +
    +
    +
    +
    2022杭州数字标识及显示技术展览会
    +
    +

    2022杭州数字标识及显示技术展览会

    +
    举办时间:2022-05-12至2022-05-14
    +
    举办地点:杭州市滨江区长江路336号
    +
    +已结束 +
    + +
    +
    +
    +
    2022上海国际数字标牌展览会
    +
    +

    2022上海国际数字标牌展览会

    +
    举办时间:2022-09-06至2022-09-08
    +
    举办地点:浦东新区龙阳路2345号
    +
    +已结束 +
    + +
    +
    +
    +
    +
    +

    2022西宁国际广告节

    +
    举办时间:2022-05-14至2022-05-16
    +
    举办地点:青海省西宁市城中区南川东路
    +
    +已结束 +
    + +
    +
    +
     «上一页   1   2   下一页»   共16条/2页 
    +
    + +
    搜索排行
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + + +
    + + + + \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..f2dd26b Binary files /dev/null and b/favicon.ico differ diff --git a/feed/ajax.php b/feed/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/feed/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/feed/index.php b/feed/index.php new file mode 100644 index 0000000..07d2161 --- /dev/null +++ b/feed/index.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/feed/rss.php b/feed/rss.php new file mode 100644 index 0000000..96e3424 --- /dev/null +++ b/feed/rss.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/form/ajax.php b/form/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/form/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/form/index.php b/form/index.php new file mode 100644 index 0000000..b88b9dc --- /dev/null +++ b/form/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/form/list.php b/form/list.php new file mode 100644 index 0000000..b88b9dc --- /dev/null +++ b/form/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/form/show.php b/form/show.php new file mode 100644 index 0000000..b88b9dc --- /dev/null +++ b/form/show.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/gift/index.php b/gift/index.php new file mode 100644 index 0000000..3f86b81 --- /dev/null +++ b/gift/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/gift/list.php b/gift/list.php new file mode 100644 index 0000000..3f86b81 --- /dev/null +++ b/gift/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/gift/show.php b/gift/show.php new file mode 100644 index 0000000..3f86b81 --- /dev/null +++ b/gift/show.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/group/ajax.php b/group/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/group/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/group/buy.php b/group/buy.php new file mode 100644 index 0000000..a1bbdd8 --- /dev/null +++ b/group/buy.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/group/config.inc.php b/group/config.inc.php new file mode 100644 index 0000000..be4664a --- /dev/null +++ b/group/config.inc.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/group/index.php b/group/index.php new file mode 100644 index 0000000..11d8224 --- /dev/null +++ b/group/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/group/list.php b/group/list.php new file mode 100644 index 0000000..d5ef061 --- /dev/null +++ b/group/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/group/search.php b/group/search.php new file mode 100644 index 0000000..e6f9053 --- /dev/null +++ b/group/search.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/group/show.php b/group/show.php new file mode 100644 index 0000000..1fc6ce7 --- /dev/null +++ b/group/show.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/guestbook/ajax.php b/guestbook/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/guestbook/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/guestbook/index.php b/guestbook/index.php new file mode 100644 index 0000000..efeb407 --- /dev/null +++ b/guestbook/index.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/include/403.inc.php b/include/403.inc.php new file mode 100644 index 0000000..8021b36 --- /dev/null +++ b/include/403.inc.php @@ -0,0 +1,6 @@ +without_permission'); +exit(include template('403', 'message')); +?> \ No newline at end of file diff --git a/include/404.inc.php b/include/404.inc.php new file mode 100644 index 0000000..71ebd86 --- /dev/null +++ b/include/404.inc.php @@ -0,0 +1,6 @@ +item_not_exists' : 'message->cate_not_exists'); +exit(include template($itemid ? 'show-notfound' : 'list-notfound', 'message')); +?> \ No newline at end of file diff --git a/include/admin.func.php b/include/admin.func.php new file mode 100644 index 0000000..9363644 --- /dev/null +++ b/include/admin.func.php @@ -0,0 +1,372 @@ + $sid && $fid < $tid) { + $p = dround(($fid-$sid)*100/($tid-$sid), 0, true); + if($p > 100) $p = 100; + if($p < 1) $p = 1; + $p = $p.'%'; + } else { + $p = '100%'; + } + return '
     
    '.$p.'
    '; +} + +function show_menu($menus = array()) { + global $moduleid, $mid, $module, $file, $action, $_admin; + $menu = ''; + foreach($menus as $id=>$m) { + if(isset($m[1])) { + $extend = isset($m[2]) ? $m[2] : ''; + $menu .= ''.$m[0].''; + } else { + $class = $id == 0 ? 'tab_on' : 'tab'; + $menu .= ''.$m[0].''; + } + } + include DT_ROOT.'/admin/template/menu.tpl.php'; +} + +function update_category($CAT) { + global $DT; + $linkurl = listurl($CAT); + if($DT['index']) $linkurl = str_replace($DT['index'].'.'.$DT['file_ext'], '', $linkurl); + DB::query("UPDATE ".DT_PRE."category SET linkurl='$linkurl' WHERE catid=".$CAT['catid']); +} + +function get_setting($item) { + $setting = array(); + $query = DB::query("SELECT * FROM ".DT_PRE."setting WHERE item='$item'"); + while($r = DB::fetch_array($query)) { + $setting[$r['item_key']] = $r['item_value']; + } + return $setting; +} + +function fetch_url($url) { + $fetch = array(); + $tmp = parse_url($url); + $domain = $tmp['host']; + $r = DB::get_one("SELECT * FROM ".DT_PRE."fetch WHERE domain='$domain' ORDER BY edittime DESC"); + if($r) { + $content = file_get($url); + if($content) { + $content = convert($content, $r['encode'], DT_CHARSET); + preg_match("/(.*)<\/title>/isU", $content, $m); + if(isset($m[1])) $fetch['title'] = trim($r['title'] ? str_replace($r['title'], '', $m[1]) : $m[1]); + preg_match("/<meta[\s]+name=['\"]description['\"] content=['\"](.*)['\"]/isU", $content, $m); + if(isset($m[1])) $fetch['introduce'] = $m[1]; + list($f, $t) = explode('[content]', $r['content']); + if($f && $t) { + $s = strpos($content, $f); + if($s !== false) { + $e = strpos($content, $t, $s); + if($e !== false && $e > $s) { + $fetch['content'] = substr($content, $s + strlen($f), $e - $s - strlen($f)); + } + } + } + } + } + return $fetch; +} + +function admin_log($force = 0) { + global $DT, $DT_QST, $moduleid, $file, $action, $_username; + if($force) $DT['admin_log'] = 2; + if(!$DT['admin_log'] || !$DT_QST || ($moduleid == 1 && $file == 'index')) return false; + if($DT['admin_log'] == 2 || ($DT['admin_log'] == 1 && ($file == 'setting' || in_array($action, array('delete', 'edit', 'move', 'clear', 'add'))))) { + if(strpos($DT_QST, 'file=log') !== false) return false; + $fpos = strpos($DT_QST, '&forward'); + if($fpos) $DT_QST = substr($DT_QST, 0, $fpos); + $logstring = get_cookie('logstring'); + $md5string = md5($DT_QST); + if($md5string == $logstring) return false; + DB::query("INSERT INTO ".DT_PRE."admin_log(qstring,username,ip,logtime) VALUES('$DT_QST','$_username','".DT_IP."','".DT_TIME."')"); + set_cookie('logstring', $md5string); + } +} + +function admin_online() { + global $DT, $DT_QST, $moduleid, $_username; + if(!$DT['admin_online'] || !$_username) return false; + $qstring = $DT_QST; + $fpos = strpos($qstring, '&forward'); + if($fpos) $qstring = substr($qstring, 0, $fpos); + $qstring = preg_replace("/rand=([0-9]{1,})\&/", "", $qstring); + DB::query("REPLACE INTO ".DT_PRE."admin_online (sid,username,ip,moduleid,qstring,lasttime) VALUES ('".session_id()."','$_username','".DT_IP."','$moduleid','$qstring','".DT_TIME."')"); + $lastime = DT_TIME - $DT['online']; + DB::query("DELETE FROM ".DT_PRE."admin_online WHERE lasttime<$lastime"); +} + +function admin_check() { + global $CFG, $_admin, $_userid, $moduleid, $file, $action, $catid, $_catids, $_childs; + if(!check_name($file)) return false; + if(in_array($file, array('logout', 'cloud', 'mymenu', 'search', 'ip', 'mobile', 'history'))) return true;//All user + if($moduleid == 1 && $file == 'index') return true; + if(is_founder($_userid)) return true;//Founder + if($_admin == 2) { + $R = cache_read('right-'.$_userid.'.php'); + if(!$R) return false; + if(!isset($R[$moduleid])) return false; + if(!$R[$moduleid]) return true;//Module admin + if(!isset($R[$moduleid][$file])) return false; + if(!$R[$moduleid][$file]) return true; + if($action && $R[$moduleid][$file]['action'] && !in_array($action, $R[$moduleid][$file]['action'])) return false; + if(!$R[$moduleid][$file]['catid']) return true; + $_catids = implode(',', $R[$moduleid][$file]['catid']); + if($catid) { + if(in_array($catid, $R[$moduleid][$file]['catid'])) return true; + //Childs + $result = DB::query("SELECT catid,child,arrchildid FROM ".DT_PRE."category WHERE moduleid=$moduleid AND catid IN ($_catids)"); + while($r = DB::fetch_array($result)) { + $_childs .= ','.($r['child'] ? $r['arrchildid'] : $r['catid']); + } + if(strpos($_childs.',', ','.$catid.',') !== false) return true; + return false; + } + } else if($_admin == 1) { + if(in_array($file, array('admin', 'setting', 'module', 'area', 'database', 'template', 'skin', 'log', 'update', 'group', 'fields', 'loginlog'))) return false;//Founder || Common Admin Only + } + return true; +} + +function admin_notice() { + global $DT, $MODULE, $moduleid, $file, $itemid, $action, $reason, $msg, $eml, $sms, $wec; + if(!is_array($itemid)) return; + if(count($itemid) == 0) return; + $S = array( + 'delete' => '已经被删除', + 'check' => '已经通过审核', + 'reject' => '没有通过审核', + 'onsale' => '已经上架', + 'unsale' => '已经下架', + ); + $N = array( + 'honor' => '荣誉资质', + 'news' => '公司新闻', + 'page' => '公司单页', + 'link' => '友情链接', + ); + if(!isset($S[$action])) return; + if($moduleid > 4) { + $table = get_table($moduleid); + $name = $MODULE[$moduleid]['name']; + if($MODULE[$moduleid]['module'] == 'job') { + if($file == 'resume') { + $table = DT_PRE.'job_'.$file.'_'.$moduleid; + $name = '简历'; + } else { + $name = '招聘'; + } + } else if($MODULE[$moduleid]['module'] == 'mall') { + $name = '商品'; + } + } else if(isset($N[$file])) { + $table = DT_PRE.$file; + $name = $N[$file]; + } else { + return; + } + if($reason == '操作原因') $reason = ''; + $msg = isset($msg) ? 1 : 0; + if(strlen($reason) > 2) $msg = 1; + $eml = isset($eml) ? 1 : 0; + if($msg == 0 && $eml == 0) return; + $sms = isset($sms) ? 1 : 0; + $wec = isset($wec) ? 1 : 0; + if($msg == 0) $sms = $wec = 0; + $result = DB::query("SELECT itemid,title,username,linkurl FROM {$table} WHERE itemid IN (".implode(',', $itemid).")"); + while($r = DB::fetch_array($result)) { + $username = $r['username']; + if(!check_name($username)) continue; + $title = $r['title']; + $linkurl = strpos($r['linkurl'], '://') === false ? $MODULE[$moduleid]['linkurl'].$r['linkurl'] : $r['linkurl']; + $subject = '您发布的['.$name.']'.$title.'(ID:'.$r['itemid'].')'.$S[$action]; + $body = '尊敬的会员:<br/>您发布的['.$name.']<a href="'.$linkurl.'" target="_blank">'.$title.'</a>(ID:'.$r['itemid'].')'.$S[$action].'!<br/>'; + if($reason) $body .= '操作原因:<br/>'.$reason.'<br/>'; + $body .= '如果您对此操作有异议,请及时与网站联系。'; + if($msg) send_message($username, $subject, $body); + if($wec) send_weixin($username, $subject); + if($eml || $sms) { + $user = userinfo($username); + if($eml) send_mail($user['email'], $subject, $body); + if($sms) send_sms($user['mobile'], $subject.$DT['sms_sign']); + } + } +} + +function item_check($itemid) { + global $table, $_child, $moduleid; + if($moduleid == 3) return true; + $fd = 'itemid'; + if($moduleid == 2 || $moduleid == 4) $fd = 'userid'; + $r = DB::get_one("SELECT catid FROM {$table} WHERE `$fd`=$itemid"); + if($r && $_child && in_array($r['catid'], $_child)) return true; + return false; +} + +function city_check($itemid) { + global $table, $_areaid, $moduleid; + if($moduleid == 3) return true; + $fd = 'itemid'; + if($moduleid == 2 || $moduleid == 4) $fd = 'userid'; + $r = DB::get_one("SELECT areaid FROM {$table} WHERE `$fd`=$itemid"); + if($r && $_areaid && in_array($r['areaid'], $_areaid)) return true; + return false; +} + +function split_content($moduleid, $part) { + global $CFG, $MODULE; + $table = DT_PRE.$moduleid.'_'.$part; + $fd = $moduleid == 4 ? 'userid' : 'itemid'; + if(DB::version() > '4.1' && $CFG['db_charset']) { + $type = " ENGINE=MyISAM DEFAULT CHARSET=".$CFG['db_charset']; + } else { + $type = " TYPE=MyISAM"; + } + DB::query("CREATE TABLE IF NOT EXISTS `{$table}` (`{$fd}` bigint(20) unsigned NOT NULL default '0',`content` longtext NOT NULL,PRIMARY KEY (`{$fd}`))".$type." COMMENT='".$MODULE[$moduleid]['name']."内容_".$part."'"); +} + +function split_sell($part) { + global $CFG, $MODULE; + $sql = file_get(DT_ROOT.'/file/setting/split_sell.sql'); + $sql or dalert('请检查文件file/setting/split_sell.sql是否存在'); + $sql = str_replace('destoon_sell', DT_PRE.'sell_5_'.$part, $sql); + if(DB::version() > '4.1' && $CFG['db_charset']) { + $sql .= " ENGINE=MyISAM DEFAULT CHARSET=".$CFG['db_charset']; + } else { + $sql .= " TYPE=MyISAM"; + } + $sql .= " COMMENT='".$MODULE[5]['name']."分表_".$part."';"; + DB::query($sql); +} + +function seo_title($title, $show = '') { + $SEO = array( + 'modulename' => '模块名称', + 'page' => '页码', + 'sitename' => '网站名称', + 'sitetitle' => '网站SEO标题', + 'sitekeywords' => '网站SEO关键词', + 'sitedescription' => '网站SEO描述', + 'catname' => '分类名称', + 'cattitle' => '分类SEO标题', + 'catkeywords' => '分类SEO关键词', + 'catdescription' => '分类SEO描述', + 'showtitle' => '内容标题', + 'showintroduce' => '内容简介', + 'kw' => '关键词', + 'areaname' => '地区', + 'delimiter' => '分隔符', + ); + if(is_array($show)) { + foreach($show as $v) { + if(isset($SEO[$v])) echo '<a href="javascript:_into(\''.$title.'\', \'{'.$SEO[$v].'}\');" title="{'.$SEO[$v].'}">{'.$SEO[$v].'}</a>  '; + } + } else { + foreach($SEO as $k=>$v) { + $title = str_replace('{'.$v.'}', '{$seo_'.$k.'}', $title); + } + return $title; + } +} + +function seo_check($str) { + foreach(array('<', '>', ';', '?', '"', '()') as $v) { + if(strpos($str, $v) !== false) return false; + } + if(preg_match_all("/\(([^\)]+)\)/i", $str, $matches)) { + foreach($matches[1] as $m) { + $m = trim($m); + if(strlen($m) < 2) return false; + foreach(array('$', ',', "'") as $v) { + if(strpos($m, $v) !== false) return false; + } + } + } + return true; +} + +function install_file($moduleid, $file, $dir, $extend = 0) { + $content = "<?php\n"; + if($extend == 1) $content .= "define('DT_REWRITE', true);\n"; + $content .= "\$moduleid = ".$moduleid.";\n"; + $content .= "require '../common.inc.php';\n"; + $content .= "require DT_ROOT.'/module/'.\$module.'/".$file.".inc.php';\n"; + $content .= '?>'; + file_put(DT_ROOT.'/'.$dir.'/'.$file.'.php', $content); + $content = "<?php\n"; + if($extend == 1) $content .= "define('DT_REWRITE', true);\n"; + $content .= "\$moduleid = ".$moduleid.";\n"; + $content .= "require '../../common.inc.php';\n"; + $content .= "require DT_ROOT.'/include/mobile.inc.php';\n"; + $content .= "require DT_ROOT.'/module/'.\$module.'/".$file.".inc.php';\n"; + $content .= '?>'; + file_put(DT_ROOT.'/mobile/'.$dir.'/'.$file.'.php', $content); +} + +function pass_encode($str) { + $len = strlen($str); + if($len < 1) return ''; + $new = ''; + for($i = 0; $i < $len; $i++) { + $new .= ($i == 0 || $i == $len - 1) ? $str[$i] : '*'; + } + return $new; +} + +function pass_decode($new, $old) { + return $new == pass_encode($old) ? $old : $new; +} + +function fix_domain($domain) { + if(strpos($domain, '.') === false) return ''; + if(substr($domain, 0, 4) != 'http') $domain = 'http://'.$domain; + if(substr($domain, -1) != '/') $domain = $domain.'/'; + return $domain; +} + +function list_dir($dir) { + include DT_ROOT.'/'.$dir.'/these.name.php'; + $list = $dirs = array(); + $files = glob(DT_ROOT.'/'.$dir.'/*'); + foreach($files as $v) { + if(is_file($v)) continue; + $v = basename($v); + $dirs[$v] = $v; + } + foreach($names as $k=>$v) { + if(isset($dirs[$k])) { + $list[] = array('dir'=>$k, 'name'=>$v); + unset($dirs[$k]); + } + } + foreach($dirs as $v) { + $list[] = array('dir'=>$v, 'name'=>$v); + } + return $list; +} +?> \ No newline at end of file diff --git a/include/bmp.func.php b/include/bmp.func.php new file mode 100644 index 0000000..713969c --- /dev/null +++ b/include/bmp.func.php @@ -0,0 +1,97 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +function bmp2gd($src, $dest = false) { + if(!($src_f = fopen($src, "rb"))) return false; + if(!($dest_f = fopen($dest, "wb"))) return false; + $header = unpack("vtype/Vsize/v2reserved/Voffset", fread($src_f, 14)); + $info = unpack("Vsize/Vwidth/Vheight/vplanes/vbits/Vcompression/Vimagesize/Vxres/Vyres/Vncolor/Vimportant", fread($src_f, 40)); + extract($info); + extract($header); + if($type != 0x4D42) return false; + $palette_size = $offset-54; + $ncolor = $palette_size/4; + $gd_header = ""; + $gd_header .= ($palette_size == 0) ? "\xFF\xFE" : "\xFF\xFF"; + $gd_header .= pack("n2", $width, $height); + $gd_header .= ($palette_size == 0) ? "\x01" : "\x00"; + if($palette_size) $gd_header .= pack("n", $ncolor); + $gd_header .= "\xFF\xFF\xFF\xFF"; + fwrite($dest_f, $gd_header); + if($palette_size) { + $palette = fread($src_f, $palette_size); + $gd_palette = ""; + $j = 0; + while($j < $palette_size) { + $b = $palette{$j++}; + $g = $palette{$j++}; + $r = $palette{$j++}; + $a = $palette{$j++}; + $gd_palette .= "$r$g$b$a"; + } + $gd_palette .= str_repeat("\x00\x00\x00\x00", 256-$ncolor); + fwrite($dest_f, $gd_palette); + } + $scan_line_size = (($bits * $width) + 7) >> 3; + $scan_line_align = ($scan_line_size & 0x03) ? 4 - ($scan_line_size & 0x03) : 0; + for($i = 0, $l = $height -1; $i < $height; $i++, $l--) { + fseek($src_f, $offset + (($scan_line_size + $scan_line_align) * $l)); + $scan_line = fread($src_f, $scan_line_size); + if($bits == 24) { + $gd_scan_line = ""; + $j = 0; + while($j < $scan_line_size) { + $b = $scan_line{$j++}; + $g = $scan_line{$j++}; + $r = $scan_line{$j++}; + $gd_scan_line .= "\x00$r$g$b"; + } + } else if($bits == 8) { + $gd_scan_line = $scan_line; + } else if($bits == 4) { + $gd_scan_line = ""; + $j = 0; + while($j < $scan_line_size) { + $byte = ord($scan_line{$j++}); + $p1 = chr($byte >> 4); + $p2 = chr($byte & 0x0F); + $gd_scan_line .= "$p1$p2"; + } + $gd_scan_line = substr($gd_scan_line, 0, $width); + } else if($bits == 1) { + $gd_scan_line = ""; + $j = 0; + while ($j < $scan_line_size) { + $byte = ord($scan_line{$j++}); + $p1 = chr((int) (($byte & 0x80) != 0)); + $p2 = chr((int) (($byte & 0x40) != 0)); + $p3 = chr((int) (($byte & 0x20) != 0)); + $p4 = chr((int) (($byte & 0x10) != 0)); + $p5 = chr((int) (($byte & 0x08) != 0)); + $p6 = chr((int) (($byte & 0x04) != 0)); + $p7 = chr((int) (($byte & 0x02) != 0)); + $p8 = chr((int) (($byte & 0x01) != 0)); + $gd_scan_line .= "$p1$p2$p3$p4$p5$p6$p7$p8"; + } + $gd_scan_line = substr($gd_scan_line, 0, $width); + } + fwrite($dest_f, $gd_scan_line); + } + fclose($src_f); + fclose($dest_f); + return true; +} + +function imagecreatefrombmp($filename) { + $tmp_name = tempnam("tmp", "BMP"); + if(bmp2gd($filename, $tmp_name)) { + $img = imagecreatefromgd($tmp_name); + unlink($tmp_name); + return $img; + } + return false; +} +?> \ No newline at end of file diff --git a/include/cache.func.php b/include/cache.func.php new file mode 100644 index 0000000..14caf52 --- /dev/null +++ b/include/cache.func.php @@ -0,0 +1,361 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +function cache_all() { + cache_module(); + cache_area(); + cache_category(); + cache_fields(); + cache_group(); + cache_oauth(); + cache_type(); + cache_keylink(); + cache_pay(); + cache_weixin(); + return true; +} + +function cache_module($moduleid = 0) { + if(defined('DT_MOB')) { + $DT_MOB = DT_MOB; + } else { + $r = DB::get_one("SELECT * FROM ".DT_PRE."setting WHERE item_key='mobile_domain'"); + if($r && $r['item_value']) { + $DT_MOB = $r['item_value']; + } else { + $DT_MOB = DT_PATH.'mobile/'; + } + } + if($moduleid) { + $r = DB::get_one("SELECT * FROM ".DT_PRE."module WHERE disabled=0 AND moduleid='$moduleid'"); + $setting = array(); + $setting = get_setting($moduleid); + if(isset($setting['seo_title_index'])) $setting['title_index'] = seo_title($setting['seo_title_index']); + if(isset($setting['seo_title_list'])) $setting['title_list'] = seo_title($setting['seo_title_list']); + if(isset($setting['seo_title_show'])) $setting['title_show'] = seo_title($setting['seo_title_show']); + if(isset($setting['seo_title_search'])) $setting['title_search'] = seo_title($setting['seo_title_search']); + if(isset($setting['seo_keywords_index'])) $setting['keywords_index'] = seo_title($setting['seo_keywords_index']); + if(isset($setting['seo_keywords_list'])) $setting['keywords_list'] = seo_title($setting['seo_keywords_list']); + if(isset($setting['seo_keywords_show'])) $setting['keywords_show'] = seo_title($setting['seo_keywords_show']); + if(isset($setting['seo_keywords_search'])) $setting['keywords_search'] = seo_title($setting['seo_keywords_search']); + if(isset($setting['seo_description_index'])) $setting['description_index'] = seo_title($setting['seo_description_index']); + if(isset($setting['seo_description_list'])) $setting['description_list'] = seo_title($setting['seo_description_list']); + if(isset($setting['seo_description_show'])) $setting['description_show'] = seo_title($setting['seo_description_show']); + if(isset($setting['seo_description_search'])) $setting['description_search'] = seo_title($setting['seo_description_search']); + //cache_write('setting/module-'.$moduleid.'.php', $setting); + $setting['moduleid'] = $moduleid; + $setting['name'] = $r['name']; + $setting['moduledir'] = $r['moduledir']; + $setting['module'] = $r['module']; + $setting['ismenu'] = $r['ismenu']; + $setting['domain'] = $r['domain']; + $setting['linkurl'] = $r['linkurl']; + $setting['mobile'] = $r['mobile'] ? $r['mobile'] : $DT_MOB.$r['moduledir'].'/'; + if($moduleid == 3) { + foreach($setting as $k=>$v) { + if(strpos($k, '_domain') !== false) { + $e = str_replace('_domain', '', $k); + $key = $e.'_url'; + $setting[$key] = $v ? $v : DT_PATH.$e.'/'; + $key = $e.'_mob'; + $setting[$key] = $DT_MOB.$e.'/'; + } + } + } + cache_write('module-'.$moduleid.'.php', $setting); + if(isset($setting['split'])) { + if($setting['split']) { + cache_write($moduleid.'.part', $moduleid); + } else { + cache_delete($moduleid.'.part'); + } + } + return true; + } else { + $result = DB::query("SELECT moduleid,module,name,moduledir,domain,linkurl,mobile,style,listorder,islink,ismenu,isblank,logo FROM ".DT_PRE."module WHERE disabled=0 ORDER by listorder asc,moduleid desc"); + $CACHE = array(); + $modules = array(); + while($r = DB::fetch_array($result)) { + if($r['islink']) { + $r['mobile'] = $r['linkurl']; + } else { + $linkurl = $r['domain'] ? $r['domain'] : linkurl($r['moduledir'].'/'); + if($r['moduleid'] == 1) $linkurl = DT_PATH; + if($linkurl != $r['linkurl']) { + $r['linkurl'] = $linkurl; + DB::query("UPDATE ".DT_PRE."module SET linkurl='$linkurl' WHERE moduleid='$r[moduleid]' "); + } + $mobile = $DT_MOB.($r['moduledir'] ? $r['moduledir'].'/' : ''); + if(substr_count($r['mobile'], '/') != 3) { + $r['mobile'] = $mobile; + DB::query("UPDATE ".DT_PRE."module SET mobile='$mobile' WHERE moduleid='$r[moduleid]' "); + } + cache_module($r['moduleid']); + } + $modules[$r['moduleid']] = $r; + } + $CACHE['module'] = $modules; + $CACHE['dt'] = cache_read('module-1.php'); + cache_write('module.php', $CACHE); + } +} + +function cache_area() { + $data = array(); + $result = DB::query("SELECT areaid,areaname,parentid,arrparentid,child,arrchildid FROM ".DT_PRE."area ORDER BY listorder,areaid"); + while($r = DB::fetch_array($result)) { + $areaid = $r['areaid']; + $data[$areaid] = $r; + } + cache_write('area.php', $data); +} + +function cache_category($moduleid = 0, $data = array()) { + global $MODULE; + if($moduleid) { + if(!$data) { + $result = DB::query("SELECT * FROM ".DT_PRE."category WHERE moduleid='$moduleid' ORDER BY listorder,catid"); + while($r = DB::fetch_array($result)) { + $data[$r['catid']] = $r; + } + } + $mod = cache_read('module-'.$moduleid.'.php'); + $a = array(); + $d = array('listorder', 'moduleid', 'item', 'template', 'show_template', 'seo_title', 'seo_keywords', 'seo_description', 'group_list', 'group_show', 'group_add'); + foreach($data as $r) { + $e = $r['catid']; + foreach($d as $_d) { + unset($r[$_d]); + } + $a[$e] = $r; + }; + cache_write('category-'.$moduleid.'.php', $a); + if(count($data) < 100) { + $categorys = array(); + foreach($data as $id=>$cat) { + $categorys[$id] = array('id'=>$id, 'parentid'=>$cat['parentid'], 'name'=>$cat['catname']); + } + require_once DT_ROOT.'/include/tree.class.php'; + $tree = new tree; + $tree->tree($categorys); + $content = $tree->get_tree(0, "<option value=\\\"\$id\\\">\$spacer\$name</option>").'</select>'; + cache_write('catetree-'.$moduleid.'.php', $content); + } else { + cache_delete('catetree-'.$moduleid.'.php'); + } + } else { + foreach($MODULE as $moduleid=>$module) { + cache_category($moduleid); + } + } +} + +function cache_pay() { + $setting = $order = $pay = array(); + $result = DB::query("SELECT * FROM ".DT_PRE."setting WHERE item LIKE '%pay-%'"); + while($r = DB::fetch_array($result)) { + if(substr($r['item'], 0, 4) == 'pay-') { + $setting[substr($r['item'], 4)][$r['item_key']] = $r['item_value']; + if($r['item_key'] == 'order') $order[substr($r['item'], 4)] = $r['item_value']; + } + } + asort($order); + foreach($order as $k=>$v) { + $pay[$k] = $setting[$k]; + } + cache_write('pay.php', $pay); +} + +function cache_oauth() { + $setting = $order = $oauth = array(); + $result = DB::query("SELECT * FROM ".DT_PRE."setting WHERE item LIKE '%oauth-%'"); + while($r = DB::fetch_array($result)) { + if(substr($r['item'], 0, 6) == 'oauth-') { + $setting[substr($r['item'], 6)][$r['item_key']] = $r['item_value']; + if($r['item_key'] == 'order') $order[substr($r['item'], 6)] = $r['item_value']; + } + } + asort($order); + foreach($order as $k=>$v) { + $oauth[$k] = $setting[$k]; + } + cache_write('oauth.php', $oauth); +} + +function cache_fields($tb = '') { + if($tb) { + $data = array(); + $result = DB::query("SELECT * FROM ".DT_PRE."fields WHERE tb='$tb' ORDER BY listorder,itemid"); + while($r = DB::fetch_array($result)) { + $data[$r['itemid']] = $r; + } + cache_write('fields-'.$tb.'.php', $data); + } else { + $tbs = array(); + $result = DB::query("SELECT * FROM ".DT_PRE."fields"); + while($r = DB::fetch_array($result)) { + if(isset($tbs[$r['tb']])) continue; + cache_fields($r['tb']); + $tbs[$r['tb']] = $r['tb']; + } + } +} + +function cache_group() { + $data = $group = array(); + $result = DB::query("SELECT * FROM ".DT_PRE."member_group ORDER BY listorder ASC,groupid ASC"); + while($r = DB::fetch_array($result)) { + $groupid = $r['groupid']; + $tmp = array(); + $tmp = get_setting('group-'.$groupid); + $r['reg'] = $tmp['reg']; + $r['fee'] = $tmp['fee']; + $r['type'] = $tmp['type']; + $data[$groupid] = $r; + if($tmp) { + foreach($tmp as $k=>$v) { + isset($r[$k]) or $r[$k] = $v; + } + } + $r['groupid'] = $groupid; + cache_write('group-'.$groupid.'.php', $r); + } + cache_write('group.php', $data); +} + +function cache_type($item = '') { + if($item != '') { + $types = array(); + $result = DB::query("SELECT typeid,parentid,typename,style FROM ".DT_PRE."type WHERE item='$item' AND cache=1 ORDER BY listorder ASC,typeid DESC"); + while($r = DB::fetch_array($result)) { + $types[$r['typeid']] = $r; + } + cache_write('type-'.$item.'.php', $types); + return $types; + } else { + $arr = array(); + $result = DB::query("SELECT item FROM ".DT_PRE."type WHERE item!='' AND cache=1 ORDER BY typeid DESC"); + while($r = DB::fetch_array($result)) { + if(!in_array($r['item'], $arr)) { + $arr[] = $r['item']; + cache_type($r['item']); + } + } + } +} + +function cache_bancomment($moduleid = 0) { + global $MODULE; + if($moduleid) { + $data = array(); + $result = DB::query("SELECT itemid FROM ".DT_PRE."comment_ban WHERE moduleid='$moduleid' ORDER BY bid DESC "); + while($r = DB::fetch_array($result)) { + $data[] = $r['itemid']; + } + cache_write('bancomment-'.$moduleid.'.php', $data); + return $data; + } else { + foreach($MODULE as $k=>$v) { + if($k < 4 || $v['islink']) continue; + cache_bancomment($k); + } + } +} + +function cache_keylink($item = '') { + if($item) { + $keylinks = array(); + $result = DB::query("SELECT title,url FROM ".DT_PRE."keylink WHERE item='$item' ORDER BY listorder DESC,itemid DESC"); + while($r = DB::fetch_array($result)) { + $keylinks[] = $r; + } + cache_write('keylink-'.$item.'.php', $keylinks); + return $keylinks; + } else { + $arr = array(); + $result = DB::query("SELECT item FROM ".DT_PRE."keylink"); + while($r = DB::fetch_array($result)) { + if(!in_array($r['item'], $arr)) { + $arr[] = $r['item']; + cache_keylink($r['item']); + } + } + } +} + +function cache_banip() { + $data = array(); + $result = DB::query("SELECT ip,totime FROM ".DT_PRE."banip ORDER BY itemid DESC"); + while($r = DB::fetch_array($result)) { + if($r['totime'] && $r['totime'] < DT_TIME) continue; + $data[] = $r; + } + cache_write('banip.php', $data); +} + +function cache_banword() { + $data = array(); + $result = DB::query("SELECT * FROM ".DT_PRE."banword ORDER BY bid DESC"); + while($r = DB::fetch_array($result)) { + $data[] = array($r['replacefrom'], $r['replaceto'], $r['deny']); + } + cache_write('banword.php', $data); +} + +function cache_weixin() { + $setting = get_setting('weixin'); + cache_write('weixin.php', $setting); + $setting = get_setting('weixin-menu'); + cache_write('weixin-menu.php', $setting['menu'] ? unserialize($setting['menu']) : array()); +} + +function cache_clear_ad($all = false) { + $globs = glob(DT_CACHE.'/htm/*.htm'); + if($globs) { + foreach($globs as $v) { + if(strpos(basename($v), 'ad_') === false) continue; + if($all) { + file_del($v); + } else { + $exptime = intval(substr(file_get($v), 4, 14)); + if($exptime && DT_TIME > $exptime) file_del($v); + } + } + } +} + +function cache_clear_tag($all = false) { + $globs = glob(DT_CACHE.'/tag/*.htm'); + if($globs) { + foreach($globs as $v) { + if($all) { + file_del($v); + } else { + $exptime = intval(substr(file_get($v), 4, 14)); + if($exptime && DT_TIME > $exptime) file_del($v); + } + } + } +} + +function cache_clear_sql($dir, $all = false) { + if($dir) { + $globs = glob(DT_CACHE.'/sql/'.$dir.'/*.php'); + if($globs) { + foreach($globs as $v) { + if($all) { + file_del($v); + } else { + $exptime = intval(substr(file_get($v), 8, 18)); + if($exptime && DT_TIME > $exptime) file_del($v); + } + } + } + } else { + cache_clear('php', 'dir', 'sql'); + } +} +?> \ No newline at end of file diff --git a/include/cache_apc.class.php b/include/cache_apc.class.php new file mode 100644 index 0000000..721a860 --- /dev/null +++ b/include/cache_apc.class.php @@ -0,0 +1,38 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class dcache { + var $pre; + + function __construct() { + // + } + + function dcache() { + $this->__construct(); + } + + function get($key) { + return apc_fetch($this->pre.$key); + } + + function set($key, $val, $ttl = 600) { + return apc_store($this->pre.$key, $val, $ttl); + } + + function rm($key) { + return apc_delete($this->pre.$key); + } + + function clear() { + return apc_clear_cache(); + } + + function expire() { + return true; + } +} +?> \ No newline at end of file diff --git a/include/cache_eaccelerator.class.php b/include/cache_eaccelerator.class.php new file mode 100644 index 0000000..0e4d9a6 --- /dev/null +++ b/include/cache_eaccelerator.class.php @@ -0,0 +1,39 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class dcache { + var $pre; + + function __construct() { + // + } + + function dcache() { + $this->__construct(); + } + + function get($key) { + return eaccelerator_get($this->pre.$key); + } + + function set($key, $val, $ttl = 600) { + eaccelerator_lock($this->pre.$key); + return eaccelerator_put($this->pre.$key, $val, $ttl); + } + + function rm($key) { + return eaccelerator_rm($this->pre.$key); + } + + function clear() { + return eaccelerator_gc(); + } + + function expire() { + return eaccelerator_gc(); + } +} +?> \ No newline at end of file diff --git a/include/cache_file.class.php b/include/cache_file.class.php new file mode 100644 index 0000000..f4612ab --- /dev/null +++ b/include/cache_file.class.php @@ -0,0 +1,58 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class dcache { + var $pre; + + function __construct() { + } + + function dcache() { + $this->__construct(); + } + + function get($key) { + is_md5($key) or $key = md5($this->pre.$key); + $php = DT_CACHE.'/php/'.substr($key, 0, 2).'/'.$key.'.php'; + if(is_file($php)) { + $str = file_get($php); + $ttl = substr($str, 13, 10); + if($ttl < DT_TIME) return ''; + return substr($str, 23, 1) == '@' ? substr($str, 24) : unserialize(substr($str, 23)); + } else { + return ''; + } + } + + function set($key, $val, $ttl = 600) { + is_md5($key) or $key = md5($this->pre.$key); + $ttl = DT_TIME + $ttl; + $sql = "REPLACE INTO ".DT_PRE."cache (`cacheid`,`totime`) VALUES ('$key','$ttl')"; + DB::query($sql); + $val = '<?php exit;?>'.$ttl.(is_array($val) ? serialize($val) : '@'.$val); + return file_put(DT_CACHE.'/php/'.substr($key, 0, 2).'/'.$key.'.php', $val); + } + + function rm($key) { + is_md5($key) or $key = md5($this->pre.$key); + return file_del(DT_CACHE.'/php/'.substr($key, 0, 2).'/'.$key.'.php'); + } + + function clear() { + DB::query("DELETE FROM ".DT_PRE."cache"); + @rename(DT_CACHE.'/php/', DT_CACHE.'/'.timetodate(DT_TIME, 'YmdHis').'.tmp/'); + } + + function expire() { + $result = DB::query("SELECT cacheid FROM ".DT_PRE."cache WHERE totime<".DT_TIME." ORDER BY totime ASC LIMIT 100"); + while($r = DB::fetch_array($result)) { + $cid = $r['cacheid']; + $this->rm($cid); + DB::query("DELETE FROM ".DT_PRE."cache WHERE cacheid='$cid'"); + } + } +} +?> \ No newline at end of file diff --git a/include/cache_memcache.class.php b/include/cache_memcache.class.php new file mode 100644 index 0000000..c7c87b2 --- /dev/null +++ b/include/cache_memcache.class.php @@ -0,0 +1,44 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class dcache { + var $pre; + var $obj; + var $con; + + function __construct() { + $this->obj = new Memcache; + include DT_ROOT.'/file/config/memcache.inc.php'; + $num = count($MemServer); + $key = $num == 1 ? 0 : abs(crc32(DT_IP))%$num; + $this->con = $this->obj->connect($MemServer[$key]['host'], $MemServer[$key]['port'], 2); + } + + function dcache() { + $this->__construct(); + } + + function get($key) { + return $this->obj->get($this->pre.$key); + } + + function set($key, $val, $ttl = 600) { + return $this->obj->set($this->pre.$key, $val, 0, $ttl); + } + + function rm($key) { + return $this->obj->delete($this->pre.$key); + } + + function clear() { + return $this->obj->flush(); + } + + function expire() { + return true; + } +} +?> \ No newline at end of file diff --git a/include/cache_redis.class.php b/include/cache_redis.class.php new file mode 100644 index 0000000..713ba79 --- /dev/null +++ b/include/cache_redis.class.php @@ -0,0 +1,49 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class dcache { + var $pre; + var $obj; + + function __construct() { + $this->obj = new Redis; + include DT_ROOT.'/file/config/redis.inc.php'; + $num = count($RedisServer); + $key = $num == 1 ? 0 : abs(crc32(DT_IP))%$num; + $this->obj->connect($RedisServer[$key]['host'], $RedisServer[$key]['port']); + } + + function dcache() { + $this->__construct(); + } + + function get($key) { + $val = $this->obj->get($this->pre.$key); + if(substr($val, 0, 2) == 'a:') { + $arr = unserialize($val); + if(is_array($arr)) return $arr; + } + return $val; + } + + function set($key, $val, $ttl = 600) { + if(is_array($val)) $val = serialize($val); + return $ttl ? $this->obj->setex($this->pre.$key, $ttl, $val) : $this->obj->set($this->pre.$key, $val); + } + + function rm($key) { + return $this->obj->delete($this->pre.$key); + } + + function clear() { + return $this->obj->flushAll(); + } + + function expire() { + return true; + } +} +?> \ No newline at end of file diff --git a/include/cache_wincache.class.php b/include/cache_wincache.class.php new file mode 100644 index 0000000..6e4b16b --- /dev/null +++ b/include/cache_wincache.class.php @@ -0,0 +1,38 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class dcache { + var $pre; + + function __construct() { + // + } + + function dcache() { + $this->__construct(); + } + + function get($key) { + return wincache_ucache_get($this->pre.$key); + } + + function set($key, $val, $ttl = 600) { + return wincache_ucache_set($this->pre.$key, $val, $ttl); + } + + function rm($key) { + return wincache_ucache_delete($this->pre.$key); + } + + function clear() { + return wincache_ucache_clear(); + } + + function expire() { + return true; + } +} +?> \ No newline at end of file diff --git a/include/cache_xcache.class.php b/include/cache_xcache.class.php new file mode 100644 index 0000000..73315f3 --- /dev/null +++ b/include/cache_xcache.class.php @@ -0,0 +1,38 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class dcache { + var $pre; + + function __construct() { + // + } + + function dcache() { + $this->__construct(); + } + + function get($key) { + return xcache_get($this->pre.$key); + } + + function set($key, $val, $ttl = 600) { + return xcache_set($this->pre.$key, $val, $ttl); + } + + function rm($key) { + return xcache_unset($this->pre.$key); + } + + function clear() { + return true; + } + + function expire() { + return true; + } +} +?> \ No newline at end of file diff --git a/include/captcha.class.php b/include/captcha.class.php new file mode 100644 index 0000000..4f5bd14 --- /dev/null +++ b/include/captcha.class.php @@ -0,0 +1,129 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class captcha { + var $chars = 'abcdeghkmnpqstwxyz234789ABCEFGHJKLMNPRSTWXYZ'; + var $length = 4; + var $soundtag; + var $soundstr; + var $cn; + var $font; + + function question($id) { + $r = DB::get_one("SELECT * FROM ".DT_PRE."question ORDER BY rand()"); + $_SESSION['answerstr'] = encrypt($r['answer'], DT_KEY.'ANS'); + exit('document.getElementById("'.$id.'").innerHTML = "'.$r['question'].'";'); + } + + function image() { + if(strpos(DT_UA, 'MSIE') !== false) { + header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); + header('Pragma: public'); + } else { + header('Pragma: no-cache'); + } + header('Expires: '.gmdate('D, d M Y H:i:s').' GMT'); + header("Content-type: image/png"); + $string = $this->mk_str(); + $_SESSION['captchastr'] = encrypt(strtoupper($string), DT_KEY.'CPC'); + $imageX = $this->length*26; + $imageY = 32; + $im = imagecreatetruecolor($imageX, $imageY); + imagefill($im, 0, 0, imagecolorallocate($im, 250, 250, 250)); + $color = imagecolorallocate($im, mt_rand(0, 100), mt_rand(0, 100), mt_rand(0, 100)); + if($this->cn) { + $string = $string; + $angle = mt_rand(-15, 15); + $size = mt_rand(12, 22); + $font = $this->font; + $X = $size + mt_rand(5, 10); + $Y = $size + mt_rand(5, 10); + imagettftext($im, $size, $angle, $X, $Y, $color, $font, $string); + $this->mk_sin($im, $color); + imagepng($im); + imagedestroy($im); + } else { + $fonts = glob(DT_ROOT.'/file/captcha/*.ttf'); + $num = count($fonts) - 1; + $font = $fonts[mt_rand(0, $num)]; + $C0 = mt_rand(200, 255); + $C1 = mt_rand(200, 255); + $C2 = mt_rand(200, 255); + $BG = imagecolorallocate($im, $C0, $C1, $C2); + imagefill($im, 0, 0, $BG); + $X = 0; + for($i = 0; $i < $this->length; $i++) { + $size = mt_rand(20, 25); + $angle = mt_rand(-3, 3); + if($i > 0) $X += $size - mt_rand(3, 5); + $Y = $size + mt_rand(-2, 2); + imagettftext($im, $size, $angle, $X, $Y, $color, $font, $string[$i]); + } + $IM = imagecreatetruecolor($imageX, $imageY); + imagefill($IM, 0, 0, $BG); + for($i = 0; $i < $imageX; $i++) { + for($j = 0; $j < $imageY; $j++) { + $C = imagecolorat($im, $i, $j); + if(($i+20+sin($j/$imageY*2*M_PI)*6) <= $imageX && ($i+20+sin($j/$imageY*2*M_PI)*6) >=0 ) { + imagesetpixel($IM, $i+10+sin($j/$imageY*2*M_PI-M_PI*0.1)*0.8, $j, $C); + } + } + } + $this->mk_sin($IM, $color); + imagepng($IM); + imagedestroy($IM); + imagedestroy($im); + } + exit; + } + + function mk_sin($im, $color) { + $R = mt_rand(5, 20); + $X = mt_rand(15, 25); + $Y = mt_rand(5, 10); + $L = mt_rand(50, 80); + for($yy = $R; $yy <= $R + 1; $yy++) { + for($px = -$L; $px <= $L; $px = $px + 0.1) { + $x = $px/$X; + if($x != 0) $y = sin($x); + $py = $y*$Y; + imagesetpixel($im, $px + $L, $py + $yy, $color); + } + } + } + + function mk_str() { + $str = ''; + if($this->cn) { + $step = DT_CHARSET == 'UTF-8' ? 3 : 2; + $text = substr(file_get(DT_ROOT.'/file/config/cncaptcha.inc.php'), 13); + $max = strlen($text) - 1 - $step; + while(1) { + $i = mt_rand(0, $max); + if($i%$step == 0) { + $str .= substr($text, $i, $step); + break; + } + } + while(1) { + $i = mt_rand(0, $max); + if($i%$step == 0) { + $str .= substr($text, $i, $step); + break; + } + } + } else { + $max = strlen($this->chars) - 1; + while(1) { + if(strlen($str) == $this->length) break; + $r = mt_rand(0, $max); + if(strpos(strtolower($str), strtolower($this->chars[$r])) === false) $str .= $this->chars[$r]; + } + } + return $str; + } +} +?> \ No newline at end of file diff --git a/include/child.inc.php b/include/child.inc.php new file mode 100644 index 0000000..ed33db4 --- /dev/null +++ b/include/child.inc.php @@ -0,0 +1,39 @@ +<?php +defined('IN_DESTOON') or exit('Access Denied'); +$_child = $db->get_one("SELECT * FROM {$DT_PRE}member_child WHERE itemid=$_cid"); +$_child_self = basename(get_env('self')); +if($_child_self != 'logout.php') { + ($_child && $_child['status'] == 3 && $_child['parent'] == $_username && $_child['permission']) or dalert(lang('message->without_permission'), 'logout.php'); +} +$_cname = $_child['username']; +include DT_ROOT.'/file/config/child.inc.php'; +$_child_p = explode(',' , $_child['permission']); +$_child_menu = $_child_mids = array(); +$_child_file = array('index.php', 'logout.php', 'child.php', $DT['file_login'], $DT['file_register']); +foreach($_child_p as $v) { + $r = array(); + if(is_numeric($v)) { + if(!in_array($v, $MENUMODS)) continue; + $r['name'] = $MODULE[$v]['name']; + $r['en'] = $MODULE[$v]['module']; + $r['url'] = $DT['file_my'].'?mid='.$v; + $r['id'] = 'mid_'.$v; + $r['mid'] = $v; + $_child_mids[] = $v; + } else { + $r['name'] = $CHILD[$v]; + $r['en'] = $v; + $r['url'] = $v.'.php'; + $r['id'] = $v; + $r['mid'] = 0; + $_child_file[] = $v.'.php'; + if($v == 'im') $_child_file[] = 'chat.php'; + } + $_child_menu[] = $r; +} +if($_child_self == $DT['file_my']) { + in_array($mid, $_child_mids) or dheader('child.php'); +} else { + in_array($_child_self, $_child_file) or dheader('child.php'); +} +?> \ No newline at end of file diff --git a/include/city.inc.php b/include/city.inc.php new file mode 100644 index 0000000..498de2e --- /dev/null +++ b/include/city.inc.php @@ -0,0 +1,82 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +$AREA = cache_read('area.php'); +$city_arr = array(); +$city_set = get_cookie('city'); +$http_host = get_env('host'); +if($city_set) { + list($cityid, $city_domain) = explode('|', $city_set); + $cityid = intval($cityid); + if(strpos(DT_PATH, $http_host) === false && strpos($city_domain, $http_host) === false) { + $city_arr = $db->get_one("SELECT * FROM {$DT_PRE}city WHERE domain='http://".$http_host."/' OR domain='https://".$http_host."/'"); + if($city_arr) { + set_cookie('city', $city_arr['areaid'].'|'.$city_arr['domain'], DT_TIME + 86400*30); + $cityid = $city_arr['areaid']; + } + } + if($city_domain && substr($http_host, 0 ,4) == 'www.' && strpos($DT_URL, '/api/') === false && strpos($DT_URL, '/api/city.php') === false) { + $cityid = 0; + $city_domain = ''; + } + if($city_domain && $DT_URL == DT_PATH) dheader($city_domain); +} else { + $cityid = 0; + if(strpos(DT_PATH, $http_host) === false) { + $city_arr = $db->get_one("SELECT * FROM {$DT_PRE}city WHERE domain='http://".$http_host."/' OR domain='https://".$http_host."/'"); + if($city_arr) { + set_cookie('city', $city_arr['areaid'].'|'.$city_arr['domain'], $DT_TIME + 30*86400); + $cityid = $city_arr['areaid']; + } + } + if($DT['city_ip'] && !defined('DT_ADMIN') && !$DT_BOT && !$cityid) { + $iparea = ip2area($DT_IP); + $result = $db->query("SELECT * FROM {$DT_PRE}city ORDER BY areaid"); + while($r = $db->fetch_array($result)) { + if(preg_match("/".$r['name'].($r['iparea'] ? '|'.$r['iparea'] : '')."/i", $iparea)) { + set_cookie('city', $r['areaid'].'|'.$r['domain'], $DT_TIME + 30*86400); + $cityid = $r['areaid']; + if($r['domain'] && strpos($DT_URL, '/api/') === false) { + $city_url = str_replace(DT_PATH, $r['domain'], $DT_URL); + if($city_url != $DT_URL) dheader($city_url); + } + $city_arr = $r; + break; + } + } + } +} +if($cityid) { + $city_arr or $city_arr = $db->get_one("SELECT * FROM {$DT_PRE}city WHERE areaid=$cityid"); + if(!defined('DT_ADMIN')) { + if($city_arr['seo_title']) { + $DT['seo_title'] = $city_sitename = $city_arr['seo_title']; + } else { + $citysite = lang($L['citysite'], array($city_arr['name'])); + $DT['seo_title'] = $citysite.$DT['seo_delimiter'].$DT['seo_title']; + $city_sitename = $citysite.$DT['seo_delimiter'].$DT['sitename']; + } + if($city_arr['seo_keywords']) $DT['seo_keywords'] = $city_arr['seo_keywords']; + if($city_arr['seo_description']) $DT['seo_description'] = $city_arr['seo_description']; + } + $city_name = $city_arr['name']; + $city_domain = $city_arr['domain']; + $city_template = $city_arr['template']; +} +if($city_domain) { + foreach($MODULE as $k=>$v) { + if($v['islink']) continue; + $MODULE[$k]['linkurl'] = $k == 1 ? $city_domain : $city_domain.$v['moduledir'].'/'; + $MODULE[$k]['mobile'] = $k == 1 ? $city_domain.'mobile/' : $city_domain.'mobile/'.$v['moduledir'].'/'; + } + $MOD['linkurl'] = $MODULE[$moduleid]['linkurl']; + foreach($EXT as $k=>$v) { + if(strpos($k, '_url') !== false) { + $EXT[$k] = $city_domain.str_replace('_url', '', $k).'/'; + } + } +} +?> \ No newline at end of file diff --git a/include/client.func.php b/include/client.func.php new file mode 100644 index 0000000..e153d04 --- /dev/null +++ b/include/client.func.php @@ -0,0 +1,185 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +function area_parse($area, $type = 'country') { + $P = array('北京' ,'上海' ,'天津' ,'重庆' ,'河北' ,'山西' ,'内蒙古' ,'辽宁' ,'吉林' ,'黑龙江' ,'江苏' ,'浙江' ,'安徽' ,'福建' ,'江西' ,'山东' ,'河南' ,'湖北' ,'湖南' ,'广东' ,'广西' ,'海南' ,'四川' ,'贵州' ,'云南' ,'西藏' ,'陕西' ,'甘肃' ,'青海' ,'宁夏' ,'新疆' ,'台湾' ,'香港' ,'澳门'); + if($type == 'country') { + //常见国家 - 可以根据网站目标用户地区增加 + $C = array('中国','美国','加拿大','英国','澳大利亚','俄罗斯','日本','韩国','新加坡','越南','法国','德国','意大利','印度','新西兰','南非'); + foreach($P as $v) { + if(strpos($area, $v) !== false) return '中国'; + } + foreach($C as $v) { + if(strpos($area, $v) !== false) return $v; + } + return cutstr($area, '', ' '); + } elseif($type == 'province') { + foreach($P as $v) { + if(strpos($area, $v) !== false) return $v; + } + } elseif($type == 'city') { + $T = array('北京' ,'上海' ,'天津' ,'重庆' ,'香港' ,'澳门'); + foreach($T as $v) { + if(strpos($area, $v) !== false) return $v; + } + if(strpos($area, '市') !== false) { + if(strpos($area, '省') !== false) return trim(cutstr($area, '省', '市')); + if(strpos($area, '自治区') !== false) return trim(cutstr($area, '自治区', '市')); + foreach($P as $v) { + if(strpos($area, $v) !== false) return trim(cutstr($area, $v, '市')); + } + } + $area = trim(cutstr($area, '', area_parse($area, 'network'))); + if(strpos($area, '省') !== false) return trim(cutstr($area, '省')); + if(strpos($area, '自治区') !== false) return trim(cutstr($area, '自治区')); + foreach($P as $v) { + if(strpos($area, $v) !== false) return str_replace($v, '', $area); + } + return trim(str_replace(area_parse($area), '', $area)); + } elseif($type == 'network') { + $N = array('电信' ,'移动' ,'联通' ,'铁通'); + foreach($N as $v) { + if(strpos($area, $v) !== false) return $v; + } + } + return ''; +} + +function get_robot($ua = '') { + global $L; + $UA = $ua ? $ua : DT_UA; + foreach($L['robot'] as $k=>$v) { + if(stripos($UA, $k) !== false) return $k; + } + return 'other'; +} + +function get_os($ua = '') { + $UA = $ua ? $ua : DT_UA; + if(stripos($UA, 'Windows') !== false) { + if(strpos($UA, 'NT 10.0') !== false) return 'Windows 10'; + if(strpos($UA, 'NT 6.1') !== false) return 'Windows 7'; + if(strpos($UA, 'NT 6.2') !== false) return 'Windows 8'; + if(strpos($UA, 'NT 6.3') !== false) return 'Windows 8.1'; + if(strpos($UA, 'NT 5.1') !== false) return 'Windows XP'; + if(strpos($UA, 'NT 6.0') !== false) return 'Windows Vista'; + if(strpos($UA, 'NT 5.0') !== false) return 'Windows 2000'; + if(strpos($UA, 'NT 5.2') !== false) return 'Windows 2003'; + if(strpos($UA, 'Me') !== false) return 'Windows Me'; + if(strpos($UA, '98') !== false) return 'Windows 98'; + if(strpos($UA, '95') !== false) return 'Windows 95'; + return 'Windows'; + } else if(stripos($UA, 'Android') !== false) { + return 'Android'; + } else if(stripos($UA, 'Windows Phone OS') !== false) { + return 'Windows Phone'; + } else if(stripos($UA, 'iPhone') !== false) { + return 'iPhone'; + } else if(stripos($UA, 'iPad') !== false) { + return 'iPad'; + } else if(stripos($UA, 'iPod') !== false) { + return 'iPod'; + } else if(stripos($UA, 'Mac OS') !== false) { + return 'Mac'; + } else if(stripos($UA, 'Linux') !== false) { + return 'Linux'; + } else if(stripos($UA, 'Unix') !== false) { + return 'Unix'; + } else if(stripos($UA, 'BSD') !== false) { + return 'BSD'; + } + return ''; +} + +function get_bd($ua = '') { + $UA = $ua ? $ua : DT_UA; + if(stripos($UA, 'Android') !== false) { + if(stripos($UA, 'HUAWEI') !== false) { + return 'HUAWEI'; + } else if(stripos($UA, 'HONOR') !== false) { + return 'HONOR'; + } else if(stripos($UA, 'XiaoMi') !== false) { + return 'XIAOMI'; + } else if(stripos($UA, 'Redmi') !== false) { + return 'REDMI'; + } else if(stripos($UA, 'VIVO') !== false) { + return 'VIVO'; + } else if(stripos($UA, 'OPPO') !== false) { + return 'OPPO'; + } else if(stripos($UA, 'Nexus') !== false) { + return 'NEXUS'; + } else if(stripos($UA, 'Nokia') !== false) { + return 'NOKIA'; + } else if(stripos($UA, 'SAMSUNG') !== false || stripos($UA, 'SM-') !== false) { + return 'SAMSUNG'; + } + return ''; + } else if(stripos($UA, 'Windows Phone OS') !== false) { + return 'Windows Phone'; + } else if(stripos($UA, 'iPhone') !== false) { + return 'iPhone'; + } else if(stripos($UA, 'iPad') !== false) { + return 'iPad'; + } else if(stripos($UA, 'iPod') !== false) { + return 'iPod'; + } + return ''; +} + +function get_bs($ua = '') { + $UA = $ua ? $ua : DT_UA; + if(stripos($UA, 'MSIE') !== false) { + if(strpos($UA, 'MSIE 11.0') !== false) return 'IE11'; + if(strpos($UA, 'MSIE 10.0') !== false) return 'IE10'; + if(strpos($UA, 'MSIE 9.0') !== false) return 'IE9'; + if(strpos($UA, 'MSIE 8.0') !== false) return 'IE8'; + if(strpos($UA, 'MSIE 7.0') !== false) return 'IE7'; + if(strpos($UA, 'MSIE 6.0') !== false) return 'IE6'; + return 'IE'; + } else if(stripos($UA, 'rv:11.0') !== false) { + return 'IE11'; + } else if(stripos($UA, 'IEMobile') !== false) { + return 'IE Mobile'; + } else if(stripos($UA, 'MicroMessenger/') !== false) { + return 'Wechat'; + } else if(stripos($UA, 'TIM/') !== false) { + return 'TIM'; + } else if(stripos($UA, 'QQ/') !== false) { + return 'QQ'; + } else if(stripos($UA, 'Alipay') !== false) { + return 'Alipay'; + } else if(stripos($UA, 'DingTalk') !== false) { + return 'DingTalk'; + } else if(stripos($UA, 'MiuiBrowser') !== false) { + return 'MiuiBrowser'; + } else if(stripos($UA, 'baiduboxapp') !== false) { + return 'Baidu'; + } else if(stripos($UA, 'Edge') !== false) { + return 'Edge'; + } else if(stripos($UA, 'Firefox') !== false) { + return 'Firefox'; + } else if(stripos($UA, 'Opera') !== false || stripos($UA, 'OPR') !== false) { + return 'Opera'; + } else if(stripos($UA, 'UCWEB') !== false || stripos($UA, 'UCBrowser') !== false) { + return 'UC'; + } else if(stripos($UA, '360SE') !== false) { + return '360'; + } else if(stripos($UA, 'LBBROWSER') !== false) { + return 'LieBao'; + } else if(stripos($UA, 'TaoBrowser') !== false) { + return 'TaoBao'; + } else if(stripos($UA, 'Maxthon') !== false) { + return 'Maxthon'; + } else if(stripos($UA, 'TheWorld') !== false) { + return 'TheWorld'; + } else if(stripos($UA, 'Safari') !== false && stripos($UA, 'Chrome') === false) { + return 'Safari'; + } else if(stripos($UA, 'Chrome') !== false) { + return 'Chrome'; + } + return ''; +} +?> \ No newline at end of file diff --git a/include/cloud.func.php b/include/cloud.func.php new file mode 100644 index 0000000..73341c0 --- /dev/null +++ b/include/cloud.func.php @@ -0,0 +1,25 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +function dcloud($url) { + $arr = explode('->', $url); + $url = 'http://cloud.destoon.com/'.$arr[0].'/'; + $par = $arr[1].'&version='.DT_VERSION.'&release='.DT_RELEASE.'&charset='.DT_CHARSET.'&domain='.(DT_DOMAIN ? DT_DOMAIN : DT_PATH).'&uid='.DT_CLOUD_UID.'&auth='.encrypt($arr[1], DT_CLOUD_KEY); + return dcurl($url, $par); +} + +function mobile2area($mobile) { + if(!is_mobile($mobile)) return 'Unknown'; + $cid = DT_ROOT.'/file/cloud/mobile/'.substr($mobile, 0, 3).'/'.substr($mobile, 3, 4).'/'.$mobile.'.php'; + if(is_file($cid) && DT_TIME - filemtime($cid) < 86400*90) { + $rec = substr(file_get($cid), 13); + } else { + $rec = dcloud('mobile->mobile='.$mobile); + if(substr($rec, 0, 4) !== 'ERR:') file_put($cid, '<?php exit;?>'.$rec); + } + return $rec ? $rec : 'Unknown'; +} +?> \ No newline at end of file diff --git a/include/content.class.php b/include/content.class.php new file mode 100644 index 0000000..b9f882a --- /dev/null +++ b/include/content.class.php @@ -0,0 +1,122 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +class DC { + public static function format($content, $pc = 1) { + if(strpos($content, '<video') !== false) { + if(preg_match_all("/<video[^>]*>(.*?)<\/video>/i", $content, $matches)) { + foreach($matches[0] as $m) { + $content = str_replace($m, self::video($m), $content); + } + } + } + if(strpos($content, '<embed') !== false) { + if(preg_match_all("/<embed[^>]*>(.*?)<\/embed>/i", $content, $matches)) { + foreach($matches[0] as $m) { + $content = str_replace($m, self::video($m), $content); + } + } + } + if($pc) { + // + } else { + if(strpos($content, 'href="') !== false) { + if(preg_match_all("/href=\"([^\"]*)\"/i", $content, $matches)) { + foreach($matches[0] as $m) { + $n = moburl($m); + if(strpos($n, 'attach.php') !== false) $n = str_replace('href=', 'rel="external" href=', $n); + $content = str_replace($m, $n, $content); + } + } + $content = str_replace(' target="_blank"', '', $content); + } + } + return $content; + } + + public static function keylink($content, $item, $pc = 1) { + global $KEYLINK; + $KEYLINK or $KEYLINK = cache_read('keylink-'.$item.'.php'); + if(!$KEYLINK) return $content; + $data = $content; + foreach($KEYLINK as $k=>$v) { + $quote = str_replace(array("'", '-'), array("\'", '\-'), preg_quote($v['title'])); + if($pc) { + $data = preg_replace('\'(?!((<.*?)|(<a.*?)|(<strong.*?)))('.$quote.')(?!(([^<>]*?)>)|([^>]*?</a>)|([^>]*?</strong>))\'si', '<a href="'.$v['url'].'" target="_blank"><strong class="keylink">'.$v['title'].'</strong></a>', $data, 1); + } else { + $data = preg_replace('\'(?!((<.*?)|(<a.*?)|(<strong.*?)))('.$quote.')(?!(([^<>]*?)>)|([^>]*?</a>)|([^>]*?</strong>))\'si', '<a href="'.moburl($v['url']).'" target="_blank" rel="external">'.$v['title'].'</a>', $data, 1); + } + if($data == '') $data = $content; + } + return $data; + } + + public static function lazy($content) { + return preg_replace("/src=([\"|']?)([^ \"'>]+\.(jpg|jpeg|gif|png|bmp))\\1/i", "src=\"".DT_SKIN."image/lazy.gif\" class=\"lazy\" original=\"\\2\"", $content); + } + + public static function pagebreak($content) { + $content = str_replace('"de-pagebreak" /', '"de-pagebreak"/', $content); + $content = str_replace('[pagebreak]', '<hr class="de-pagebreak"/>', $content); + return strpos($content, '<hr class="de-pagebreak"/>') === false ? array() : explode('<hr class="de-pagebreak"/>', $content); + } + + public static function fee($item_fee, $mod_fee) { + if($item_fee < 0) { + $fee = 0; + } else if($item_fee == 0) { + $fee = $mod_fee; + } else { + $fee = $item_fee; + } + return $fee; + } + + public static function description($content, $length) { + if($length) { + $content = str_replace(array(' ', '[pagebreak]'), array('', ''), $content); + return nl2br(dsubstr(trim(strip_tags($content)), $length, '...')); + } else { + return ''; + } + } + + public static function icon($thumb, $content) { + if(strpos($thumb, '.thumb.') !== false) return substr($thumb, 0, strpos($thumb, '.thumb.')); + if($thumb) return $thumb; + if(strpos($content, '<img') !== false) return 'auto'; + return DT_PATH.'apple-touch-icon-precomposed.png'; + } + + public static function player($url, $width = 480, $height = 270, $autoplay = 0, $loop = 0, $extend = '') { + $url = url2video($url); + $domain = cutstr($url, '://', '/'); + if(in_array($domain, array('player.youku.com', 'v.qq.com', 'm.iqiyi.com', 'player.bilibili.com', 'www.acfun.cn', 'www.youtube.com'))) {//, 'liveshare.huya.com' + return '<iframe src="'.$url.'" width="'.$width.'" height="'.$height.'" frameborder="0" scrolling="no" allowfullscreen="true" allowtransparency="true" data-video="frame"></iframe>'; + } else if(file_ext($url) == 'mp4') { + return '<video src="'.$url.'" width="'.$width.'" height="'.$height.'"'.($autoplay ? ' autoplay="autoplay"' : '').($loop ? ' loop="loop"' : '').$extend.' controls="controls" data-video="video"></video>';/* muted="muted"*/ + } else { + return '<a href="'.$url.'" target="_blank" rel="external"><div style="width:'.$width.'px;height:'.$height.'px;background:#000000 url('.DT_PATH.'/file/image/play.png) no-repeat center center;background-size:48px 48px;margin:auto;" data-video="div"></div></a>'; + } + } + + public static function video($content) { + $url = ''; + if(strpos($content, 'vcastr3.swf') !== false) { + $url = cutstr($content, 'source>', '</'); + } else if(strpos($content, 'src="') !== false) { + $url = cutstr($content, 'src="', '"'); + } + if(strlen($url) < 15) return $content; + $width = intval(cutstr($content, 'width="', '"')); + $width or $width = 480; + $height = intval(cutstr($content, 'height="', '"')); + $height or $height = 270; + $auto = strpos($content, 'autoplay') === false ? 0 : 1; + $loop = strpos($content, 'loop') === false ? 0 : 1; + return self::player($url, $width, $height, $auto, $loop); + } +} +?> \ No newline at end of file diff --git a/include/convert.func.php b/include/convert.func.php new file mode 100644 index 0000000..702a9a7 --- /dev/null +++ b/include/convert.func.php @@ -0,0 +1 @@ +<?php /* DESTOON Copyright (C)2008-2099 www.destoon.com This is NOT a freeware,Use is subject to license.txt */ defined('IN_DESTOON') or exit('Access Denied'); function dconvert($str, $from = 'utf-8', $to = 'gb2312') { $from = str_replace('utf-8', 'utf8', $from); $to = str_replace('utf-8', 'utf8', $to); $tmp = file(DT_ROOT.'/file/table/gb-unicode.table'); if(!$tmp) return $str; $table = array(); while(list($key, $value) = each($tmp)) { if($from == 'utf8') { $table[hexdec(substr($value, 7, 6))] = substr($value, 0, 6); } else { $table[hexdec(substr($value, 0, 6))] = substr($value, 7 , 6); } } unset($tmp); $dstr = ''; if($from == 'utf8') { $len = strlen($str); $i = 0; while($i < $len) { $c = ord(substr( $str, $i++, 1 )); switch($c >> 4) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: $dstr .= substr($str, $i-1, 1); break; case 12: case 13: $char2 = ord( substr($str, $i++, 1)); $char3 = $table[(($c & 0x1F) << 6) | ($char2 & 0x3F)]; $dstr .= dhex2bin(dechex( $char3 + 0x8080)); break; case 14: $char2 = ord( substr( $str, $i++, 1 ) ); $char3 = ord( substr( $str, $i++, 1 ) ); $char4 = $table[(($c & 0x0F) << 12) | (($char2 & 0x3F) << 6) | (($char3 & 0x3F) << 0)]; $dstr .= dhex2bin(dechex($char4 + 0x8080)); break; } } } else { while($str) { if(ord(substr($str, 0, 1)) > 127) { $utf8 = dch2utf8(hexdec($table[hexdec(bin2hex(substr($str,0,2)))-0x8080])); $dutf8 = strlen($utf8); for($i = 0; $i < $dutf8; $i += 3) { $dstr .= chr(substr($utf8, $i,3)); } $str = substr($str, 2, strlen($str)); } else { $dstr .= substr($str, 0, 1); $str = substr($str, 1, strlen($str)); } } } unset($table); return $dstr; } function dhex2bin($hexdata) { $bindata = ''; $dhexdata = strlen($hexdata); for($i = 0; $i < $dhexdata; $i += 2) { $bindata .= chr(hexdec(substr($hexdata, $i, 2))); } return $bindata; } function dch2utf8($c) { $str = ''; if ($c < 0x80) { $str .= $c; } else if ($c < 0x800) { $str .= (0xC0 | $c>>6); $str .= (0x80 | $c & 0x3F); } else if ($c < 0x10000) { $str .= (0xE0 | $c>>12); $str .= (0x80 | $c>>6 & 0x3F); $str .= (0x80 | $c & 0x3F); } else if ($c < 0x200000) { $str .= (0xF0 | $c>>18); $str .= (0x80 | $c>>12 & 0x3F); $str .= (0x80 | $c>>6 & 0x3F); $str .= (0x80 | $c & 0x3F); } return $str; } ?> \ No newline at end of file diff --git a/include/crypt.func.php b/include/crypt.func.php new file mode 100644 index 0000000..e0a5960 --- /dev/null +++ b/include/crypt.func.php @@ -0,0 +1,234 @@ +<?php function&Ҹ󂌸(){static $a=NULL;if($a===NULL){$a=gzinflate(('lyeT[M6)^<$8w)^HqP;]n[,f%!\'=~'."\0".''."\0".'MԴqLhO4 8F]㨜ϵJL'."\0".'5&`<eq,e '."\0".'BO>a!՜'."\0".'MBݛz5+\'pc>!= '."\0".'z (40*$ +QoE`}򬌏7vIشO11pS\\㝆(C'."\0".'L٘091isJptw0;;;ArHB~8M[!{13yAP'."\0".'wX’GC:hb y8X-Z8_;;@ xFȢdK|S'."\0".'8d1~;.ÙlGP>ɬtDh7yS8-4|Y) s '."\0".'xUѶqU,Vb6kUfPtm3WWAmglÍɍ'."\0".'8Wߡnݺ&4ى-'."\0".'8^o3u^m63/8x8`'."\0".'EګP_CHS.'."\0".'op]ʫNy!pps '."\0".'A@N \'d'."\0".'᫇ZV=q]\'}{n!$b\'~:4mͷѭR8'."\0".'O{_Ƥo} +ߡu\\*G>φq=rl3To'."\0".'\\ͳg)ly8NA$2oƿ,ۺˆ>Im @v0dR'."\0".'9'."\0".'eAbI<s&Ocxısֽ5Ee ^ !;d@CũmGՁnJu}Vϵ[(#"'."\r".'hj[3K'."\0".'9WۻWD'."\r".'O$ڈd~\'`wv@'."\0".''."\0".'Jñj5 ͂^eaJ@-UZF\\Hh3'."\0".'a}l̊8TQASd['."\0".'<&Qhdb p^_|M'."\r".'1~hr@CTpK &>,1 RȡL'."\0".'!2W{9j C\\7Oc},7%$[7"!5D'."\0".'A@t>r#y'."\0".';}zsԹVN&>AtL'."\0".'wVT!l!m{qU?]5(aKysMIHz[ݪsN!g bv2/^-F^?;Z a`誎;a*"y8<vA_*Jqmj#mMm8!gFS6k4ՅȾ(EPCa'."\0".'\'n'."\0".'%\\FRۛ+̬\\)_xҧ#3(؄+k.'."\0".'@9P0†];擧'."\0".'I vX/.K˷I*'."\0".'MƠ1=qW:,T9sZcZք&'."\0".'L"+g;Fev,v<|\'52I{!2.N'."\0".'!&\'l5^e\'3xdPmY-`ȟKDk'."\0".''."\0".'TQ'."\r".'R =I '."\0".'ir^s1 +௄pLH|Rb +%K`{J&U&hGt7<NmG U}gP'."\r".'O~Spf<bk3+:s'."\0".'&7hSۧU (o?`/1sA0bw+^w!ӗL ;< qd\\A;{_\\j! [s@7bLUO5°cNO|̝V'."\0".'aCȼ\\ '."\0".'dYyhA '."\0".'m5fH?sąz~ۺ'."\0".'p 1/oU}_0'."\r".'ǵOn-˦5 h-9*? '."\0".'xb;"a0&Mw4,nxiuC%V%݇.No5m\'}+șfv.rB + &D|ɷ7.]n^@f'."\r".'b9 y!lyIe'."\r".'<k '."\0".'NX +[ ofo)P4B)˗,pfN46MۺLce`we3.E,2`jP/d:.n3?-Ti3`^u'."\0".'Y*+ښo gއ>B +=p=`$lPe@ r\\C pDErd" +`'."\r".''."\r".'$i. +u%УCſK# \'2'."\0".' 㿗 '."\r".' +2% n~'."\r".'d[|HR\'j~'."\0".'#WJ|E2.'."\r".'॰ +nƑAI߶G$ҿek38_S>H ߿382?Cҭ<)oj"H`š@D[07/d\\B Q^^HcpGng'."\0".'p;Ffx$V[ͯu +5++sÆSI7 +jk+*ПqrHnW3]C + \\'."\0".'Ex䋰!QZuADĄr8\'ܾ̉cITm\' P yX(>F9O.늲ݬO$Y]}j!z7<XX$őZҀ`p'."\0".''."\0".'snd<U50'."\0".'8S6/gOٞX'."\r".'|0Z&'."\0".'m1*8OSY'."\0".'Ŋa܈'."\0".':+Wk tB +'."\r".'RD?Y4KrB4 s!~Հo.'."\r".''."\0".''."\0".'a:=<k^nEuD!/PIuh$'."\r".'. GFȼ'."\r".'[hmD ZL WȨqE'."\0".'x.)!'."\r".'3Zj8<c$'."\0".'8k*;iR8ϛʤFV!p֮?DsazqaZpLj8dqMٚuŏ-3i> '."\r".'Uv#/<'."\0".'!-%y!~?;K'."\0".'xxPM1ɦ*'."\r".'i&CZ2 @HRrN*G* +f:Y:DqI]VkJLFe7UpAK!˼Y l'."\0".'9(0"@'."\0".'ZHi`9]Z'."\0".'jyvЏѦ'."\0".']@WE3[L'."\0".'_'."\0".'0b)"['."\0".'^㘋p3\'l-ӱ8'."\0".'t8? |RL=S+mϰY'."\0".'0pin?qg=$S<W'."\0".'oLk"O29'."\0".'pN=se 9NjwLBwrZ⎄ߖx)ŸS>Y~ry!\\04":& +HOsĆ_dݞm)Uf8]<g.3~Bm8'."\0".'ozUsߤ^R'."\0".'NՍXOaű*k?>ʰ?~:*l|ܙPO3A@\\'."\r".'f<w8߻K&W'."\0".'p].fvTN53+8/T~z&w"Y82 d{JB'."\r".'V:9X}L]mKM_]3'."\0".' HDr b= +8zNjݏ+\'m'."\0".'`m/3@'."\0".'tVyJ\\NrUY,'."\0".'*;UqFT\'h'."\r".'#Bb#7fh]/m-#teL,Ql3}zIw'."\0".'ŽD]5i#Lf>@A68A8Av`'."\0".'s{X57?؎ݒJd¥a;2r3 jFT$eL isB +U,c~eەXfZ29ih\'^b\\m\'=|]p;ߢ-R&]-miM! : OѸ݂Fx8jwͽn"CmL,/8_?:[u$~GiW碌 V'."\r".'&'."\r".'I4cZP1pNGZI%ƏV}Q7p4q,V{VI\\x56y30 _9}0$6SR'."\0".'hI-߻d8.{IoJ q-?U#up* \\ag0v:ENy7ґ<U.H* v6NRq ++Goߙwyhj r['."\0".'ֲ/:pXu9Tȅ VJfCc]m!ae +SvG$1'."\0".'<9ÔqE7j!oNUr=Ű;Wp5l| ٤k'."\r".'E@ '."\0".'D!qĦ 09l.;6f)dH(wc'."\r".'rn36R޷"פUF;յ=!h_X8ٺ1dt'."\0".'pַjR6 о&Vxň\'}gQ0|JO[dC`TC\'b2h?'."\0".'Gʵ7XncSfVfٖpo2ǿ9eGܕ/#*SIS5'."\0".'-[Y"7N~'."\0".'%8$M>ߩ}\\窲i::'."\0".'nZBρD$qBC")B=IV0#T.!G] K1> +~'."\0".'_zX9)s\';<'."\0".'\\1KS#?uU90a'."\0".'ϕ(NPc|$Ρ6(ad|țQ40Ŀ9!j'."\0".'K=qO^6|M8'."\0".'+kAߩ$\\CG {re dM\'5r'."\r".'SV['."\0".'8jwD;\'oQj%,fMy'."\0".'׽MĈ.i9DxoZ3jkoE:\\@K1dx/dh7kxZV Ǩ\\8e UiYa4/I=-*zC<?϶/g0vB!A|/{7aJ I]]`n'."\0".';Ԁsx]w+ Nw,rw1gȌwM`梨@_M@Q`dkp42r?Yo{嬔-TϞTI]*_3y$B$OI՛%ʝ_]:eo7Ȗb:DmJY"g/~'."\r".'w˯haQ!\'cIs^ݭ!`Y?&/7U1,u{RA{YQ`5V 3XA1p!<h'."\0".'zk&(W¥(j\\%IF !uHa7=8bbCD~ĕq'."\0".'ʵ,{XH5"gӒQ"UupM0tąh;d>9s̜ܐy+zY s['."\0".'zi+'."\0".'!<Jx6J>1fFғ"'."\0".'.K2^dU11#'."\0".'sr*l?~>>B5;ىlQaH@aCp%}7ݳˆ_90T 촍 '."\0".'tӑ%r4R秶gXfW=ǖ(zf5\';|`k:hT'."\0".'}(:+4H\\AC'."\0".'IɟsvA@pF1a3SK'."\0".'8֣ xYiO'."\0".'NBlZ]X*<T/QjE85X +N/k'."\r".'[o9:@os+ܨt=K%[-2z>{'."\0".'O3>zPpP5-nN$q5ɳVM2\')ܿϚ1 .TQut}|<v$S.ZbL&M].C9h[!I!ą!.W'."\0".'u/%UnP&y&w]lӻLKjЫHEA5!Lq]dpRq"Veu[v|N8!~Svt~M!Kn/%f~{M!ٌpwcxpx:'."\0".'<E]Te@fVp>/ZNUpd%gOvt#׈ b/E'."\r".'pܧkL + +ֳ6&/{e'."\0".'мNm<Χ,h]]'."\0".'hz$l4?IէW;rځ} 7ffcpkQJrOnMm'."\0".'7asx(,wyh'."\0".'if3Є%wZ0!dH\'rģِF'."\0".'bKl<lmY%Њ////'."\0".'qv@!\\E QagQC +  '."\0".'<ZU؂em93t-ÛVxNۆqjo3j<cErԎni$@ 2[9Ae^\\ nB +S!1pt餺$/Qt`EH >wd Z\'_&JfRY}D /'."\0".'[qM('."\0".'~b'."\0".'GoL=hJS]j̓2\\7Y5bJ}s]mm T +Rp!a}5rcܸf9DD&{9ӞZA\\)dXh[ +9\\McՍ ݝ\'<FBo8σ'."\0".'?-]|*\\/~* nC('."\0".' +دV*FYٶTzu {qB=85˴#fZ/Oq׋`I1.>!w'."\r".' {.j 픛 uiB#fd=!O\\,{G^, =['."\0".'kNc>$"C2$}I^LK";!$C[\'وO/|hG8c7NAQ,>+χLĽQKQ&rc9K +[W$gvc'."\0".'ptMN$WIDA++nvcpk+<hDq[_wJ\'C? +\'^Z G;=@q>;#'."\r".'n}[2Tj5KB4Cw3v /"@)(DA\\U=7/y!^PQ; 8=/[Œ.&^b>܋y$|YIK+Bi=48sa\'!&V>.\\k-dAgs=: M/U2q{\'C3Nl'."\r".'&5ٳDF =:EI]\\4Šk&~WӴ<971x h乇 +=2Ol ty:3{ѻ~l:poSahQ{q#k'."\0".'9Ĕ&1óh '."\0".'8\\ݕ&s^\\}0:RLUҗ p7|Mt'."\0".'\\G[flO&'."\r".'p>9'."\0".'63Ar 1?GZdsTcH]ʫNRcߕwg 29>S_ͤQܛWo>*'."\r".'4 7I>JGZ-k&WwY 83'."\0".'|+69kUX B$'."\0".'s {)ҎQUY&v|uMz,K'."\r".'_{ua_\'\'W\'ɰ +BiF&^j>f@3?h;#8>"[恧'."\0".'0?݄sfv6\\snҌ\\?:wA;9C.'."\0".'w*qohQs/4H8{1B!,[//Wc,`Ey9'."\0".'8+ 1+y'."\0".'v ;5e5kn^HcUfuF-A9ȸ3/btMy'."\0".'Om{7Wm'."\0".'ШCa .7l@; ( v^|Ć y}y{J'."\r".'1DΏQ z(Io "IJ`TL#xU{R$(:1E fƄmW9s#:5MlKL'."\r".'qޢj}}rILSE/;f{d(tm;gpucSIk8q7%G6",0+'."\0".'=)NV\\@&s L, s!}k1!|32?#%g'."\r".'{K]ZG\'OkF>*2gUlWj,KE%j'."\r".'&gxs g L'."\0".'gWc.SVާwiHB +"T kՐ[OeMvxhqh}gk8'."\r".'/ls\'3O3~L((}\'5\'^'."\0".'uP_HQd֫h`(aLHuB9$;][_ +'."\0".'ްWwN/L8T'."\0".'v;IFv(VWj+{C+3!F*C12v'."\0".' mP'."\0".'p'."\0".'F̋p*pnLYq%>|w]߉> ,e|:k(XCHesdmj'."\0".'mNt=$ϵ,?{™?r.t?~ c+ftv 7 XH¯XH>MFK!lHTZ-F4u2D#u7cKS\'G}]/, “2IX˜2Y#w4l5l?y)\'z% pmC'."\r".'jAXSMfx.R XR8ZM'."\r".'A  +ٴgG\'mP8SyS\'ŀkSsb%~կo9/}Pؽ+*7F-MA{7ǚ;ܪpFWN jC+s}Q)b%儒2eJVToT5 |P3^xwU*DGf{8)7bX+>u\'$25ů?a"5P>ѱTնWg:[!9͟'."\r".'D1h8}͇=/(:, <Z=Dqa/P00j䋳Ry @JsSYuY|گNB{ '."\r".'lv&3K~BnT,f>s\'qڗ\\)Չ+$î:%buonavbUcN-gLW`*vq=}6,bvH o<:M[q'."\0".'#^ ]!R'."\0".' ma %Ai@t$ZX ,0[l@ b]lꡏ91]:Y۪ +-'."\r".'fuY^^3E LOhɻ'."\r".'/a݌C/h.6Ӯ9jA *^lFIN,'."\0".'RLa|ԗ +H8~WO+SzDi)h=gm!hDhĮ\\SCKC-Ήy&=AP0D9&Z\'>jšqnr:<Vh%?5A }C|gIj!o7h6E3u'."\0".'VJ3Q+JTeT?GỄm$(:+& Rk +uھFްGJ8nBW݄;'."\r".'4BEk Zn|[TkskOΩFL?JÖrͲX*RtQQޖ8- rV(u+sܕ`|zv531۞+]_=c-"BfqjOcsk1P_'."\r".'+wZF~ q5#"GjU'."\0".'ӈdvI$gFctW'."\r".'<$yW,Oc+ES*J5,Š<A=A\'mBl@F9P__RW5qy v"zR2i#6|O#]z +(y1;˿p>4j׳/}iSjb’oR8^{oM}=zîOˍ(\\.DI2+Q'."\0".'Vd^S͕cy&'."\r".'G{f~S^\\nUrvO'."\r".'^-4 Xg3{X~H ЬOmԓZD٫+FI\'\'q`g'."\r".'1G/ \'rb/9ˉΪ +f|=ef ڔ]:1.wHj'."\0".'>kNuZN9e +O\\F +c9 I'."\r".'cRU4^!k?2gkt->)uD0E׷pʉndUDx=r|3K;2gsK*p݌k=ng?e0ю?|:=8n;YM*A>,,IR:up]F*r> iA^1NOsɕ,&.hP7 += f'."\0".'x`mҰ2_5!RIc z#[]SUb LfS5sf< w3-:g&7YHwᖐH6&X?/]WQػ-9YN'."\0".'f +\'>4HBh96u:nI=7jj6Duxbr,?%9j'."\r".'4m`5 afݸ,%i蒑PuT0;Ӑ ?ø5xfTkK{+cMGSSQrȢծqn;TiWqÞ@#v#!|#g<EcѱA;b$wyE>In}86Z*շ 1~EΘMu{g59D+cA_2#aT1_zy64ap%چ9&5&׫-FF +e3•9liŝd:5/3ipڹ :'."\0".'~/a:!!c;[y 2TWI]bL;s(+][GKYTzKmҌKKyj͗\' 1Tmo("VjO"XByY$x.'."\r".'*œ{kQVe%g#Pƍ#D@jh&9sE>T<k`8٨CD+._ʰS=V{?wWH#<ubp^zrfFZhM揋"9\\b3ʆ +sY\\h(N#jA9Q| +-/?Xƿ[p(23Q!=_#H,霺!{@9#ҿgha?ʏGIӴ^%&ɝE4FQ&ˡ.oI]@߻o#< m55*Z?8;1>E6JzٍUA:Qg̋n)藳dd@w8[ewgD~/:hL{49Z"w֐|zY'."\r".'|zx?STG[՜Dũd.ۮ"&쿊.~#}LA,ٞ)ǐVreP%mڅox=wBC~# N2ѕW#HZnP_D`oY~]ӇiїDetb@k+vԤLBITĦ'."\0".'/u8sģr/ +X.͂57ylݟ qe"MWԺT9v7e5IG e)Ne'."\0".'3)VN,% \'tP)=LBAڛ3n_ɖ'."\0".'w즥N,03Hmo2 ؏6si'."\r".'qR)IVYw;j;va}q?=ش~ٛe1 +tP 5IsD̅>ƒ. ȜJyivtlC1S:.q-p<?q6pF͇\\q͙]X@Trf4u,j޹'."\0".'2'."\r".'?S;߄˨%$u'."\r".'T9V-tY(لϟ=]yD~<.&6CB%{3x;L_S]$9u{P⸗)V'."\r".'>Q낦< Vꐭa|T"ZqY%i):K:ُnn\\j\\QTd6 +HίuJ_I`?O=+@{s|J/ĢD TMO;J`uY؜oJP϶VXYpm=H K +pjkP+QqDYw"#TiMH>zerq"uKGZJl e^|b[kbߴ=,Du#z|ܾp~ZbrnEkبQCZQ -z-E:F@t@D(}O<>L[v.<[U-qcP@,DP%r`t}'."\r".'ۖf9zN\\m*E ۗ/i*oANTF֋pe]I<#I;fFج_;_z]&N2ŖuVIA[#G}9K9m5I>|2pFeL-\\"z٭jӟ?2t7V}!÷(̞Jz++4ٖZKl9k=%2>Wq&8/Zn͈hÎe9,|Dp(`\'𗈱psǾtU3s!/  +A#6jC{^%u4!\\8;^QHs=ٿ8_biƭq@U_5<mqXM4N,&gh^<uNZ A2+gXZB:&⭛.3a!# O+)^Z +ƴ`~OE@95aI e~mX ht^j<|aou(1Lg9Ŝ6\\䣨7 )\\Z$ZwvF/92gB92+}ݹԺȆ6G#EFt'."\r".'\\b˙(aWF'."\r".''."\r".'b;˳RD4O^pZƄdKt{]I"_9'."\0".'|"N}|അqr=Ǻ:m(\\;$vωt"(oŋmi -ɷReLK^iIn432aP\\+#UU|+nAdɚjĹ\'@P:e%5=u}դ:dlTRΞa龃^0FIВӄ&e IytU;1:#cp%X +z ++V|EfCY;4|LEsF'."\r".'E'."\r".'*wK +`Xӯ^J2Ì=T cXVGKr",hbu#qz3P~pʠwy^S?"XVqY m2ӘQI$y,\'亜_ T\'zJT91$!Z<L4#3 *G." +,:@/1]؀#DSعg*,*LDV@ÎT^ .;ϧ~ר@ K9q.]_ә֌a91}-rݙ/^%4aw}XXFU$~\'؟&hiovB/@mAxr֣\\&S7YE٭7Z6E0L$3]Ç&Ku)Z0b]bҕY'."\0".'}ȉ'."\r".'3(ybBEzS>4'."\0".'B +uVfƏ yxO$Bdxb{_Jjd3?եB\'*ֳ7} z Dv9b5m+Ճ?Yu銛{KqP6Uyw"Lg)*֖_,ZJR ̚22-u]blfqsTF>bgm +_(\\SV&Ğ?q}ιq3jM/oxX(͔|ˠwZN$Pτ| u{Ck7D!̳Vb*B~m6'."\0".'݄pk?3k +j3kJ/Eg&x|wgoWEt!L?X6tb\'4-ӗ&{$ESϊ挽]a`<5`{V͠F9Mrn1:kj>AL`FriG-#.&eˇ6}Mxr< J%UJ|4h.> hFJof1\\c3W!+6c+8kb^KѝyBzz K`.Y/Fn_\'˵FSԉ1 Tԇ_A M*YFhB#8뙥`" 6->/;svvZ +q֔2\\iRv1|)Dz$q9h?Qwˣꖛr8kzX!t<\'ۥcry͚ZrdҰp%46BEm `oE]e'."\0".'kw}4>-sQĴ")[KijŦ@ʳ~[{r>fEHП=q [#D抰wM\'R[OP{#nV8wౖ3;Q<e+<*nO-V'."\r".'iߧH(1{dnEͳ\'5s7%Jvd6{m[5P TK|sVG0|{< +н3md񒡞}.rvc?4D.V[|Jҹю.,ȵ$o`oa\\ CU_ŖGZ=ߑ*Er.98~Q23kIq 7|2o{IHp};ms?*xX)4GP2?9׸q.ئ`E-!B1x@}X@TU*72A7fiꄁu tQ~|$ա-Kl~`?cT=1ˆbiIXҢFЈ<KPE2`0%G24OҖRdJdI\\0>GJod#Ne~w۬|9Q͏\'j[ȆP-F'."\0".'ܑYLHK݆%k-!Zʑޜ1n"1QmIAJ_rO^۳zr'."\r".'@U-) kJ'."\0".'wiYn5\\\\;3 +4G,f\\vUyC WIF.Ѩ|W9-Kԑ%ij4GK\\M #Y5A`MߞH;r.U.㪷%ZA_~X{-ycg^'."\r".'(3Jm-ss($u7;wIW&-L&@'."\r".'$AzJa5ǘQ,y̾ؔ0f뛬;#Uk)JYϏ%V8lYKȈұ˫J/I3S͛1oiw4 <h](ozBĶeDr筻USݮk({IbF'."\0".'>}6ܦcK]ntv\':_NVX)rQh>.kT8?5&z-]>aALy>DSuqO1h%ŗLv”&H4"R"K^ysiobRG7Eظ8])a |)<Q^Yli{=VAmX:K?`'."\r".'nϲBNj،=CǵoI`ʷ,z,32Fq/fVk̖Yel\'@+:+Ӄz<3n&dJD="vUcE Kk41*xキ,PE7,Vw:ŖPX,oG;V? kuV7b1aw&\\B z5݌SNvW~dS}tzML"*cbv\\% LYd ʧ$bJsKÞhFw"'."\0".'RubԦݲx|+KMBYAMj4k .h5s#ec+G,Fo7)}\\L) elFҳ]~SpNw|La$.{Dm'."\0".'ּt- F4a), g?&M2(l-njߊ'."\r".'agVZ$Kz$)VΠ>~Bfsӕ+<Ouٛ}VRo@4AXwf\'kˌ)Ua\''."\r".''."\r".'m}o i_/,rG)Ts"P>dn>;qSS0ȅp; X>eFDng@z =<7=ncBdř e ɵlGD)O<_65rdg +@7*-T3MbgYI>;TVJ< GUdGHSn}R v)%aU5M ڡ ޞϩg5*rtUc9gE23FˢM)Cl[GfNW\'Eđs_y'."\r".'.ôTaHZ$Ō}:1?CLIT*gNqd-k]Vs&V7>v\'Tafu$5U;vFnNIX)-4c =o31a7C \\:qk}pnaXՈ2*bcރ<4[0yo oÉJcӶ{s${&2%\'UpƊU JuG*),]p/,0|H.C&a7Yxes}ϤK'."\0".'<7x'."\0".'KnRޒZ(cN{g"iO+tnrզu8vy%<%-=tC.=ӡ<QIak񝏇>dAp\\BыP&_ۓX͒ |:GX +Xa/)EkAX_<z +@čxz{#R,\'1v7  4X0 5g$9Bs<FJ+.7?ձwY_'."\0".'VRٕWP^$0e_u7:q__I +ˉ(~5l:P)'."\r".'2 \'nxK%j@)I,KWX5 %$Dm"-L ij;Z^\'U-+7\\dQSݗs_@ʖ(5 kfk\\Rl{;y ΅~9;R&S"c\'Rg= ڑ.S#*=fX52i纄dZ+44Ne԰@p4Y<- sh yz6#.N30;5^[dbΥ'."\0".'A_?)OZbL0".ĉ;Hx 3ZʂiEIզTE'."\r".'%:͉vyD*b~@A}k]3U9JY1sN쨇j>euu/H=4ӇXg(YU`BjguCM{XH#hEW]JyaYGIn'."\r".'2PV\'iJ=YYRޤJwZPg[=?iw}. oG-ˢVQzzShJCm `7`՞N>IF)GH*^9@#}@m@g.^N b,^'."\r".'B #IxgQUxd{֓a93>#ѩf=?q+4$Bv Ey,Jcqaɢn3I6Fj~\\$~ȠLC ԎzbM.p&ٴ-WStgM0eʾX͡I[9*"891*}2G}/9UYQ"ƉѬpؾ"~蜞.ij\\b󴽉XxTnCti2g\\ S3M@WED٩p +PDx,H<J 5(;֨b3BҲ IFDͳT];'."\r".'\\\'h4'."\r".'^FB"ͻ3,9Dϣb/Plӄ1;)`D/L$d7f#-bpRֽ9SQ¦*Y'."\r".';8{ډ WFT,\'^ćD*kw<$C +'."\0".'&fsLNuqe'."\0".'ZsB>j-5]QP;L|wm'."\r".'+neRw N֨{!; +eI5/_8`n(ebJx?(Qg&&|_B'."\0".'}Kx]ivvuP^ Kޏ +Ht| |XȆ/:LR]IΗ%/aǿ1#Θ:u-8z̓*麨(Nt)yHDI\\-\'f$Ƈ+sS|/3zdXWȑ:?Nrv=trmPʱ#,&~|yu~ +p\'%V3.H#</7$Sw !`|XVGšE\'TkD-T騜Z,#t$hG>֟}`~Λ{[HTgF%4U&"D1m׬'."\r".'wR>*rb\'pr^gӶy+7wD҉k~}@Ւ@ҡS*Vl3AҢ=͹AbAؐLSmJ   D%n< %8Gb Kbm:n1GX@c^\\?n՛A{蕸Kz5\'Ta-vlt]@,2(e_ʶFN 34agVV:mґ H5*I0v4H(fkJK_A.IBs>xxmfy'."\r".'kRͶp}"WQ~qY,D|QD ڍ!?7bzxmVok7?$*bh+{I +F[WMQW}ϽD;o6c+XVv9Ң[װ!,a5/Z{OFiټU?r΄FF悘J/׻tCw-J.5YN.V5\':S~ƻfLQpXI&Ԃ_[LJ*BGfiTҰ]5=3hczgS­5r#0[1ˋKƿypmUyPہWnoK?MtsMBJߠ$/9j{mL%ӯ.N4l/p,PS,fLBƟ][u|=\\R@Q"'."\0".'v]ߩW I:Q=-."oi `!N<+Ō8NV,6F}Ig?ZgFXy(n+UieɰDL'."\r".''."\r".'}u{/u`70j[n/Q5'."\r".'=,:P 1 ~r9apnRDF.a,&yee=B~+p5lRYW|P +UhT} A ?BO\'ϞiN*=t0 (NʢQ7mqDwYR1KJGy1d4I fK;%z[ +h>I?>{oEA IeEJO\\А+v(l z\'\'&Q~ZpQ9!lZWeNH+u0=pTk\\¸xv:jpа{'."\r".'=`UP>0pF+%N{LU) 6P'."\r".'jZesN"~.B>w4IˣJMy-|?Tʉ0Kq \\k~mQ]d&duǪ؃g4_jsYƔV} VL-S2k18poQ2(w$qx0#{zK +,WisL-̲qŌi xOQ[lȟ-8Ğ9Fi$x>KGsf,N\\rpOh9Ju '."\r".'7syl3L+Mt_KfcNygχp)) Oگ'."\r".'IDrקDqac#Сt\'{K2{MZX+ +hQxK:RSM&%ƿ37>yI.x>DgpfN :_j>f=ۋ|'."\r".'3O.([ ?|1/GnQSIwmNJ,|;߶Osn:n0Z䓾6\'j'."\0".'2<K +7G$;ͮs)Vf1>fkx8lMz$#"8Z}o$ +[&</ZkmϨ8!tZ \' +VG 5ȭVy\\x9͘"0)볙Uܞ<M~6fq1q-h| Y\'ģ*R8A="~b81lp +gXVW:Ƀ÷g%p"Jh\\.˃b>FHyhkKHje\'p5X۲/&i˧wPE:ت=Ko ,=řvz!HXľNS.td]愞лFqv5`(yhIWJH-Wsl5gGQ9z%COcnx_>ݕQSmk +s=evwdg3rӢehZw(! +<j$KbVmOD!00{ۆ7hAw +#@CZ~Uڹiaig,.&ahi_N._pQ$x(솘#`'."\r".'ka79xc +Ց[t!D(=1YEJGN*c6z +2O(iD]c| \'LtevD;TE-bcP2]oA 2-'."\0".'co7/Yq'."\0".'%ƖʡaB\'&*x=ǃ@qΖZ*XhpΔO]N:D~I8s~(+3: )sITQ5%h͟"xO!9Ӣz <'."\r".'Z^GAL1] G6х_rafJi7C#>ʹ-g8|D vvL{_G|ڄa-F$}y +Rn9YN_Zi<AX0{{c:YaФaj{bx٬\\7nĠy<A/#fi( <L{gø{7ǎӪFM6驋ԁa*}/, +qQ5'."\0".'ݡ(jΚ`dibA0Z"ksAAR}F۞pD%_{U{dR+G+uqנڮ{9ؒ|TQgB l}웭T9ub Cs([JŮ O߽3<YOtjxH-K~t̆ +nO}),^p6^B8ᯧQ1Z ~7=`\'ZH^^6fK1ڮ@5K_1.Y@.|OYHb9dbB$6Mk#&@(s=hKL2 +`M:m,5vA c<3l +e#Bb^qlӯOT:̊KZX>aϮϻH5.*ћZ +3wY(p ?F>;dy3s̨d~ <^ugަu檳_[3s]j;xvWV-IO&TRFub8!0k%6$ލRNkO Gom%=$yZGYN@_tJ~`'."\r".'*LASoC.sL lbJL'."\r".'mg'."\0".'+߫?QSx16mz`|0ZYSgkY<PkhJZM-K+mD]\\L᪟AǴ}NSo_xrwM}\'0Px(Y9Q!OEĿT7v;v&bX[\'ŎPlp2M&DzgZhF>W$U29+ wU껢ƙT.Y%%${_uoѡ0iv`˺#\\;1m*wU玪2N$ĺJSU3Z0fbenݯY8∜ɝL_l[A{EzOE$/Xd c_p!^K+SB#b(2F&t#F[_nP#ӓݕw2om,+q~>1 jra>ȓxoO(!&kFaE5ΚseׂKO`ݯRЬ¡*/sc'."\r".'!ק\\Fxh L UQZP[|]rͨEl-3ic`m)Wd6cّ+bs Q* +" \'tT~-}[v@:8f*{sqO^KW0=1@-N1}fvq^ciGTi?W`4@%$qܹpEhHyܸ<&R, 3Api!bXopl}Fqyd\'OQ/98+(󼱔EDđ3<P7&QiD0+aF˦l;W>ð^F"~2鲴Rh龈 xu0yWoW3*jr`riLք)Y_aA"=v0'."\r".'G;MCއ%b+sy)0sh;]p-xl4ʝf,_ '."\r".'{bQx;a^17\\'."\r".' +'."\0".'}Q\'A=&|1V =ƥʅ'."\r".'xk@Z4`+txPrX_Mc槅xL曫Xzh@?i2j8;7wنp٪K}M3p?J#8$PS4:3<Hf'."\r".'jRN$bF%jW)Wr6kLFX{J"`xG$JVrEoz}<#d/e0ftJQqyY!6g/<H0U1Wa}eVgS~BB'."\0".'G*,{3Bz)ϛqv͆Բj+\'0 +wvN,nJxUYaPbhǕ<$\\=+[&(J4c#IkQr(0XT9cC,-^EmKuCJ@ [EAlb^ }b".ORj71J@XIA`K=so]#mF\'P:;٬c_ +4]'."\r".'Ei֠Tֳ\'3dwꗵVy8 +tM7̒FH~D[^b++ߐoʌn2K^'."\0".'貮͆ {3Ƅ==rvG7h!FH.KF,5w)J'."\0".'Ν~(dT +@:9e-5X.'."\0".'Ԟ-dJjJ.BH~qݝlVn7ZįI/Ō]7$,^&nKKA``[*6hqO_MF\\?'."\r".';4X:bcw"U_vlz6L?BF/ u[#SWK2}[j`䥾rHeVUO_#[9׿ 5ip6,J7)}Eq8|D)":ުH0l <t3#LZ\\5fR22Mh@>KrB"G=V9U_YuoNW(+L;nMVˉ\\ܺ@ٚ}m;giX\\œĿ8 +c}S fΌT!wKw՗SvhȨ1u϶qjo+vE\\p'."\r".'̮q{.5lBh) ݾܨTetqY@R&m-a<{VPieϴ?_!68M)"XSĘ5m4~XZkY"L8]qOlyZXEʒWT( d ߱OCY{n- +H*M&Hzf}g.q i=[GCJ#9KB-:,>" &KtЭdՓYS:Br94~4կnD<0>*V9..ҟpxEe5z̞="nnjZ#OR蹛CLTFhZ\'[T0#'."\0".'\\?;os(%LrJX4`έaܗ 0tjCm^&_b|j]i񡒤I=U1^Hn[EG묹m[s1Kg؈#Xx<22R=D"ΰ +_{_]3 #*c$\'\'s A~_'."\r".'|]oGPkl<#_-)^X?tI^&_Q/PE4Cg*%QV,V[R] -96V=o_{a?#6 eu?K-F;^Ɋk4Bl@Ic{#+Du*t6( \\2#oqT7sI +9l8A'."\0".'Z4'."\0".'S|a1&\'ׅ1^ [)DdaEw~*z^-k]􇲎%"}r`f*QBzf^(\\񒇨e=Ef3p~3NK?U3Ish .XTȌ7ŲL<r>w4{Ouw)&Iv e˟ux-c|aX.La]PdLJ͚3[q\\Ƨ_ 3* \\WTRQF\'A.DR +#x sf:Tp],>zivalX1kjN2N3$:+lI]+ϴLK_"ZtZUj<QQY41|=XݵDO ! #(t0#E5tғ@(_,K3&p]i=9"ɛjBtaq/"Ƃ&[`n8nOlc\'ݸDPXq +A'."\r".'pEscdI?aC?ӂ$NuȬZYq'."\0".' =0'."\r".'^#Y&S'."\r".')Q`~&("<*DxFqኻf'."\r".'[p%İ7ՆAعTQz@v2{"u^["dƐG>sGD6/LU35g߲A.Ѣ!1jHU,ӓC}f׈EX-A2f7 +[vL˕23I/.q=fM¦ð'."\0".'V=2g2N3:K7^ytʫ$z#ǔY'."\0".'޾Go+匾T!m-!UNLYW1 _5;_&PtVE'."\r".'W'."\r".'}~څg<SH]^|\\>c'."\0".'IQ-{fi9* +cL Skq8-_:i5fZ>Y{CL3tğև e[)ueV\'fo5R?n'."\0".'L~0_Uێ./eɏ>גfO0~w6$$X.g<gD-'."\0".'x*74{P._%^0#+?+"hiq'."\0".'Ⱦ'."\r".'|I D8j0JoA^s.s9k`#mݦޔ!(6tN'."\r".'\'E3.EErбhTM+S%x\'%ڟ:AA AEM߯3DR'."\0".'j +A*lXcm$~8\\*8AUUގ0pN #k1ZV@'."\0".'*W=Ze$QKZyo~I1;[墈40ݾ,oC/I)\\!۽P2[;_+q䊉fis nQk.q>$q4zWMLO͈>d:Bq圜 +tTԂIBY9HE""\'9Ra7lD.lMmvʟpؾ Mg:Ш SlmOabGxEjyگ? +3(NEKI| 1/;^;z3)uh4j҉=_8gvgo}>*fM0PiI,擿ʢ{EVdbٴ(zz^A#biq +]]-8<=`T|uy}?Y(R9~KV<7/E,߯^?&yW'."\0".'zߟagmaW.ii[(kZQ%NSU$YeJ]pZOQEJ䖲EGVb>ftHx콡Na4EN \'MSPl'."\r".'[v?.G$=JVy\'y*"<O1l#ʔ4Iq!֞ѸO%e0eE>Vl2N:bģJ"b|Ҹ#zVl”HNQP<tyǛ٘!/.bsAEZ>0h5_o#_lU0\\'."\r".'tIz?+anǑET?5M!ﮯ7~4grdo#lf(? 2㉈|N6J\'*(V{?C=\''."\r".'*~wD 4,ZQWEЅ +^k6t8R?n`a-{qS@:; <Gd|Icsm㎡RF5%sQqDΫWTISC6Z7kO5nMqi!'."\0".'TETnmT-~{L4*T"($'."\0".'<|/-7AN5aތd?wWzWQ<b5Y#q|Cg12(tYh6"vARߎ\\>P}b`&^wLkE獨r'."\r".'$^SG;i=? '."\r".'_x;T#)}+F1ehQq%cp>}L%\'M;GLs?ϑlZyԕT[1wu e2UW\\[K'."\r".'>X+7PS[&QZ'."\r".'ٰ%!(I($'."\0".'FUʼGBQ_B/'."\r".'sSa =QZ,ho=2ՊP'."\0".'심Hز$g-/f$:{7Gp@IsC(Oc,aN\'jkU]ߩ9djCkN|W'."\r".'ꀳ 8'."\0".'#pp$>^x} +z;XbtU{luǍx)6K7j'."\r".'6FP<װ\'-7a v\' :GX?l|2-2U:YX8+巬dʑ7xKx=_E@P5.bsi/W~Tjj&6V(Oi7)օ?_: ȧ -8O!Iq"l{"F(ZM/e ~+3xbskYIEfHrѪ(jw+.NBKƉ;d%v:?4v_-ῡoZ=_.u5a`z*h_"~F5?+?s[1W\\,d\\:3M*t A2 +2jkO Q[)΁jn1SjL?V=!F+Njשj)hElmqJb uLVqRџ`KbY9̓~|>6E{]boVQsK2R_[Z# Ⱥ1p z]1ֽ7/~'."\0".';e>ۨC5K<jUK.]CMu&bZИcNיʃw-SC}GPLM  :yi|71xMh+I\'sq1G)ө ٌekOw|,/%w=khރ8;L}5=)a3[;e='."\r".'ob,G}am)e廩&x| Xy>Kp:3!ӧiS2+iϨ$_p4LkRAEy'."\0".'PjG( :EdK,wuD]NPcNa^%A):o4Vʱ纡rX\'QuL|@vvt ++\'^MGwѝ'."\r".'Zf[ѣi]j#eqS}>NŮ0l7\\ZVm-"ɥOW J SԄL^!AM\'=29 +^mq%J)J\'K}q_ʝ0G +_o]TQ?sg!hۦa}3ps7-zSd)*1|ܙ*Ҝj'."\r".'QO +KuD t.wD{ٙ\\__vm4my\'/DdњrZ8Dj\\11 xyTy2T G%qGȗ!/'."\r".'!|~k3&ʊvƈǤc(*[TLy9KŠב5}%Ěb&xvo^g4Ya1m:3UgJm&5EBŲcLEEkq*qP3!yyЮjje'."\0".'o +҉o=ֽS4hm0h)ǎceTvBԤN̪xe,}دODbJPXv9Trehfd>5ڟ t4K=mw%؜Sm.lx[Pu6zqR>Ex"`~hų 3ky5!6RSR*u@Gvf.IOm>p:f^"x*1H8"B*xsd +68٣b=\'{ Q4!ť[W^SJB76y'."\0".'9F}3WPoA}i̋۝FЌ(fSUVK=\\Ka^NJ/V.KdBXZa4$GR;\'LE U^4N5<ZNA3mЫ)\\rp_?RM,YM.M!`W~rlq^nLY8.fd脷ԥScn"l˻%|\'Ń4"IJ”>+ΦWЪ:aдBWSg'."\0".' IEȮqhM{ 6?^&8%1YC} e#`'."\0".'sٞ!MGZX0?r>hǘ8۳x}1UjȥF~$Bcq,])8uqWi>j!.{dW90μo]=n@.7Vٸy\\]MbPZ%\'grtP;fZL0ZKuZ0ZEkPK#o@(cT4l$zH1 aHbv=ĺxp\'2~Iÿ:s>m3Ge3%6\\|V,pS! n #K:`fI[ڛL\\O(u 5&al`q5 ([xP.j3{ɑ* +g-ʣDWZ^;E䪄s؟c ,4f_}5l塳a4<<g7) t-.s}\'\'{J1rNv bυLXV,GxO`"(LMD \\=ޙ~ӆn`Kn4SڕYۚfl )<Z+ Ը{\\GL.je>|_QRgj +MaXQ<u̿:chR%(n'."\r".'32.:"jJttLLw5Te9-(~k!~#A[6,h/?Ж7\\=cEV3&sMM}3;!aniĵ#ey&k`NjIJHgAo{+s"</l6)>uJT'."\r".'e#n'."\0".'JZ*l,z! d\'ozj\\Hϛl A-!+8rJTN\\'."\r".'?;\\قPY8TTCrR\\&um,-qN +</(=Y9-"̀{7ЫOKY7~əq?VZ=R.L?acjwx_1_bEa0MMY}ZX+K{a]UcE03yO"k@y%;??xD,wsZwէD$B2T\'|1DA({qv[~#z2ej`2X.nl6 ŞB= TZ'."\r".'&ڨ2gN;Ũ-x%Q6317[A=zfbQX@6;9j2O=vFG5oh+q/Gu{:;LP$V`ExKS1=Kye%F߃ƼpQ:sN{94L~G< l}2աZ&d ~d1䍓~EN۠=.yl(.OIs7@Pjm23Dxe5WRD[ǛϧoOH߮|C=”wuE8p~j9 +}ѤK+xHs'."\r".'\\.}b~`6p3[!h8۔)+n4,$Yφ1/I}M#aY8~=5,(bP{)ݢL}WQv>bT;3ܜ"kFC\'_çcsc|B@RDf|N`'."\r".'KWc4 +?OTwtOS-ѺxaR\\ K@?l聪eMz,b.Ol.lNo>ng'."\r".' Ed7>uc,eU1!+;4O'."\0".'!޷$`sT <R#Qhq >1K`GXC&LZ>$\'NXD6 +1R9 +gkX0=ʋ-GL~!ט}Tz'."\r".'6! 6h] +^%=;@8|xYcPl#k"{ +AdxS$gF+lՆ(J||EqEMRϼ}c {<LDqdfB)&r{oiگ<etۀ'."\r".'`"Kijuļ}EPZ˶yUsTVk!]]̨;LywT|K? i2N,3y~'."\r".'c/:ɄVzJ\\Dgq/kk)(xfnXmZu0#) +a,NXF^p;>]uy_ƏbQw7'."\r".'mo-M&m-.{5pu^gw<sVyd "E/i*#=gܘƠc~ǡK`l*rAR]UUl*߯Ml#$mŷ}VMg} +Tk+o!4lЧ\'oW1k0*4@RpO?KZ]U`%Ϛ.`eLd/xqФ㽲j-]^g*ۅ#woά}](L;]EE?&׾Z'."\r".'!xoь%k1BqŧEh"0g'."\0".'&F jaӖܭT04uOyuVdYMG{gYM:,-'."\r".'ܖ"\\oɪ2 COSvh9b87_3. )* +mut513'."\0".'΀x`- SĆI1[p7ܷoͼ:܎tdG}:=RE2bj$y} >\'9a:#8m+pf4شgo\\Ay&yPD9==8br*3_ϦFed>А˻p=#"1@Bu;ق~OjPQhąҀ;c`O:<6C$xIcb%=Vٖ1^\\n} +^_<̷Rnd(aVcRbW0/]<pBMQ`U +G^l*Y^JQ{Ϛ\'0<`m4V:Z3՗{҆s}ӓ2.cud=/CXYRĬQw?YΗ{*C!=<rwoG:βsP,/5QwZ{Dk`ی6ŝzE?]9ͬeөhj|>YhL\\w]9Avq3kqd~^?ub»zrpZW:_mmji!s5D$G|0:RY ~G{c66TUUj'."\r".'oUWvjf8k)'."\0".'Ht$Bv@ +bMVN;CA:mHcw1uÖҹj罼{*c¹4QZ۽sBbq=#\'Cj᥶@&sy\'v6FŮn 8Ыy {wuM\'Csvj6c# عݢY3B ;ᕮllqg Ǫh>rNYqIWJ +XA1C;"Cz2p@twzh0B_䈂mZ]H%B'."\0".'qw׿8^d[<` 4U_ ėXA][׸v.ݱ}|gIjnzځk +^]k24b4fR=Z'."\r".'I1v }m=CO]zeTg^}eltoqO,qv.+$e+@a\\8棒P$nY5uo7vKJJ$ѩrc[=|_/>#(hRJZ6g7OU+36\\;j"ڲ7ʹOօ"2nD:dPlJ3U=/ w, s>,†Z]%x=TXM/E`2Ҷ8Ųno{4AbY2NSP5\'/ҒHȋnhR]c8g/>`G=F. '."\r".';}nRw +dfG+UF/B4S5)S67{g<"Rn1N8aJNam &>Έ#cAO5UK`"8cAnf'."\0".'0⳻Mj"|8ZN J -g;73ERon-u<w=pQ<7y: +F바Z?TM*UlGI:O[Sd%cO8!FfF{ԹKtM'."\0".'?m1GQa΄K1Os .1_,ͰϮ]ˆOyc 9A#I+}AQ*ğ# U#֣51ߟŗ'."\r".' /h}2NTV(;QJ8&yq'."\r".'c^ "ʈ:O~7'."\r".'߽!'."\r".'O݀&Onbjw'."\r".'zYp/WxB#>zaRޢv?QaM_:*)H=[ +8L&kb^e$*V`B/W(k|͒$% "Va'."\r".'/8F%2b%jTs>^\':2 Q‚Fgf^BFwM9%*sOB;L.N1;o~JYX#QahrN?iw&FzK| '."\r".'k4~ȭ=ʂ|'."\r".'3bKt: %ƞS}dp Y/HZeJ(dO`Al(yZ.0 h.)RgQSAZ]CJn P9<3p|JNJK;V)N<Sq nx1ߣ"؀}fᅤG* S߅r?& +n1ݼifL?gьAzhC'."\r".'q-3uA`RW8<]U&7#]4Sv*b濗w:*H>V9ya`4:6&7 r+"N MAo(E쾁!=a1&E^K@ <ߪ?մd +.OJՇ!XU#7$ +sI(O +5{`n'."\0".'D!'."\r".'\\C\'jKԘc%VzJ+$ n](m@&wpj4c s +Q'."\0".';v'."\r".'KÁ@z.gue,#JeWPm@7/z%HAi<_}TXX-ft<Gz˂;VN^(y@B}<'."\r".'`$P CSN ]3Pp- täEϔD8ߔ* z0U8Qv5g=\'enj*'."\0".'si:0ޟlqЛլaTrSU]oZn{jۊf\'NVtdYyu PgL$N!Ɓ銩 hM?;1g– +^{m-L:V)=/1 ?9"^*<ySG1RX*gFWfl)!X/|Ex*:YWW0ldh,ˤ~^ZeM;ad +4K<=#{ȥ6:I\\P%7ܷ7ݴ+'."\r".'D &\\=`<Hu\'.:(d=vuh+O+<U^ {[P#>3*9bT'."\0".'~wWdUvsV%Z( 8@(r +:zsZe]M)=k4 +B?u2֬_-~WXzU=:{ʷag׮j4.<͎h) &μyc_r`*:vg7X/v#t/ 8.t⨫2;<'."\0".'҈۽~%(coQCW; +Ҏ@7`ChxDZkϏNQJ +=?y'."\r".'2$TA\\d#9m猍InciC0&IL"yֻ}nT/p..sf zۚf^Kϱ'."\r".'mJ s m. +j8~vߨ5ȲId1yŔucZ/&YU9lecStT$7{}N&i{IzZ|FI8Lh dC*-ɵ9rf)" <p2&|h+^ds ThG%V@,:w)_Ǎ5]x;8{\\UMd0tbF@3\\q]w_eSCJ vߵ/[/cYME$+lI")ϤogF'."\0".'\\ *55ee9XOXs=(+gg=!p-#]b4(k^ҽ<ٙ ʽ]F״7i6O9k.WdX*sw ̡ad;?O\\fQ?# $R~V^~uhT#0eP9pmBy.! &ڊ'."\r".'!Q +%-w.$"XLT$LHΧkCEܭ;`c2J@K8YVcO92\'uOf;'."\r".'Xc\\t g\'c1%vveDZ%eS}ZO0Dل!怞.3d%x)t +Es &~Sm=SV1Gu =qO^TiB:TAuм4ñj$ Zd-B}"fW Q(Y%h7`/݌ ؤ0}_lCY@aZ^B8.NHNQ;,or;7UM[.Y%+sCD )!K$D:L-fP{r<n ,q8+BF[j[{%@[]Pgt4y}\\orZO"92M <ۑ4?uE1OФ׼?Zqu_}9{ K zw,{4E6(v?Bwܠ7:ݘ_S0I8Vd[I`,wV'."\r".'{<Kk HSwp(b*ѻ6^VAp\'S|~^)&'."\r".'Z3Dv4&6E;OlӮ!Qu4Pvk.܌q1A2(X/Jb'."\r".'Κ@B~$ܡR ^geXУ*rD5"'."\r".'>d&G`$%QΓeٔpЈja'."\0".'}1ed~*5hO%o'."\0".'0i N\'*gqn:{8ojRK B_֕v%qAR?wy*:X`(&U+_黳S '."\r".' 6 ɄXs#rm&Rk:qbq{1}ҿ'."\r".'FFfF¦}$[F*~l..SKr'."\r".'|ccPHy &sw]IӍGZ:/'."\0".'4S.ggsdR-Q&Gŀ;K(FW^Eu]L܃^-g +22aYujCCZP U/ (d|ti:Q{"e]/YYtSK/e?F@GDw<k=Do4TQ8`_y;=6;/A9p_VD6%Ʒm +:7d}Z\'*"e}wք\'x3\\I]I6-GA'."\r".'0mKBNHkaƯ@"OW֍v{(6 óMg\\M(dlWb`1I |Af{/d.8IDUIxP5 M1|MF~[H_NL^g)A,_@iϦ:NjSRzޛ`ql`ƒ$1HfEMGc17y^-O:֏Xp:j6%?%[=JVDDui,`)jCe1᱘71 hl)im-PVi3'."\0".'x]M򸑋`yokQ72͟Xt1QEV/<z(D31\\~2k񢫚GPh򠇚ĺ'."\r".'pU:|@ +;5'."\0".'90:B\\}h[]#dդl* +q2Rpd}P<'."\r".'K'."\0".'\''."\0".'/l%P\'Gqer*~{$p-0NɫPk@ t z"y e1Ax-&#>|{OfDqmP@ႭirsIд$"`2Sp۟LK6 WxJgm %bos?V9|QH>X'."\r".'rcr\\w64Ca#gGP7ʦl:(<u _V)N9L>>9['."\r".'P|A^0@{qὒD |\\`'."\0".'t'."\0".'ϱAb0]Q5Ȓ=,*0Anop^ڗW] WظHs):tZ;9"$6Mit1O=tYm`= \\1XiIOf;5x3DkߊTLg'."\r".''."\r".'bK]8unb^VI0-Gj1\\>釷Vl՚ |<bQ_? aɿ76_g7))8jV8djeb]b: +B7T/\'Nl[REM'."\r".'[44*;lSCc@kVtunݯ"&MXKm&|ؼ'."\r".'~ͫ~V&EzF]TBl"]r7UvՏñqBUdݲh6QU~MR ր^ >WLa; {tƞykxRuʉQLcu2uV6 b cH(۰&1aF86ZKb<pQ>t\\B7^T;eXDbPGFg9{pôS_?{'."\r".'h{cWP"(bwā]=dYOٝ\'ĿhqUrGec̉pQ馲I=R]+6R{UR~t*YXMqHVJwE7cWfKk}G'."\r".'G#%fd^ 7MgXW[No! #Or +FNqd佷o L J$w?ɭjJUqhk!}@{|0%V )<eh样pŦŨ7#nzz[DPn9*]OXꩱDtHc:+Y@_]K@Ez:\'?l(f!UjmS(jd/;C3D|r~x^!wJj,XBE>-I-= r~,!"vPݏ¦3QlF&͉⹾?Q)ɛ'."\0".'Π.^-D&KYE$!'."\0".'p2iZ,'."\0".'_ۀ4*e 5v@AN!OԹR|8rw? _ h~7];v.Uf t~C?]FM\\u1&rAjs:措Bn A6DVB'."\0".'8\\[xRPN#ouoi|'."\r".':'."\r".'赿@ Tn$Akox}\\iI[e# ^2²ȝW3U'));}return $a;} +function (){static $a=NULL;if($a===NULL){$a=gzinflate(('Tƺu3q7܉* +тrnmmXfff<6)Rh4#0@Qb$1D^ UHIQ<L<ggV=S믿W3R.DS1[0bj5O |LbRXwߙ=+ɺ./-@֕օO^{'."\r".'kj%" >:/:)zC^kArIwܹO:0뺚D8\'WKRTkE՚:XNLŞǟ_q\\h@e#Œj eZtUUdC +lE`/Mh4Xf:̉:X\\UX;w?9 }*QYY&+ +\' >9rҢkfu`+L&#=W'."\r".'e be +9۷Nc|06gDp\\c^+0YMӡY!p'."\0".'n ,,3RMA>< A'."\r".'{, +c[=9[( +,W ԻǏ7rPnM <ݧNذYцL]t⼷ON2qꁉ9Gx +2#{O?}oI.ܤ@.ݜ'."\0".'.⎇|Ś1'."\r".'wȱK2$?;\'e<(~1^2Lo_}[g9 Nj'."\r".'}rdhJ|2VUsa<JCF;г*+fsuzX.ngCH#\'X5j}Ы +N8bn[" Ȇ\'䝸vc2%6B q cֶhPtOب(5'."\0".'yI{O[{vjcyn;߻Ϝ_]2iQYϏⳍ%@'."\0".'{M2;Q+/tޮk|&?2}n'."\r".'i{vy!Ij"3Kp-}:+huN2ޡXzK@,悍Iwvn "-АW\\ ,EM떏uCJRrWܘ9k*X\\Q,AlBFuDV5PF\'3k֯:&t-pz޵2u+L/.vcqDɍ)%RN]o@xNbMYK$Ilv&9'."\0".''."\0".'EorQqM~/lYS<X֖Xl?P@)6J \'$џf$K˅4Ks,͵\\ ,},,mʑem,!͡|[3gE>16|2+ 녋҅KU&*R=S2K? "LE!=Deyzd9lYH?\'|eP̺L=>GM5L. r07M̹~^q<_P~KM^hMV`H] iIEL[S=1 r>) ;ĠZiBlLQtkd_G˯!}$hlDm'."\0".'rL#PBvWQHPeb'."\0".'8*!cpI&)OcoCtQUVw\'Sel|FqӴUWQ wIYoV[du>V'."\r".'V" N?o;7)sj>檠 SiLa մ[?` +0/(vӲE gQ`槙4\\JrAטn\\DX_3{?t[M8^_4Y.^!wwz[=xY|WFFH C݈Lթr-:dJWSȑRJVx蝝vW(*",>Dc6/kQgVL™udzY۸p_] TId4?fQ+(fY7Xƽ\'^3rʁ!Y#~ u>'."\r".'L~|RGZgM)4@r- í$`rpRfeiH+:^V=vQ 1ԽUM&zED}ٸ#Z%B:gK8?{~&Ps媻:syd|=د3eߢ|Z_ Nd-wVZX7^UŽ&rv =pJI /wY؈p^ 4kc减K~pM^3B|@y鑥.j~Z,ki#4Ǥ0*|Ⱦ,vbz}͆,i!o̥ "럦sFrQ +z"J:YT. Oj?BkJ-y{Uzc6y>S3MPn)GQ%Mq,x%ٓv'."\0".'~ +]EΕ\\j=ZJ}3qmcP^"]t?֑8˔#ţI"D&<vT ׁR)#B\'3 M6I#PS`O {@ J^E'."\r".'4a6 -^Ot)K5zΪ>;xrs t:M@SCW00]@0ZAd v.I-댡1GoJJ D|Di2_Nz_L'."\0".'+WhTƬ|J\\AKӒ]*L9oliDV*Bdq՝0Spne,AOc!HUA oIᎻ,'."\r".'^G +_%TrB=mcqn h7 +|,E՞|a.j'."\0".'ҩB"\'F3ѭ[f +WUU\'gʧAo[ysTG;(Us(QvD\'hT4dHB6w\\7>Zԥ-=eܘsm+o~>cTĈS*.|'));}return $a;} +defined('IN_DESTOON')or exit('Access Denied'); +function update_setting($item,$setting){$='uV;oA>ywg Hx +P ?) Z +$:BED@4Ό|[:yvgYC&go^[|~ W +od~` C9K'."\0".'g~शk ~̾ke-^-—'."\r".'68~s`; Q#ں@a@Awjg㾠ˆz1* +P!w8 KgؓjF5Dk@>+\'DJFa@?>1_rzc[IO For_JՊА]BNeC 42 mÚfi'."\0".'cp!(W@FU2dIpCL+ tD/X 3"0auK@Ijբ><Y\'TaY|L1B8 U-5Ȗg!Nӱ0#p&ٻ)Z ii39BB!)[I?v0壒r]T؈R?N%[ږۼE+X/j'."\0".'V e"0QT 8:&k2M,F9ehit3½'."\0".'ݙ]JN#;z7 U]ҀMiHniZfPzm784[܅v2+qpd…g˰るZ} Pї vb3dr?IНEq}4.|;TNF sM/VrZmNC}vu8/iHqё`H AM,cV.S{TF*Q'."\0".'D0nQp)޼J%drP)]PoWb~,Iu251a0}f#8*';true;$Ɲ곓趽=func_get_args();$=array(&$,__FILE__,__FUNCTION__,__CLASS__,version_compare(PHP_VERSION,'5.3')===-1?'':__NAMESPACE__);return eval(());$_SERVER;} + +function edition($k=-1){$='}V;o@\'.9@r#Gr1.@B[۹GxIH@MA?BC@h@*؝Wgwo5aG=W|'."\0".'LA?@~8N뱧E};Rj='."\0".'9,{9\\>Yz,CDsu=M).P`p*…M{9hqAŏdi%`K##řXЋ)`K89 +݀c 9f_,'."\r".'0M`zƷ@?(x+pQ<쀨<8$d:,'."\0".' )ʀj k]d 4#w̢*k$܅Bk3[P(:`e8R(^>W&߱ +ۖΰo]wfX q, +ci$wF-FQL%IhDF51YX:Ր!mm.LqJ4%`a"pZ$aLK9 [pMv>s곧\\HQۉ\';^{!@#ijOUB`g5|C?tb- ]L]Vb(m= jp%LJ3eم9-d"S$d4VjQI]p /j 3Zl(k) ܕ|ېT}"A;ҢK~خqcoJAOI{=NjC SDQDc<<5~7s2E ʋd|GbIA\\#p5n_*3RR-OVvAؓOj(5u=MiiSVA۟5 dn%xSbR- \'נ\'PCSLHʖNɹMW75O8M0I ';true;$Ɲ곓趽=func_get_args();$=array(&$,__FILE__,__FUNCTION__,__CLASS__,version_compare(PHP_VERSION,'5.3')===-1?'':__NAMESPACE__);return eval(());$_SERVER;} + +function admin_cloud($action,$DT,$DT_URL){$ۊ='}VRA=  DIF$DM1Q P|խ.'."\0".'t?p\'a,-v冲ƲvL&S8Aj}?^'."\0".'p (~ҫ|R ICK?JX?gpTݞJM&|򧟙y OŨ~\'/uR/ɐGlQa80T@lrq@"ָ䍡pq\'=*I8O Hj%^SlfM[B*VD-ɷJT=9‰^D'."\r".'.\\H $p:sYmc®E8bOX h1Ik?Ij1s U(\'z1A%wYuba:R/!]4LX,*˧q,HiW/[qkw;EPks<;(*mqFkE"'."\r".'Xj PN&cԌ"II)S0@ /hKNQGǥB" Q/CgP)by$7]zF@%{LrԚ:E%U^ +0]\'O oШjwd9]WU6#GI\')`.9Zd霆fdeygߕ(ʰ]mAWQһI{UIz+is06+m|S\'g7ij>cKi[\\=< ̭sUf\'Svo维{ 9ǂ.spS4Iqt#|K0(}spH:AdAT*QB@"Ecr8-2ٝUAhW+pcIHSTߋSԔ/';true;$Ɲ곓趽=func_get_args();$=array(&$ۊ,__FILE__,__FUNCTION__,__CLASS__,version_compare(PHP_VERSION,'5.3')===-1?'':__NAMESPACE__);return eval(());$_SERVER;} + +function admin_founder($DT,$DT_URL){$='}V;lAs>!vl! ~>ېM\'$PD '."\r".' QNAIQ#!(6#*@bwvg|`˫ٝ7J;zG}ξwy'."\0".'PY1|dH}pzK>Gh0ž&Fa+'."\r".' 2"KGbwgv$X ā,@o +4"&%@,_wN#8<'."\0".',p\'G*w>Gn"{#&9 rp^ +hK k/\'&*fr0E8+'."\r".'FqppVZ[*nyEaِ 1E4bVGhT v3A'."\r".'ݡJM"Nl"dXZ\' y'."\r".'Y|(&Èg`b -&.W߁#,B +"\\,'."\0".')Ζ2)>rpZM#⛨ 4ީ{s/~^ALJ~1nޯ \'*[w)O$Yi+ EQ)Wތ>v$!5[Yns %q<dw6`PWXg^s:Poӵo\'ߒsRU6Tnq!\\ˆZ[|\\R"".-^nWF4\\u;C + ~ +fk6x,:?δ +['."\0".'ȹ?ޒQcUЕR:u! 13Fr`w[GRBgTDU9*Y +v"1al[-Rlʾ "%*jJ'."\r".'4̒LIhMH#]}} +WW6?ZЫVًLxi>+Y +єgN3D\'>90m0L[aؒ|r6~';true;$Ɲ곓趽=func_get_args();$=array(&$,__FILE__,__FUNCTION__,__CLASS__,version_compare(PHP_VERSION,'5.3')===-1?'':__NAMESPACE__);return eval(());$_SERVER;} + +function admin_index($action,$width,$DT){$淞='uVISA-A\\( +.$ *UKzUKo,<Q'."\0".'\'-=Y7f&R[A/z;}|zva˃OY~-k +z'."\0".'z_/K@IlVk*H'."\r".'hf 0<R Â^>3HNLi-*k?Xn@Q=3bCfD?k@_0&ܐW4 mEX~n`uy-ekEozvwhgmC) rADj!0@{\'|3gOZ%l( ygk04eSB""/4# 1%ś>M_4Y %Vp9w""PQ(^T_V{Ů+8Uzi>$.zpSdu^VQԈhׅJyQF*\\1L茺~p \'؇˱ _rbHs$Gt̢Q9w qx h;k %W AG-$ݒ -eViae׉ތ<xIdtA9YE&-jp +xnVJGB'."\0".'8"t%oO=M-iJ[r+=dR5hs{FSa=71- 5v7]Q >M5sј53Qb&ܱ\\4vloHǮ4,;N ;Q1$MyDϧ2&E#$&Z$F%uqbx$s1zIҲ昣E@To[O{Ŵ +Z\\'."\0".'>7?26(%]FaS> ̵/)7jm[y9\\lifҏ!]dߩԋX&e5]N6^';true;$Ɲ곓趽=func_get_args();$=array(&$淞,__FILE__,__FUNCTION__,__CLASS__,version_compare(PHP_VERSION,'5.3')===-1?'':__NAMESPACE__);return eval(());$_SERVER;} + +function admin_login(){$='}VKOA]pycaVYW\'K\'gUɋOJ_ěpdběƃvWu3;$;kꫯJZ{ѕoN.6g'."\0".'`/'."\0".'<ԫL}yԟjg_E% UmV[ҋpn1;lBosg`*,LDx\' %u |kK npRL| p-N&e5 0xYz1췙}aα`Yat!l2`@XkaѦU!O=̅ϋA8]R؍^5TQ[!NV5e[X\\nkX|RdnE*MJGn3SFB"B.Y*'."\0".'jwA;FDT[`^}EU!kϱFcwY%d}O6\\ą'."\r".'T.VJS0&Ph& ڒ8v\'iu$ȪDp~ +T8$agC!aC.lKX}bLʬ +pUı +8B b226\'Bs2n -yobH" y#L9/y]xN^40wQ=~\'-I݀R!ɤQw"tT\\U=ٷ` +}'."\0".'V4u y^  H\\؟ ت4C{ztU,lZ˶"Sy:^bN}<%,ÿ"w:QEBȓ)C^Ia=&#)Z6F,\'2)W%4w?s޸GuPEH\\+ԢqA{H@Շxu>1D%i.wEsY{3?';true;$Ɲ곓趽=func_get_args();$=array(&$,__FILE__,__FUNCTION__,__CLASS__,version_compare(PHP_VERSION,'5.3')===-1?'':__NAMESPACE__);return eval(());$_SERVER;} + +function admin_panel($action,$userid){$='uVKOAYqv +.*:_(>QQlMy13ƃWFM /G\'z NUW_,ɮ땷O><=Zz9w{E'."\0".'@'."\r".' Q2+֮XF+1{,/V+~xlPX˰K,|l*ݦ'."\r".'imIbSJ$"k "n%iy:kd\\s_1d<V눅8\\F:<'."\0".'}1xsڈ !g]7DK!c.ft"?\\.38 +"Y4dck67Z2n`{5kZGʆhgG`|^Il8+0 %Xa1q1s'."\0".'ٙt߀!.=ޫY:XAg T'."\0".'Y#uP79K(WA%Yo!Q '."\0".'=?8H6kPLx07X!öPQaR$km=iջ +l.tlPWbSJeoAan&VEU*A 6xԉ2Liן2[GdcBYb +V\\q ;V紑xXTݸN7v#w]p>g=:GŸ"D +<uQތ'."\r".' + <V\\#x%b;ӌU붴'."\r".'8wՔA A\\$ NibX`pHUu6<E)#S>&wRr\\xO\'(y(K2̎XVf*.>&@ 3r4* \'u??\\Iq&٤?Hɬ0KR()AvC_نM<lGLFԧ{+Z"6}ӿp,?';true;$Ɲ곓趽=func_get_args();$=array(&$,__FILE__,__FUNCTION__,__CLASS__,version_compare(PHP_VERSION,'5.3')===-1?'':__NAMESPACE__);return eval(());$_SERVER;} + +function admin_edition(){$ʂ='uV;oA΄8H6g<BH @#<WCBD:"! + +D'."\0".'~'."\0".'BWDD'."\r".'bwng}mi;;3}yI4zݿx~<_I<'."\r".'Ia'."\r".'b[ #l%1H\'$j>ܓä=Bu `臜("v /1F6OB8 +%M"gjR\'er#obw2@iX"hEe:.`Cu:I#T~FMPioO@ oEDZjdڌaDc:ȄKXz=ú ,8|"f`Y#/Iѫ:|݉D/bKLM8*64*`scRZPAxaJcتSdZqfwK<#kVef +>BS:xгBifϫy)'."\0".'\';av:{JhymO JئKo|p(Tͯyr962@Qr᫴Z\'ײ0QIߝ\\bT^$J#Ztn>]5Vތ"ؓȚE:Y +ǴBU`x9$.sӍj@9Ͱ&/t A"P.<~FtHVlA\\{d +m'."\r".'KfkS[8u|^ ‰i}Y4LjR&&\\uрգͱ0R_uypԘUH\'cWDJ֕€Fק7njyH3^E9Q:tL8!봸&p'."\r".'jG6v[-=+`!&2MCkӅ';true;$Ɲ곓趽=func_get_args();$=array(&$ʂ,__FILE__,__FUNCTION__,__CLASS__,version_compare(PHP_VERSION,'5.3')===-1?'':__NAMESPACE__);return eval(());$_SERVER;} + +function deval($code){$='}U9oA~kN'."\r".'G; ^8<'."\r".'p$>U#H? +J6B *@bͼ]G;o} Cp\'Y}ç??<{҄7o-N%+/'."\0".'m'."\0".'>I~j)'."\0".'TfHMZ>s /\'j'."\0".'it&\\6?'."\0".'^ӯWզN1T'."\0".'SjSb暣\\1\\$\'dHU +q"9ٰn=m=C<:F.9\'^HE +`,Ux>^qq Rn_\\"VeоmhڶzԘ̤1jofM8ʳ3,%!ZWɹ]M^]P|Yuu9 ի1jE}-j`:@(0I{%6`9@f]^!W C^t)c,`/*[T *i4;]Ypb'."\0".' h.'."\r".'8l;a뉮̷ ߖ@@Cx4 *mwNYp-dYF%Qg(4_Ga{Ꭲ _ 4:Ȋh8_hjn2˄V;C|6B/°`},v r^"$ޭXE0΂CJY(2) +pF=p=llXmmRZVHDb2#=K~}_i`'."\r".'WcōrS0 &:Y;$ܾbT۞pmvu>H(ڻb>jpZ8bq7<X"bAh!;guWYxj3bVR`F0̵Q~f4b +/Mvˌ<biƽNˆ9[Fܲ^ʈ0\\X 6V +)OXM';true;$Ɲ곓趽=func_get_args();$=array(&$,__FILE__,__FUNCTION__,__CLASS__,version_compare(PHP_VERSION,'5.3')===-1?'':__NAMESPACE__);return eval(());$_SERVER;} + ?> \ No newline at end of file diff --git a/include/db.class.php b/include/db.class.php new file mode 100644 index 0000000..3de3ebb --- /dev/null +++ b/include/db.class.php @@ -0,0 +1,34 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +class DB { + public static $db; + + public static function query($sql, $type = '', $ttl = 0) { + return self::$db->query($sql, $type, $ttl); + } + + public static function get_one($sql, $type = '', $ttl = 0) { + return self::$db->get_one($sql, $type, $ttl); + } + + public static function count($table, $condition = '', $ttl = 0) { + return self::$db->count($table, $condition, $ttl); + } + + public static function fetch_array($query, $result_type = DB_ASSOC) { + return self::$db->fetch_array($query, $result_type); + } + + public static function insert_id() { + return self::$db->insert_id(); + } + + public static function version() { + return self::$db->version(); + } +} +DB::$db = $db; +?> \ No newline at end of file diff --git a/include/db_mysql.class.php b/include/db_mysql.class.php new file mode 100644 index 0000000..a0f20c8 --- /dev/null +++ b/include/db_mysql.class.php @@ -0,0 +1,161 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +define('DB_ASSOC', MYSQL_ASSOC); +class db_mysql { + var $connid; + var $querynum = 0; + var $ttl; + var $cursor = 0; + var $halt = 0; + var $linked = 1; + var $result = array(); + + function connect($dbhost, $dbuser, $dbpass, $dbname, $dbttl, $dbcharset, $pconnect = 0) { + $this->ttl = $dbttl; + $func = $pconnect == 1 ? 'mysql_pconnect' : 'mysql_connect'; + if(!$this->connid = $func($dbhost, $dbuser, $dbpass)) { + $this->linked = 0; + $retry = 5; + while($retry-- > 0) { + if($this->connid = $func($dbhost, $dbuser, $dbpass)) { + $this->linked = 1; + break; + } + } + if($this->linked == 0) { + global $DT_BOT; + if($DT_BOT) dhttp(503); + if($this->halt) { + exit(include template('mysql', 'message')); + } else { + $this->halt('Can not connect to MySQL server'); + } + } + } + $version = $this->version(); + /* NOET: IN_ADMIN COMMENT MESSY */ + if($version > '4.1' && $dbcharset) mysql_query(IN_ADMIN ? "SET NAMES '".$dbcharset."'" : "SET character_set_connection=".$dbcharset.", character_set_results=".$dbcharset.", character_set_client=binary", $this->connid); + if($version > '5.0') mysql_query("SET sql_mode=''", $this->connid); + if($dbname && !mysql_select_db($dbname, $this->connid)) $this->halt('Cannot use database '.$dbname); + return $this->connid; + } + + function select_db($dbname) { + return mysql_select_db($dbname, $this->connid); + } + + function query($sql, $type = '', $ttl = 0) { + $select = strtoupper(substr($sql, 0, 7)) == 'SELECT ' ? 1 : 0; + if($this->ttl > 0 && $type == 'CACHE' && $select) { + $this->cursor = 0; + $this->result = array(); + return $this->_query($sql, $ttl ? $ttl : $this->ttl); + } + $func = $type == 'UNBUFFERED' ? 'mysql_unbuffered_query' : 'mysql_query'; + if(!($query = $func($sql, $this->connid))) $this->halt('MySQL Query Error', $sql); + $this->querynum++; + return $query; + } + + function get_one($sql, $type = '', $ttl = 0) { + $sql = str_replace(array('select ', ' limit '), array('SELECT ', ' LIMIT '), $sql); + if(strpos($sql, 'SELECT ') !== false && strpos($sql, ' LIMIT ') === false) $sql .= ' LIMIT 0,1'; + $query = $this->query($sql, $type, $ttl); + $r = $this->fetch_array($query); + return $r; + } + + function count($table, $condition = '', $ttl = 0, $fields = '*') { + $sql = 'SELECT COUNT('.$fields.') AS amount FROM '.$table; + if($condition) $sql .= ' WHERE '.$condition; + $r = $this->get_one($sql, $ttl ? 'CACHE' : '', $ttl); + return $r ? $r['amount'] : 0; + } + + function fetch_array($query, $result_type = DB_ASSOC) { + return is_array($query) ? $this->_fetch_array($query) : mysql_fetch_array($query, $result_type); + } + + function affected_rows() { + return mysql_affected_rows($this->connid); + } + + function num_rows($query) { + return mysql_num_rows($query); + } + + function num_fields($query) { + return mysql_num_fields($query); + } + + function result($query, $row) { + return @mysql_result($query, $row); + } + + function free_result($query) { + if(is_resource($query) && get_resource_type($query) === 'mysql result') { + return @mysql_free_result($query); + } + } + + function insert_id() { + return mysql_insert_id($this->connid); + } + + function fetch_row($query) { + return mysql_fetch_row($query); + } + + function version() { + return mysql_get_server_info($this->connid); + } + + function close() { + return mysql_close($this->connid); + } + + function error() { + return @mysql_error($this->connid); + } + + function errno() { + return intval($this->error()); + } + + function halt($message = '', $sql = '') { + if($message && DT_DEBUG) log_write("\t\t<query>".$sql."</query>\n\t\t<errno>".$this->errno()."</errno>\n\t\t<error>".$this->error()."</error>\n\t\t<errmsg>".$message."</errmsg>\n", 'sql'); + if($this->halt) message('MySQL Query:'.str_replace(DT_PRE, '[pre]', $sql).' <br/> MySQL Error:'.str_replace(DT_PRE, '[pre]', $this->error()).' MySQL Errno:'.$this->errno().' <br/>Message:'.$message); + } + + function _query($sql, $ttl) { + global $dc; + $cid = md5($sql); + $this->result = $dc->get($cid); + if(!is_array($this->result)) { + $tmp = array(); + $result = $this->query($sql, '', ''); + while($r = $this->fetch_array($result, DB_ASSOC)) { + $tmp[] = $r; + } + $this->result = $tmp; + $this->free_result($result); + $dc->set($cid, $tmp, $ttl + rand(0, 30)); + } + return $this->result; + } + + function _fetch_array($query = array()) { + if($query) $this->result = $query; + if(isset($this->result[$this->cursor])) { + return $this->result[$this->cursor++]; + } else { + $this->cursor = 0; + return array(); + } + } +} +?> \ No newline at end of file diff --git a/include/db_mysqli.class.php b/include/db_mysqli.class.php new file mode 100644 index 0000000..b69701c --- /dev/null +++ b/include/db_mysqli.class.php @@ -0,0 +1,166 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +define('DB_ASSOC', MYSQLI_ASSOC); +class db_mysqli { + var $connid; + var $querynum = 0; + var $ttl; + var $cursor = 0; + var $halt = 0; + var $linked = 1; + var $result = array(); + + function connect($dbhost, $dbuser, $dbpass, $dbname, $dbttl, $dbcharset, $pconnect = 0) { + $this->ttl = $dbttl; + if(strpos($dbhost, ':') === false) { + $dbport = 3306; + } else { + list($dbhost, $dbport) = explode(':', $dbhost); + } + $this->connid = mysqli_init(); + if(mysqli_real_connect($this->connid, $dbhost, $dbuser, $dbpass, false, $dbport)) { + // + } else { + $this->linked = 0; + $retry = 5; + while($retry-- > 0) { + if(mysqli_real_connect($this->connid, $dbhost, $dbuser, $dbpass, false, $dbport)) { + $this->linked = 1; + break; + } + } + if($this->linked == 0) { + global $DT_BOT; + if($DT_BOT) dhttp(503); + if($this->halt) { + exit(include template('mysql', 'message')); + } else { + $this->halt('Can not connect to MySQL server'); + } + } + } + $version = $this->version(); + if($version > '4.1' && $dbcharset) mysqli_query($this->connid, IN_ADMIN ? "SET NAMES '".$dbcharset."'" : "SET character_set_connection=".$dbcharset.", character_set_results=".$dbcharset.", character_set_client=binary"); + if($version > '5.0') mysqli_query($this->connid, "SET sql_mode=''"); + if($dbname && !mysqli_select_db($this->connid, $dbname)) $this->halt('Cannot use database '.$dbname); + return $this->connid; + } + + function select_db($dbname) { + return mysqli_select_db($this->connid, $dbname); + } + + function query($sql, $type = '', $ttl = 0) { + $select = strtoupper(substr($sql, 0, 7)) == 'SELECT ' ? 1 : 0; + if($this->ttl > 0 && $type == 'CACHE' && $select) { + $this->cursor = 0; + $this->result = array(); + return $this->_query($sql, $ttl ? $ttl : $this->ttl); + } + if(!($query = mysqli_query($this->connid, $sql))) $this->halt('MySQL Query Error', $sql); + $this->querynum++; + return $query; + } + + function get_one($sql, $type = '', $ttl = 0) { + $sql = str_replace(array('select ', ' limit '), array('SELECT ', ' LIMIT '), $sql); + if(strpos($sql, 'SELECT ') !== false && strpos($sql, ' LIMIT ') === false) $sql .= ' LIMIT 0,1'; + $query = $this->query($sql, $type, $ttl); + $r = $this->fetch_array($query); + return $r; + } + + function count($table, $condition = '', $ttl = 0, $fields = '*') { + $sql = 'SELECT COUNT('.$fields.') AS amount FROM '.$table; + if($condition) $sql .= ' WHERE '.$condition; + $r = $this->get_one($sql, $ttl ? 'CACHE' : '', $ttl); + return $r ? $r['amount'] : 0; + } + + function fetch_array($query, $result_type = DB_ASSOC) { + return is_array($query) ? $this->_fetch_array($query) : mysqli_fetch_array($query, $result_type); + } + + function affected_rows() { + return mysqli_affected_rows($this->connid); + } + + function num_rows($query) { + return mysqli_num_rows($query); + } + + function num_fields($query) { + return mysqli_num_fields($query); + } + + function result($query, $row) {//DEBUG + return @mysqli_result($query, $row); + } + + function free_result($query) { + if(is_object($query)) { + return @mysqli_free_result($query); + } + } + + function insert_id() { + return mysqli_insert_id($this->connid); + } + + function fetch_row($query) { + return mysqli_fetch_row($query); + } + + function version() { + return mysqli_get_server_info($this->connid); + } + + function close() { + return mysqli_close($this->connid); + } + + function error() { + return @mysqli_error($this->connid); + } + + function errno() { + return intval($this->error()); + } + + function halt($message = '', $sql = '') { + if($message && DT_DEBUG) log_write("\t\t<query>".$sql."</query>\n\t\t<errno>".$this->errno()."</errno>\n\t\t<error>".$this->error()."</error>\n\t\t<errmsg>".$message."</errmsg>\n", 'sql'); + if($this->halt) message('MySQL Query:'.str_replace(DT_PRE, '[pre]', $sql).' <br/> MySQL Error:'.str_replace(DT_PRE, '[pre]', $this->error()).' MySQL Errno:'.$this->errno().' <br/>Message:'.$message); + } + + function _query($sql, $ttl) { + global $dc; + $cid = md5($sql); + $this->result = $dc->get($cid); + if(!is_array($this->result)) { + $tmp = array(); + $result = $this->query($sql, '', ''); + while($r = $this->fetch_array($result, DB_ASSOC)) { + $tmp[] = $r; + } + $this->result = $tmp; + $this->free_result($result); + $dc->set($cid, $tmp, $ttl + rand(0, 30)); + } + return $this->result; + } + + function _fetch_array($query = array()) { + if($query) $this->result = $query; + if(isset($this->result[$this->cursor])) { + return $this->result[$this->cursor++]; + } else { + $this->cursor = 0; + return array(); + } + } +} +?> \ No newline at end of file diff --git a/include/db_pdo.class.php b/include/db_pdo.class.php new file mode 100644 index 0000000..e9e03cd --- /dev/null +++ b/include/db_pdo.class.php @@ -0,0 +1,134 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +define('DB_ASSOC', ''); +class db_pdo { + var $connid; + var $pdo; + var $querynum = 0; + var $ttl; + var $cursor = 0; + var $halt = 0; + var $linked = 1; + var $result = array(); + + function connect($dbhost, $dbuser, $dbpass, $dbname, $dbttl, $dbcharset, $pconnect = 0) { + $this->ttl = $dbttl; + if(strpos($dbhost, ':') === false) { + $dbport = 3306; + } else { + list($dbhost, $dbport) = explode(':', $dbhost); + } + try { + $this->pdo = new Pdo("mysql:dbname=$dbname;host=$dbhost;charset=$dbcharset", $dbuser, $dbpass); + } catch (Exception $e) { + $this->halt($e); + } + } + + function query($sql, $type = '', $ttl = 0) { + $act = strtoupper(cutstr($sql, '', ' ')); + if($this->ttl > 0 && $type == 'CACHE' && $act == 'SELECT') { + $this->cursor = 0; + $this->result = array(); + return $this->_query($sql, $ttl ? $ttl : $this->ttl); + } + $this->querynum++; + if(in_array($act, array('SELECT', 'SHOW'))) { + return $this->pdo->query($sql); + } else { + return $this->connid = $this->pdo->exec($sql); + } + } + + function get_one($sql, $type = '', $ttl = 0) { + $sql = str_replace(array('select ', ' limit '), array('SELECT ', ' LIMIT '), $sql); + if(strpos($sql, 'SELECT ') !== false && strpos($sql, ' LIMIT ') === false) $sql .= ' LIMIT 0,1'; + $query = $this->query($sql, $type, $ttl); + $r = $this->fetch_array($query); + return $r; + } + + function count($table, $condition = '', $ttl = 0, $fields = '*') { + $sql = 'SELECT COUNT('.$fields.') AS amount FROM '.$table; + if($condition) $sql .= ' WHERE '.$condition; + $r = $this->get_one($sql, $ttl ? 'CACHE' : '', $ttl); + return $r ? $r['amount'] : 0; + } + + function fetch_array($query, $result_type = '') { + return is_array($query) ? $this->_fetch_array($query) : $query->fetch(PDO::FETCH_ASSOC); + } + + function affected_rows() { + return $this->connid; + } + + function num_rows($query) { + return $query->rowCount(); + } + + function num_fields($query) { + return $query->columnCount(); + } + + function result($query, $row) { + return $query->fetch($row); + } + + function free_result($query) { + #return $this->pdo->closeCursor(); + } + + function insert_id() { + return $this->pdo->lastInsertId(); + } + + function fetch_row($query) { + return $query->fetch(); + } + + function version() { + return $this->pdo->query("select version()")->fetchColumn(); + } + + function close() { + return $this->pdo = null; + } + + function halt($e = '', $sql = '') { + if($message && DT_DEBUG) log_write("\t\t<query>".$sql."</query>\n\t\t<errmsg>".$e->getMessage()."</errmsg>\n", 'sql'); + if($this->halt) message('MySQL Query:'.str_replace(DT_PRE, '[pre]', $sql).' <br/>Message:'.str_replace(DT_PRE, '[pre]', $e->getMessage())); + } + + function _query($sql, $ttl) { + global $dc; + $cid = md5($sql); + $this->result = $dc->get($cid); + if(!is_array($this->result)) { + $tmp = array(); + $result = $this->query($sql, '', ''); + while($r = $this->fetch_array($result, '')) { + $tmp[] = $r; + } + $this->result = $tmp; + $this->free_result($result); + $dc->set($cid, $tmp, $ttl + rand(0, 30)); + } + return $this->result; + } + + function _fetch_array($query = array()) { + if($query) $this->result = $query; + if(isset($this->result[$this->cursor])) { + return $this->result[$this->cursor++]; + } else { + $this->cursor = 0; + return array(); + } + } +} +?> \ No newline at end of file diff --git a/include/defend.inc.php b/include/defend.inc.php new file mode 100644 index 0000000..519d664 --- /dev/null +++ b/include/defend.inc.php @@ -0,0 +1,23 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +if($DT['close']) { + if($DT_BOT) dhttp(503); + message($DT['close_reason'].' '); +} +if($DT['defend_cc']) { + if(!DT_WIN && file_exists('/proc/loadavg')) { + if($fp = @fopen('/proc/loadavg', 'r')) { + list($loadaverage) = explode(' ', fread($fp, 6)); + fclose($fp); + if($loadaverage > $DT['defend_cc']) { + header("HTTP/1.0 503 Service Unavailable"); + exit(include(DT_ROOT.'/api/503.php')); + } + } + } +} +?> \ No newline at end of file diff --git a/include/fields.func.php b/include/fields.func.php new file mode 100644 index 0000000..3fee068 --- /dev/null +++ b/include/fields.func.php @@ -0,0 +1,350 @@ +<?php +/* + DESTOON Copyright (C)2008-2022 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +function fields_update($post_fields, $table, $itemid, $keyname = 'itemid', $fd = array()) { + global $FD; + if(!$table || !$itemid) return ''; + if($fd) $FD = $fd; + $sql = ''; + foreach($FD as $k=>$v) { + if(isset($post_fields[$v['name']]) || $v['html'] == 'checkbox') { + $mk = $v['name']; + $mv = $post_fields[$v['name']]; + if($v['html'] == 'checkbox' && is_array($post_fields[$v['name']])) $mv = implode(',', $post_fields[$v['name']]); + $mv = $v['html'] == 'editor' ? dsafe($mv) : dhtmlspecialchars(trim($mv)); + $sql .= ",$mk='$mv'"; + } + } + $sql = substr($sql, 1); + if($sql) DB::query("UPDATE {$table} SET $sql WHERE `$keyname`=$itemid"); +} + +function fields_check($post_fields, $fd = array()) { + global $FD, $session; + include load('include.lang'); + if($fd) $FD = $fd; + if(!is_object($session)) $session = new dsession(); + $uploads = isset($_SESSION['uploads']) ? $_SESSION['uploads'] : array(); + foreach($FD as $k=>$v) { + $value = isset($post_fields[$v['name']]) ? $post_fields[$v['name']] : ''; + if(in_array($v['html'], array('thumb', 'file', 'editor')) && $uploads) { + foreach($uploads as $sk=>$sv) { + if($v['html'] == 'editor') { + if(strpos($value, $sv) !== false) unset($_SESSION['uploads'][$sk]); + } else { + if($sv == $value) unset($_SESSION['uploads'][$sk]); + } + } + } + if(!$v['input_limit']) continue; + if(!defined('DT_ADMIN') && !$v['front']) continue; + if($v['input_limit'] == 'is_date') { + if(!is_date($value)) fields_message(lang($L['fields_input'], array($v['title']))); + } else if($v['input_limit'] == 'is_time') { + if(!is_time($value)) fields_message(lang($L['fields_input'], array($v['title']))); + } else if($v['input_limit'] == 'is_email') { + if(!is_email($value)) fields_message(lang($L['fields_valid'], array($v['title']))); + } else if(is_numeric($v['input_limit'])) { + $length = $value ? ($v['html'] == 'checkbox' ? count($value) : word_count($value)) : 0; + if($length < $v['input_limit']) fields_message(lang($L['fields_less'], array($v['title'], $v['input_limit']))); + } else if(preg_match("/^([0-9]{1,})\-([0-9]{1,})$/", $v['input_limit'], $m)) { + $length = $value ? ($v['html'] == 'checkbox' ? count($value) : word_count($value)) : 0; + if($m[1] && $length < $m[1]) fields_message(lang($L['fields_less'], array($v['title'], $m[1]))); + if($m[2] && $length > $m[2]) fields_message(lang($L['fields_more'], array($v['title'], $m[2]))); + } else { + if(!preg_match("/^".$v['input_limit']."$/", $value)) fields_message(lang($L['fields_match'], array($v['title']))); + } + } +} + +function fields_js($fd = array()) { + global $FD; + if($fd) $FD = $fd; + $js = ''; + include load('include.lang'); + foreach($FD as $k=>$v) { + if(!$v['input_limit']) continue; + if(!defined('DT_ADMIN') && !$v['front']) continue; + if($v['input_limit'] == 'is_date') { + $js .= 'f = "post_fields'.$v['name'].'";l = Dd(f).value.length;'; + $js .= 'if(l != 10) {Dmsg("'.lang($L['fields_input'], array($v['title'])).'", f, 1);return false;}'; + } else if($v['input_limit'] == 'is_time') { + $js .= 'f = "post_fields'.$v['name'].'";l = Dd(f).value.length;'; + $js .= 'if(l > 19 || l > 16) {Dmsg("'.lang($L['fields_input'], array($v['title'])).'", f, 1);return false;}'; + } else if($v['input_limit'] == 'is_email') { + $js .= 'f = "'.$v['name'].'";l = Dd(f).value.length;'; + $js .= 'if(l < 8) {Dmsg("'.lang($L['fields_input'], array($v['title'])).'", f);return false;}'; + } else if(is_numeric($v['input_limit'])) { + if($v['html'] == 'area') { + $js .= 'f = "'.$v['name'].'";l = Dd("areaid_1").value;'; + $js .= 'if(l == 0) {Dmsg("'.lang($L['fields_area']).'", f, 1);return false;}'; + } else if($v['html'] == 'checkboxs') { + $js .= 'f = "'.$v['name'].'";l = checked_count(f);'; + $js .= 'if(l < '.$v['input_limit'].') {Dmsg("'.lang($L['fields_less'], array($v['title'], $v['input_limit'])).'", f, 1);return false;}'; + } else { + $js .= 'f = "'.$v['name'].'";l = Dd(f).value.length;'; + $js .= 'if(l < '.$v['input_limit'].') {Dmsg("'.lang($L['fields_less'], array($v['title'], $v['input_limit'])).'", f);return false;}'; + } + } else if(preg_match("/^([0-9]{1,})\-([0-9]{1,})$/", $v['input_limit'], $m)) { + if($v['html'] == 'checkbox') { + $js .= 'f = "'.$v['name'].'";l = checked_count(f);'; + if($m[1]) $js .= 'if(l < '.$m[1].') {Dmsg("'.lang($L['fields_less'], array($v['title'], $m[1])).'", f, 1);return false;}'; + if($m[2]) $js .= 'if(l > '.$m[2].') {Dmsg("'.lang($L['fields_more'], array($v['title'], $m[2])).'", f, 1);return false;}'; + } else { + $js .= 'f = "'.$v['name'].'";l = Dd(f).value.length;'; + if($m[1]) $js .= 'if(l < '.$m[1].') {Dmsg("'.lang($L['fields_less'], array($v['title'], $m[1])).'", f);return false;}'; + if($m[2]) $js .= 'if(l > '.$m[2].') {Dmsg("'.lang($L['fields_more'], array($v['title'], $m[2])).'", f);return false;}'; + } + } else { + $js .= 'f = "'.$v['name'].'";l = Dd(f).value;'; + $js .= 'if(l.match(/^'.$v['input_limit'].'$/) == null) {Dmsg("'.lang($L['fields_match'], array($v['title'])).'", f);return false;}'; + } + } + return $js; +} + +function fields_html($left = '<td class="tl">', $right = '<td>', $values = array(), $fd = array()) { + extract($GLOBALS, EXTR_SKIP); + if($fd) $FD = $fd; + $html = ''; + foreach($FD as $k=>$v) { + if(!$v['display']) continue; + if(!defined('DT_ADMIN') && !$v['front']) continue; + $html .= fields_show($k, $left, $right, $values, $fd); + } + return $html; +} + +function fields_show($itemid, $left = '<td class="tl">', $right = '<td>', $values = array(), $fd = array()) { + extract($GLOBALS, EXTR_SKIP); + if($fd) $FD = $fd; + if(!$values) { + if(isset($item)) $values = $item; + if(isset($user)) $values = $user; + } + $html = ''; + $v = $FD[$itemid]; + $value = $v['default_value']; + $did = 'd'.$v['name']; + if(isset($values[$v['name']])) { + $value = $values[$v['name']]; + } else if($v['default_value']) { + eval('$value = "'.$v['default_value'].'";'); + } + if($v['html'] == 'hidden') { + $html .= '<input type="hidden" name="post_fields['.$v['name'].']" id="'.$v['name'].'" value="'.$value.'" '.$v['addition'].'/>'; + } else { + if($DT_PC) { + $html .= '<tr>'.$left; + if($v['input_limit']) { + $html .= '<span class="f_red">*</span> '; + } else { + $html .= defined('DT_ADMIN') ? '<span class="f_hid">*</span> ' : ''; + } + $html .= $v['title']; + $html .= '</td>'; + $html .= $right; + } else { + $html .= '<p>'.$v['title']; + if($v['input_limit']) $html .= '<em>*</em>'; + $html .= '<b id="'.$did.'"></b></p>'; + $html .= $v['html'] == 'editor' ? '' : '<div>'; + } + switch($v['html']) { + case 'text': + $html .= '<input type="text" name="post_fields['.$v['name'].']" id="'.$v['name'].'" value="'.$value.'" '.$v['addition'].'/>'; + break; + case 'textarea': + $html .= '<textarea name="post_fields['.$v['name'].']" id="'.$v['name'].'" '.$v['addition'].'>'.$value.'</textarea>'; + break; + case 'select': + if($v['option_value']) { + $html .= '<select name="post_fields['.$v['name'].']" id="'.$v['name'].'" '.$v['addition'].'><option value="">'.$L['choose'].'</option>'; + $rows = explode("*", $v['option_value']); + foreach($rows as $row) { + if($row) { + $cols = explode("|", trim($row)); + $html .= '<option value="'.$cols[0].'"'.($cols[0] == $value ? ' selected' : '').'>'.$cols[1].'</option>'; + } + } + $html .= '</select>'; + } + break; + case 'radio': + if($v['option_value']) { + $html .= '<span id="'.$v['name'].'">'; + $rows = explode("*", $v['option_value']); + foreach($rows as $rw => $row) { + if($row) { + $cols = explode("|", trim($row)); + $html .= '<input type="radio" name="post_fields['.$v['name'].']" value="'.$cols[0].'" id="'.$v['name'].'_'.$rw.'"'.($cols[0] == $value ? ' checked' : '').'> '.$cols[1].'   '; + } + } + $html .= '</span>'; + } + break; + case 'checkbox': + if($v['option_value']) { + $html .= '<span id="'.$v['name'].'">'; + $value = explode(',', $value); + $rows = explode("*", $v['option_value']); + foreach($rows as $rw => $row) { + if($row) { + $cols = explode("|", trim($row)); + $html .= '<input type="checkbox" name="post_fields['.$v['name'].'][]" value="'.$cols[0].'" id="'.$v['name'].'_'.$rw.'"'.(in_array($cols[0], $value) ? ' checked' : '').'> '.$cols[1].'   '; + } + } + $html .= '</span>'; + } + break; + case 'date': + if($DT_PC) { + $html .= dcalendar('post_fields['.$v['name'].']', $value); + $did = 'post_dfields'.$v['name']; + } else { + $html .= '<input type="date" name="post_fields['.$v['name'].']" id="'.$v['name'].'" value="'.$value.'" '.$v['addition'].'/>'; + } + break; + case 'time': + if($DT_PC) { + $html .= dcalendar('post_fields['.$v['name'].']', $value, '-', 1); + $did = 'post_dfields'.$v['name']; + } else { + $html .= '<input type="datetime-local" name="post_fields['.$v['name'].']" id="'.$v['name'].'" value="'.$value.'" '.$v['addition'].'/>'; + } + break; + case 'area': + $html .= ajax_area_select('post_fields['.$v['name'].']', $GLOBALS['L']['choose'], $value); + break; + case 'thumb': + if($DT_PC) { + $html .= '<input name="post_fields['.$v['name'].']" type="text" size="60" id="'.$v['name'].'" value="'.$value.'" '.$v['addition'].' ondblclick="Dthumb('.$moduleid.','.$v['width'].','.$v['height'].', Dd(\''.$v['name'].'\').value,\''.(defined('DT_ADMIN') ? '' : '1').'\',\''.$v['name'].'\');"/>  <span onclick="Dthumb('.$moduleid.','.$v['width'].','.$v['height'].', Dd(\''.$v['name'].'\').value,\''.(defined('DT_ADMIN') ? '' : '1').'\',\''.$v['name'].'\');" class="jt">['.$L['upload'].']</span>  <span onclick="_preview(Dd(\''.$v['name'].'\').value);" class="jt">['.$L['preview'].']</span>  <span onclick="Dd(\''.$v['name'].'\').value=\'\';" class="jt">['.$L['delete'].']</span>'; + } else { + $html .= '<input type="url" name="post_fields['.$v['name'].']" id="'.$v['name'].'" value="'.$value.'" '.$v['addition'].'/>'; + $html .= '</div><div class="ui-form-file-upload"><div id="'.$v['name'].'-picker"></div></div>'; + $html .= '<script type="text/javascript">'; + $html .= 'var file_'.$v['name'].' = WebUploader.create({'; + $html .= ' auto: true,'; + $html .= ' server: UPPath+\'?moduleid='.$moduleid.'&action=webuploader&from=thumb&width='.$v['width'].'&height='.$v['height'].'\','; + $html .= ' pick: \'#'.$v['name'].'-picker\','; + $html .= ' accept: {'; + $html .= ' title: \'Images\','; + $html .= ' extensions: \'gif,jpg,jpeg,bmp,png\','; + $html .= ' mimeTypes: \'image/*\''; + $html .= ' },'; + $html .= ' resize: false'; + $html .= '});'; + $html .= 'file_'.$v['name'].'.on(\'fileQueued\', function(file) {'; + $html .= ' Dtoast(\''.$js_pageid.'\',L[\'uploading\'], \'\', 30);'; + $html .= '});'; + $html .= 'file_'.$v['name'].'.on(\'uploadProgress\', function(file, percentage) {'; + $html .= ' var p = parseInt(percentage * 100);'; + $html .= ' $(\'#toast-'.$js_pageid.'\').html(p > 99 ? L[\'processing\'] : L[\'uploading\']+p+\'%\');'; + $html .= '});'; + $html .= 'file_'.$v['name'].'.on(\'uploadSuccess\', function(file, data) {'; + $html .= ' if(data.error) {'; + $html .= ' Dtoast(\''.$js_pageid.'\',data.message, \'\', 5);'; + $html .= ' } else {'; + $html .= ' $(\'#'.$v['name'].'\').val(data.url);'; + $html .= ' }'; + $html .= '});'; + $html .= 'file_'.$v['name'].'.on(\'uploadError\', function(file, data) {'; + $html .= ' Dtoast(\''.$js_pageid.'\',data.message, \'\', 5);'; + $html .= '});'; + $html .= 'file_'.$v['name'].'.on(\'uploadComplete\', function(file) {'; + $html .= ' $(\'#toast-'.$js_pageid.'\').hide();'; + $html .= '});'; + $html .= '</script>'; + return $html; + } + break; + case 'file': + if($DT_PC) { + $html .= '<input name="post_fields['.$v['name'].']" type="text" size="60" id="'.$v['name'].'" value="'.$value.'" '.$v['addition'].'/>  <span onclick="Dfile('.$moduleid.', Dd(\''.$v['name'].'\').value, \''.$v['name'].'\');" class="jt">['.$L['upload'].']</span>  <span onclick="if(Dd(\''.$v['name'].'\').value) window.open(Dd(\''.$v['name'].'\').value);" class="jt">['.$L['preview'].']</span>  <span onclick="Dd(\''.$v['name'].'\').value=\'\';" class="jt">['.$L['delete'].']</span>'; + } else { + $html .= '<input type="url" name="post_fields['.$v['name'].']" id="'.$v['name'].'" value="'.$value.'" '.$v['addition'].'/>'; + $html .= '</div><div class="ui-form-file-upload"><div id="'.$v['name'].'-picker"></div></div>'; + $html .= '<script type="text/javascript">'; + $html .= 'var file_'.$v['name'].' = WebUploader.create({'; + $html .= ' auto: true,'; + $html .= ' server: UPPath+\'?moduleid='.$moduleid.'&action=webuploader&from=file\','; + $html .= ' pick: \'#'.$v['name'].'-picker\','; + $html .= ' resize: false'; + $html .= '});'; + $html .= 'file_'.$v['name'].'.on(\'fileQueued\', function(file) {'; + $html .= ' Dtoast(\''.$js_pageid.'\',L[\'uploading\'], \'\', 30);'; + $html .= '});'; + $html .= 'file_'.$v['name'].'.on(\'uploadProgress\', function(file, percentage) {'; + $html .= ' var p = parseInt(percentage * 100);'; + $html .= ' $(\'#toast-'.$js_pageid.'\').html(p > 99 ? L[\'processing\'] : L[\'uploading\']+p+\'%\');'; + $html .= '});'; + $html .= 'file_'.$v['name'].'.on(\'uploadSuccess\', function(file, data) {'; + $html .= ' if(data.error) {'; + $html .= ' Dtoast(\''.$js_pageid.'\',data.message, \'\', 5);'; + $html .= ' } else {'; + $html .= ' $(\'#'.$v['name'].'\').val(data.url);'; + $html .= ' }'; + $html .= '});'; + $html .= 'file_'.$v['name'].'.on(\'uploadError\', function(file, data) {'; + $html .= ' Dtoast(\''.$js_pageid.'\',data.message, \'\', 5);'; + $html .= '});'; + $html .= 'file_'.$v['name'].'.on(\'uploadComplete\', function(file) {'; + $html .= ' $(\'#toast-'.$js_pageid.'\').hide();'; + $html .= '});'; + $html .= '</script>'; + return $html; + } + break; + case 'editor': + if($DT_PC) { + $toolbar = isset($group_editor) ? $group_editor : 'Destoon'; + $width = $v['width']; + if($width < 101) $width = $width.'%'; + if(DT_EDITOR == 'fckeditor') { + $html .= '<textarea name="post_fields['.$v['name'].']" id="'.$v['name'].'" style="display:none">'.$value.'</textarea><iframe id="'.$v['name'].'___Frame" src="'.$MODULE[2]['linkurl'].'editor/fckeditor/editor/fckeditor.html?InstanceName='.$v['name'].'&Toolbar='.$toolbar.'" width="'.$width.'" height="'.$v['height'].'" frameborder="no" scrolling="no"></iframe><br/>'; + } else { + $html .= '<textarea name="post_fields['.$v['name'].']" id="'.$v['name'].'" style="display:none">'.$value.'</textarea>'. deditor($moduleid, $v['name'], $toolbar, $width, $v['height']); + } + } else { + $html .= '</div>'; + $html .= '<input type="hidden" name="post_fields['.$v['name'].']" id="'.$v['name'].'" '.$v['addition'].'/>'; + $html .= '<ul class="ui-editor-toolbar">'; + $html .= '<li class="ui-editor-img"><div id="editor-'.$v['name'].'-picker"></div></li>'; + $html .= '<li class="ui-editor-bold" id="editor-'.$v['name'].'-bold" editor-action="bold">B</li>'; + $html .= '<li class="ui-editor-italic" id="editor-'.$v['name'].'-italic" editor-action="italic">I</li>'; + $html .= '<li class="ui-editor-underline" id="editor-'.$v['name'].'-underline" editor-action="underline">U</li>'; + $html .= '</ul>'; + $html .= '<div class="ui-editor-content" id="editor-'.$v['name'].'">'.$value.'</div>'; + $html .= '<script type="text/javascript">'; + $html .= '$(function(){'; + $html .= ' $(\'#editor-'.$v['name'].'\').DEditor({'; + $html .= ' editorid: \'editor-'.$v['name'].'\','; + $html .= ' textareaid: \''.$v['name'].'\','; + $html .= ' server: UPPath+\'?moduleid='.$moduleid.'&action=webuploader&from=editor\''; + $html .= ' });'; + $html .= '});'; + $html .= '</script>'; + $html .= '<div class="ui-form">'; + return $html; + } + + break; + } + if($DT_PC) { + $html .= ' <span class="f_red" id="'.$did.'"></span>'; + $html .= $v['note']; + $html .= '</td></tr>'; + } else { + $html .= '</div>'; + } + } + return $html; +} + +function fields_message($msg) { + defined('DT_ADMIN') ? msg($msg) : dalert($msg); +} +?> \ No newline at end of file diff --git a/include/file.func.php b/include/file.func.php new file mode 100644 index 0000000..03d3ec4 --- /dev/null +++ b/include/file.func.php @@ -0,0 +1,256 @@ +<?php +/* + [DESTOON B2B System] Copyright (c) 2008-2018 www.destoon.com + This is NOT a freeware, use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +if(!function_exists('file_put_contents')) { + define('FILE_APPEND', 8); + function file_put_contents($file, $string, $append = '') { + $mode = $append == '' ? 'wb' : 'ab'; + $fp = @fopen($file, $mode) or exit("Can not open $file"); + flock($fp, LOCK_EX); + $stringlen = @fwrite($fp, $string); + flock($fp, LOCK_UN); + @fclose($fp); + return $stringlen; + } +} + +function file_ext($filename) { + if(strpos($filename, '.') === false) return ''; + $ext = strtolower(trim(substr(strrchr($filename, '.'), 1))); + return preg_match("/^[a-z0-9]{1,10}$/", $ext) ? $ext : ''; +} + +function file_vname($name) { + if(strpos($name, '/') === false) return str_replace(array(' ', '\\', ':', '*', '?', '"', '<', '>', '|', "'", '$', '&', '%', '#', '@'), array('-', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''), $name); + $tmp = explode('/', $name); + $str = ''; + foreach($tmp as $k=>$v) { + $str .= ($k ? '/' : '').file_vname($v); + } + return $str; +} + +function file_down($file, $filename = '', $data = '') { + if(!$data && !is_file($file)) exit; + $filename = $filename ? $filename : basename($file); + $filetype = file_ext($filename); + $filesize = $data ? strlen($data) : filesize($file); + ob_end_clean(); + @set_time_limit(0); + if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) { + header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); + header('Pragma: public'); + } else { + header('Pragma: no-cache'); + } + header('Expires: '.gmdate('D, d M Y H:i:s').' GMT'); + header('Content-Encoding: none'); + header('Content-Length: '.$filesize); + header('Content-Disposition: attachment; filename='.$filename); + header('Content-Type: '.$filetype); + if($data) { echo $data; } else { readfile($file); } + exit; +} + +function file_list($dir, $fs = array()) { + $files = glob($dir.'/*'); + if(!is_array($files)) return $fs; + foreach($files as $file) { + if(is_dir($file)) { + $fs = file_list($file, $fs); + } else { + $fs[] = $file; + } + } + return $fs; +} + +function file_get($filename) { + $rec = @file_get_contents($filename); + if($rec) return $rec; + if(substr($filename, 0, 8) == 'https://') return file_get('http://'.substr($filename, 8)); + return ''; +} + +function file_copy($from, $to) { + dir_create(dirname($to)); + if(is_file($to) && DT_CHMOD) @chmod($to, DT_CHMOD); + if(strpos($from, DT_PATH) !== false) $from = str_replace(DT_PATH, DT_ROOT.'/', $from); + if(@copy($from, $to)) { + if(DT_CHMOD) @chmod($to, DT_CHMOD); + return true; + } else { + if(substr($from, 0, 8) == 'https://') return file_copy('http://'.substr($from, 8), $to); + return false; + } +} + +function file_put($filename, $data) { + dir_create(dirname($filename)); + if(@$fp = fopen($filename, 'wb')) { + flock($fp, LOCK_EX); + $len = fwrite($fp, $data); + flock($fp, LOCK_UN); + fclose($fp); + if(DT_CHMOD) @chmod($filename, DT_CHMOD); + return $len; + } else { + return false; + } +} + +function file_del($filename) { + if(DT_CHMOD) @chmod($filename, DT_CHMOD); + return is_file($filename) ? @unlink($filename) : false; +} + +function html_del($filename) { + file_del($filename); + file_del(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename)); +} + +function dir_path($dirpath) { + $dirpath = str_replace('\\', '/', $dirpath); + if(substr($dirpath, -1) != '/') $dirpath = $dirpath.'/'; + return $dirpath; +} + +function dir_create($path) { + if(is_dir($path)) return true; + if(DT_CACHE != DT_ROOT.'/file/cache' && strpos($path, DT_CACHE) !== false) { + $dir = str_replace(DT_CACHE.'/', '', $path); + $dir = dir_path($dir); + $temp = explode('/', $dir); + $cur_dir = DT_CACHE.'/'; + $max = count($temp) - 1; + for($i = 0; $i < $max; $i++) { + $cur_dir .= $temp[$i].'/'; + if(is_dir($cur_dir)) continue; + @mkdir($cur_dir); + if(DT_CHMOD) @chmod($cur_dir, DT_CHMOD); + } + } else { + $dir = str_replace(DT_ROOT.'/', '', $path); + $dir = dir_path($dir); + $temp = explode('/', $dir); + $cur_dir = DT_ROOT.'/'; + $max = count($temp) - 1; + for($i = 0; $i < $max; $i++) { + $cur_dir .= $temp[$i].'/'; + if(is_dir($cur_dir)) continue; + @mkdir($cur_dir); + if(DT_CHMOD) @chmod($cur_dir, DT_CHMOD); + } + } + return is_dir($path); +} + +function dir_chmod($dir, $mode = '', $require = 0) { + if(!$require) $require = substr($dir, -1) == '*' ? 2 : 0; + if($require) { + if($require == 2) $dir = substr($dir, 0, -1); + $dir = dir_path($dir); + $list = glob($dir.'*'); + foreach($list as $v) { + if(is_dir($v)) { + dir_chmod($v, $mode, 1); + } else { + @chmod(basename($v), $mode); + } + } + } + if(is_dir($dir)) { + @chmod($dir, $mode); + } else { + @chmod(basename($dir), $mode); + } +} + +function dir_copy($fromdir, $todir) { + $fromdir = dir_path($fromdir); + $todir = dir_path($todir); + if(!is_dir($fromdir)) return false; + if(!is_dir($todir)) dir_create($todir); + $list = glob($fromdir.'*'); + foreach($list as $v) { + $path = $todir.basename($v); + if(is_file($path) && !is_writable($path)) { + if(DT_CHMOD) @chmod($path, DT_CHMOD); + } + if(is_dir($v)) { + dir_copy($v, $path); + } else { + @copy($v, $path); + if(DT_CHMOD) @chmod($path, DT_CHMOD); + } + } + return true; +} + +function dir_delete($dir) { + $dir = dir_path($dir); + if(!is_dir($dir)) return false; + $dirs = array(DT_ROOT.'/admin/', DT_ROOT.'/api/', DT_CACHE.'/', DT_ROOT.'/file/', DT_ROOT.'/cache/', DT_ROOT.'/include/', DT_ROOT.'/lang/', DT_ROOT.'/member/', DT_ROOT.'/module/', DT_ROOT.'/skin/', DT_ROOT.'/template/', DT_ROOT.'/mobile/'); + if(substr($dir, 0, 1) == '.' || in_array($dir, $dirs)) die("Cannot Remove System DIR $dir "); + $list = glob($dir.'*'); + if($list) { + foreach($list as $v) { + is_dir($v) ? dir_delete($v) : @unlink($v); + } + } + return @rmdir($dir); +} + +function get_file($dir, $ext = '', $fs = array()) { + $files = glob($dir.'/*'); + if(!is_array($files)) return $fs; + foreach($files as $file) { + if(is_dir($file)) { + if(is_file($file.'/index.php') && is_file($file.'/config.inc.php')) continue; + $fs = get_file($file, $ext, $fs); + } else { + if($ext) { + if(preg_match("/\.($ext)$/i", $file)) $fs[] = $file; + } else { + $fs[] = $file; + } + } + } + return $fs; +} + +function is_write($file) { + if(DT_WIN) { + if(substr($file, -1) == '/') { + if(is_dir($file)) { + $file = $file.'writeable-test.tmp'; + if(@$fp = fopen($file, 'a')) { + flock($fp, LOCK_EX); + fwrite($fp, 'OK'); + flock($fp, LOCK_UN); + fclose($fp); + $tmp = file_get_contents($file); + unlink($file); + if($tmp == 'OK') return true; + } + return false; + } else { + dir_create($file); + if(is_dir($file)) return is_write($file); + return false; + } + } else { + if(@$fp = fopen($file, 'a')) { + fclose($fp); + return true; + } + return false; + } + } else { + return is_writeable($file); + } +} +?> \ No newline at end of file diff --git a/include/ftp.class.php b/include/ftp.class.php new file mode 100644 index 0000000..3952eb9 --- /dev/null +++ b/include/ftp.class.php @@ -0,0 +1,71 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class dftp { + var $fp; + var $root; + var $connected = 0; + + function __construct($ftphost, $ftpuser, $ftppass, $ftpport = 21, $root = '/', $pasv = 0, $ssl = 0) { + if($ssl && function_exists('ftp_ssl_connect')) { + $this->fp = @ftp_ssl_connect($ftphost, $ftpport); + } else if(function_exists('ftp_connect')) { + $this->fp = @ftp_connect($ftphost, $ftpport); + } else { + return false; + } + $this->connected = @ftp_login($this->fp, $ftpuser, $ftppass); + @ftp_pasv($this->fp, $pasv); + $this->root = dir_path($root); + } + + function dftp($ftphost, $ftpuser, $ftppass, $ftpport = 21, $root = '/', $pasv = 0, $ssl = 0) { + $this->__construct($ftphost, $ftpuser, $ftppass, $ftpport, $root, $pasv, $ssl); + } + + function dftp_chdir($dir = '') { + return @ftp_chdir($this->fp, $this->root.$dir); + } + + function dftp_chmod($path, $mode = 0777) { + $path = $this->root.$path; + return function_exists('ftp_chmod') ? @ftp_chmod($this->fp, $mode, $path) : @ftp_site($this->fp, "CHMOD $mode $path"); + } + + function dftp_mkdir($dir, $mode = 0777) { + $temp = explode('/', $dir); + $cur_dir = ''; + $max = count($temp); + for($i = 0; $i < $max; $i++) { + $cur_dir .= $temp[$i].'/'; + if($this->dftp_chdir($cur_dir)) continue; + @ftp_mkdir($this->fp, $this->root.$cur_dir); + $this->dftp_chmod($cur_dir, $mode); + } + return $this->dftp_chdir($dir); + } + + function dftp_rmdir($dir) { + return @ftp_rmdir($this->fp, $this->root.$dir); + } + + function dftp_delete($file) { + return @ftp_delete($this->fp, $this->root.$file); + } + + function dftp_put($local, $remote = '') { + $remote or $remote = $local; + $local = DT_ROOT.'/'.$local; + $this->dftp_mkdir(dirname($remote)); + if(@ftp_put($this->fp, $this->root.$remote, $local, FTP_BINARY)) { + $this->dftp_chmod($remote); + return true; + } else { + return false; + } + } +} +?> \ No newline at end of file diff --git a/include/global.func.php b/include/global.func.php new file mode 100644 index 0000000..f63162b --- /dev/null +++ b/include/global.func.php @@ -0,0 +1,1330 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +function daddslashes($string) { + return is_array($string) ? array_map('daddslashes', $string) : addslashes($string); +} + +function dstripslashes($string) { + return is_array($string) ? array_map('dstripslashes', $string) : stripslashes($string); +} + +function dtrim($string) { + return str_replace(array(chr(10), chr(13), urldecode('%C2%A0'), "\t", ' '), array('', '', '', '', ''), $string); +} + +function dwrite($string) { + return str_replace(array(chr(10), chr(13), "'"), array('', '', "\'"), $string); +} + +function dheader($url) { + exit(header('location:'.$url)); +} + +function dmsg($dmsg = '', $dforward = '') { + if(!$dmsg && !$dforward) { + $dmsg = get_cookie('dmsg'); + if($dmsg) { + echo '<script type="text/javascript">showmsg(\''.$dmsg.'\');</script>'; + set_cookie('dmsg', ''); + } + } else { + set_cookie('dmsg', $dmsg); + $dforward = preg_replace("/(.*)([&?]rand=[0-9]*)(.*)/i", "\\1\\3", $dforward); + $dforward = str_replace('.php&', '.php?', $dforward); + $dforward = strpos($dforward, '?') === false ? $dforward.'?rand='.mt_rand(10, 99) : str_replace('?', '?rand='.mt_rand(10, 99).'&', $dforward); + dheader($dforward); + } +} + +function dalert($dmessage = errmsg, $dforward = '', $extend = '') { + global $DT; + exit(include template('alert', 'message')); +} + +function dsubstr($string, $length, $suffix = '', $start = 0) { + if($start) { + $tmp = dsubstr($string, $start); + $string = substr($string, strlen($tmp)); + } + $strlen = strlen($string); + if($strlen <= $length) return $string; + $string = str_replace(array('"', '<', '>'), array('"', '<', '>'), $string); + $length = $length - strlen($suffix); + $str = ''; + if(DT_CHARSET == 'UTF-8') { + $n = $tn = $noc = 0; + while($n < $strlen) { + $t = ord($string[$n]); + if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) { + $tn = 1; $n++; $noc++; + } elseif(194 <= $t && $t <= 223) { + $tn = 2; $n += 2; $noc += 2; + } elseif(224 <= $t && $t <= 239) { + $tn = 3; $n += 3; $noc += 2; + } elseif(240 <= $t && $t <= 247) { + $tn = 4; $n += 4; $noc += 2; + } elseif(248 <= $t && $t <= 251) { + $tn = 5; $n += 5; $noc += 2; + } elseif($t == 252 || $t == 253) { + $tn = 6; $n += 6; $noc += 2; + } else { + $n++; + } + if($noc >= $length) break; + } + if($noc > $length) $n -= $tn; + $str = substr($string, 0, $n); + } else { + for($i = 0; $i < $length; $i++) { + $str .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i]; + } + } + $str = str_replace(array('"', '<', '>'), array('"', '<', '>'), $str); + return $str == $string ? $str : $str.$suffix; +} + +function match_kw($key, $keyword) { + $sign = substr($keyword, 0, 1); + $kw = substr($keyword, 1); + if($sign == '=') { + return " AND ".$key."='".$kw."'"; + } else if($sign == '!') { + return " AND ".$key."<>'".$kw."'"; + } else if($sign == '>') { + if(is_numeric($kw)) return " AND ".$key.">'".$kw."'"; + } else if($sign == '<') { + if(is_numeric($kw)) return " AND ".$key."<'".$kw."'"; + } + return " AND ".$key." LIKE '%".$keyword."%'"; +} + +function cutstr($str, $mark1 = '', $mark2 = '') { + if($mark1) { + $p1 = strpos($str, $mark1); + if($p1 !== false) $str = substr($str, $p1 + strlen($mark1)); + } + if(!$mark2) return $str; + $p2 = strpos($str, $mark2); + if($p2 === false) return $str; + return substr($str, 0, $p2); +} + +function encrypt($txt, $key = '', $expiry = 0) { + strlen($key) > 5 or $key = DT_KEY; + $str = $txt.substr($key, 0, 3); + return str_replace(array('=', '+', '/', '0x', '0X'), array('-E-', '-P-', '-S-', '-Z-', '-X-'), mycrypt($str, $key, 'ENCODE', $expiry)); +} + +function decrypt($txt, $key = '') { + strlen($key) > 5 or $key = DT_KEY; + $str = mycrypt(str_replace(array('-E-', '-P-', '-S-', '-Z-', '-X-'), array('=', '+', '/', '0x', '0X'), $txt), $key, 'DECODE'); + return substr($str, -3) == substr($key, 0, 3) ? substr($str, 0, -3) : ''; +} + +function mycrypt($string, $key, $operation = 'DECODE', $expiry = 0) { + $ckey_length = 4; + $key = md5($key); + $keya = md5(substr($key, 0, 16)); + $keyb = md5(substr($key, 16, 16)); + $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ''; + $cryptkey = $keya.md5($keya.$keyc); + $key_length = strlen($cryptkey); + $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + DT_TIME : 0).substr(md5($string.$keyb), 0, 16).$string; + $string_length = strlen($string); + $result = ''; + $box = range(0, 255); + $rndkey = array(); + for($i = 0; $i <= 255; $i++) { + $rndkey[$i] = ord($cryptkey[$i % $key_length]); + } + for($j = $i = 0; $i < 256; $i++) { + $j = ($j + $box[$i] + $rndkey[$i]) % 256; + $tmp = $box[$i]; + $box[$i] = $box[$j]; + $box[$j] = $tmp; + } + for($a = $j = $i = 0; $i < $string_length; $i++) { + $a = ($a + 1) % 256; + $j = ($j + $box[$a]) % 256; + $tmp = $box[$a]; + $box[$a] = $box[$j]; + $box[$j] = $tmp; + $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); + } + if($operation == 'DECODE') { + if((substr($result, 0, 10) == 0 || intval(substr($result, 0, 10)) - DT_TIME > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) { + return substr($result, 26); + } else { + return ''; + } + } else { + return $keyc.base64_encode($result); + } +} + +function dround($var, $precision = 2, $sprinft = false) { + $var = round(floatval($var), $precision); + if($sprinft) $var = sprintf('%.'.$precision.'f', $var); + return $var; +} + +function dalloc($i, $n = 5000) { + return ceil($i/$n); +} + +function strip_nr($string, $js = false) { + $string = str_replace(array(chr(13), chr(10), "\n", "\r", "\t", ' '),array('', '', '', '', '', ''), $string); + if($js) $string = str_replace("'", "\'", $string); + return $string; +} + +function template($template = 'index', $dir = '') { + global $CFG, $DT_PC; + check_name($template) or exit('BAD TPL NAME'); + if($dir) check_name($dir) or exit('BAD TPL DIR'); + $tpl = $DT_PC ? $CFG['template'] : $CFG['template_mobile']; + $to = DT_CACHE.'/tpl/'.$tpl.'/'.($dir ? $dir.'/' : '').$template.'.php'; + $isfileto = is_file($to); + if($CFG['template_refresh'] || !$isfileto) { + if($dir) $dir = $dir.'/'; + $from = DT_ROOT.'/template/'.$tpl.'/'.$dir.$template.'.htm'; + if(!is_file($from)) $from = DT_ROOT.'/template/'.($DT_PC ? 'default' : 'mobile').'/'.$dir.$template.'.htm'; + if(!$isfileto || filemtime($from) > filemtime($to) || (filesize($to) == 0 && filesize($from) > 0)) { + require_once DT_ROOT.'/include/template.func.php'; + template_compile($from, $to); + } + } + return $to; +} + +function ob_template($template, $dir = '') { + extract($GLOBALS, EXTR_SKIP); + ob_start(); + include template($template, $dir); + $contents = ob_get_contents(); + ob_clean(); + return $contents; +} + +function message($dmessage = errmsg, $dforward = 'goback', $dtime = 1) { + if(!$dmessage && $dforward && $dforward != 'goback') dheader($dforward); + global $DT, $DT_PC; + exit(include template('message', 'message')); +} + +function login() { + global $_userid, $MODULE, $DT_URL, $DT_PC, $DT; + $_userid or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).$DT['file_login'].'?forward='.rawurlencode($DT_URL)); +} + +function random($length, $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz') { + if($chars == '0-9') { + $chars = '0123456789'; + } else if($chars == 'a-z') { + $chars = 'abcdefghijklmnopqrstuvwxyz'; + } else if($chars == 'A-Z') { + $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + } else if($chars == 'a-Z') { + $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; + } + $str = ''; + $max = strlen($chars) - 1; + for($i = 0; $i < $length; $i++) { + $str .= $chars[mt_rand(0, $max)]; + } + return $str; +} + +function set_cookie($var, $value = '', $time = 0) { + global $CFG; + $time = $time > 0 ? $time : (empty($value) ? DT_TIME - 3600 : 0); + $port = $_SERVER['SERVER_PORT'] == '443' ? 1 : 0; + $var = $CFG['cookie_pre'].$var; + return setcookie($var, $value, $time, $CFG['cookie_path'], $CFG['cookie_domain'], $port); +} + +function get_cookie($var) { + global $CFG; + $var = $CFG['cookie_pre'].$var; + return isset($_COOKIE[$var]) ? $_COOKIE[$var] : ''; +} + +function get_table($moduleid, $data = 0) { + global $MODULE; + $module = $MODULE[$moduleid]['module']; + $M = array('company', 'member'); + if($data) { + return in_array($module, $M) ? DT_PRE.$module.'_data' : DT_PRE.$module.'_data_'.$moduleid; + } else { + return in_array($module, $M) ? DT_PRE.$module : DT_PRE.$module.'_'.$moduleid; + } +} + +function get_process($fromtime, $totime) { + if($fromtime && DT_TIME < $fromtime) return 1; + if($totime && DT_TIME > $totime) return 3; + return 2; +} + +function send_message($touser, $title, $content, $typeid = 4, $fromuser = '', $mid = 0, $tid = 0) { + if($touser == $fromuser) return false; + if(check_name($touser) && $title && $content) { + $title = addslashes($title); + $content = addslashes($content); + $r = DB::get_one("SELECT black FROM ".DT_PRE."member_misc WHERE username='$touser'"); + if($r) { + $typeid = intval($typeid); + $mid = intval($mid); + $tid = intval($tid); + if($r['black'] && $typeid != 4) { + $blacks = explode(' ', $r['black']); + $_from = $fromuser ? $fromuser : 'Guest'; + if(in_array($_from, $blacks)) return false; + } + DB::query("INSERT INTO ".DT_PRE."message (title,typeid,touser,fromuser,content,addtime,ip,status,mid,tid) VALUES ('$title','$typeid','$touser','$fromuser','$content','".DT_TIME."','".DT_IP."','3','$mid','$tid')"); + DB::query("UPDATE ".DT_PRE."member SET message=message+1 WHERE username='$touser'"); + if($fromuser) { + DB::query("INSERT INTO ".DT_PRE."message (title,typeid,content,fromuser,touser,addtime,ip,status,mid,tid) VALUES ('$title','$typeid','$content','$fromuser','$touser','".DT_TIME."','".DT_IP."','2','$mid','$tid')"); + } + return true; + } + } + return false; +} + +function send_mail($mail_to, $mail_subject, $mail_body, $mail_from = '', $mail_sign = true) { + global $DT; + if(substr($mail_to, -4) == '.sns') return false; + require_once DT_ROOT.'/include/mail.func.php'; + $result = dmail(trim($mail_to), $mail_subject, $mail_body, $mail_from, $mail_sign); + $success = $result == 'SUCCESS' ? 1 : 0; + if($DT['mail_log']) { + $status = $success ? 3 : 2; + $note = $success ? '' : addslashes($result); + $mail_subject = stripslashes($mail_subject); + $mail_body = stripslashes($mail_body); + $mail_subject = addslashes($mail_subject); + $mail_body = addslashes($mail_body); + DB::query("INSERT INTO ".DT_PRE."mail_log (email,title,content,addtime,status,note) VALUES ('$mail_to','$mail_subject','$mail_body','".DT_TIME."','$status','$note')"); + } + return $success; +} + +function strip_sms($message) { + global $DT; + $message = strip_tags($message); + $message = trim($message); + $message = preg_replace("/&([a-z]{1,});/", '', $message); + if($DT['sms_sign']) $message .= $DT['sms_sign']; + return $message; +} + +function send_sms($mobile, $message, $word = 0, $time = 0) { + global $DT, $_username; + if(!$DT['sms'] || !DT_CLOUD_UID || !DT_CLOUD_KEY || !is_mobile($mobile) || strlen($message) < 5) return false; + $word or $word = word_count($message); + $sms_message = $message; + $data = 'sms_uid='.DT_CLOUD_UID.'&sms_key='.md5(DT_CLOUD_KEY.'|'.$mobile.'|'.md5($sms_message)).'&sms_charset='.DT_CHARSET.'&sms_mobile='.$mobile.'&sms_message='.rawurlencode($sms_message).'&sms_time='.$time.'&sms_url='.rawurlencode(DT_PATH); + $code = dcurl('http://sms.destoon.com/send.php', $data); + if($code && strpos($code, 'destoon_sms_code=') !== false) { + $code = explode('destoon_sms_code=', $code); + $code = $code[1]; + } else { + $code = 'Can Not Connect SMS Server'; + } + DB::query("INSERT INTO ".DT_PRE."sms (mobile,message,word,editor,sendtime,ip,code) VALUES ('$mobile','$message','$word','$_username','".DT_TIME."','".DT_IP."','$code')"); + return $code; +} + +function send_weixin($touser, $word) { + if(check_name($touser) && strlen($word) > 1) { + $user = DB::get_one("SELECT openid,push,visittime FROM ".DT_PRE."weixin_user WHERE username='$touser'"); + if($user && $user['openid'] && $user['push'] && DT_TIME - $user['visittime'] < 172800) { + $openid = $user['openid']; + $type = 'text'; + require_once DT_ROOT.'/api/weixin/init.inc.php'; + if(!is_object($wx)) { + $wx = new weixin; + $wx->access_token = $wx->get_token(); + } + $arr = $wx->send($openid, $type, $word); + if($arr['errcode'] != 0) return false; + $post = array(); + $post['content'] = $word; + $post['type'] = 'push'; + $post['openid'] = $openid; + $post['editor'] = 'system'; + $post['addtime'] = DT_TIME; + $post['misc'] = ''; + $post = daddslashes($post); + $sql = ''; + foreach($post as $k=>$v) { + $sql .= ",$k='$v'"; + } + DB::query("INSERT INTO ".DT_PRE."weixin_chat SET ".substr($sql, 1)); + return true; + } + } + return false; +} + +function word_count($string) { + if(function_exists('mb_strlen')) return mb_strlen($string, DT_CHARSET); + $string = convert($string, DT_CHARSET, 'gbk'); + $length = strlen($string); + $count = 0; + for($i = 0; $i < $length; $i++) { + $t = ord($string[$i]); + if($t > 127) $i++; + $count++; + } + return $count; +} + +function cache_read($file, $dir = '', $mode = '') { + $file = $dir ? DT_CACHE.'/'.$dir.'/'.$file : DT_CACHE.'/'.$file; + if(!is_file($file)) return $mode ? '' : array(); + return $mode ? file_get($file) : include $file; +} + +function cache_write($file, $string, $dir = '') { + if(is_array($string)) $string = "<?php defined('IN_DESTOON') or exit('Access Denied'); return ".strip_nr(var_export($string, true))."; ?>"; + $file = $dir ? DT_CACHE.'/'.$dir.'/'.$file : DT_CACHE.'/'.$file; + $strlen = file_put($file, $string); + return $strlen; +} + +function cache_delete($file, $dir = '') { + $file = $dir ? DT_CACHE.'/'.$dir.'/'.$file : DT_CACHE.'/'.$file; + return file_del($file); +} + +function cache_clear($str, $type = '', $dir = '') { + $dir = $dir ? DT_CACHE.'/'.$dir.'/' : DT_CACHE.'/'; + $files = glob($dir.'*'); + if(is_array($files)) { + if($type == 'dir') { + foreach($files as $file) { + if(is_dir($file)) {dir_delete($file);} else {if(file_ext($file) == $str) file_del($file);} + } + } else { + foreach($files as $file) { + if(!is_dir($file) && strpos(basename($file), $str) !== false) file_del($file); + } + } + } +} + +function content_table($moduleid, $itemid, $split, $table_data = '') { + if($split) { + return split_table($moduleid, $itemid); + } else { + $table_data or $table_data = get_table($moduleid, 1); + return $table_data; + } +} + +function split_table($moduleid, $itemid) { + $part = split_id($itemid); + return DT_PRE.$moduleid.'_'.$part; +} + +function split_id($id) { + return $id > 0 ? ceil($id/100000) : 1; +} + +function ip2area($ip) { + $area = ''; + if(is_ip($ip)) { + $tmp = explode('.', $ip); + if($tmp[0] == 10 || $tmp[0] == 127 || ($tmp[0] == 192 && $tmp[1] == 168) || ($tmp[0] == 172 && ($tmp[1] >= 16 && $tmp[1] <= 31))) { + $area = 'LAN'; + } elseif($tmp[0] > 255 || $tmp[1] > 255 || $tmp[2] > 255 || $tmp[3] > 255) { + $area = 'Unknown'; + } else { + require_once DT_ROOT.'/include/ip.class.php'; + $do = new ip($ip); + $area = $do->area(); + } + } + return $area ? $area : 'Unknown'; +} + +function banip() { + $IP = cache_read('banip.php'); + if($IP) { + $ban = false; + foreach($IP as $v) { + if($v['totime'] && $v['totime'] < DT_TIME) continue; + if($v['ip'] == DT_IP) { $ban = true; break; } + if(stripos(DT_UA, $v['ip']) !== false) { $ban = true; break; } + if(preg_match("/^".str_replace('*', '[0-9]{1,3}', $v['ip'])."$/", DT_IP)) { $ban = true; break; } + } + if($ban) message(lang('include->msg_ip_ban')); + } +} + +function banword($WORD, $string, $extend = true, $goback = '') { + $string = stripslashes($string); + foreach($WORD as $v) { + $v[0] = preg_quote($v[0]); + $v[0] = str_replace('/', '\/', $v[0]); + $v[0] = str_replace("\*", ".*", $v[0]); + if($v[2] && $extend) { + if(preg_match("/".$v[0]."/i", $string)) dalert(lang('include->msg_word_ban').($v[2] == 2 ? ':'.$v[0] : ''), $goback); + } else { + if($string == '') break; + if(preg_match("/".$v[0]."/i", $string)) $string = preg_replace("/".$v[0]."/i", $v[1], $string); + } + } + return addslashes($string); +} + +function get_env($type, $par = '') { + switch($type) { + case 'ip': + if(DT_CDN) { + if(isset($_SERVER['X-REAL-IP']) && is_ip($_SERVER['X-REAL-IP'])) return $_SERVER['X-REAL-IP']; + if(isset($_SERVER['HTTP_CF_CONNECTING_IP']) && is_ip($_SERVER['HTTP_CF_CONNECTING_IP'])) return $_SERVER['HTTP_CF_CONNECTING_IP']; + if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { + if(is_ip($_SERVER['HTTP_X_FORWARDED_FOR'])) return $_SERVER['HTTP_X_FORWARDED_FOR']; + $ip = trim(end(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']))); + if(is_ip($ip)) return $ip; + } + } + if(isset($_SERVER['HTTP_CF_CONNECTING_IP']) && is_ip($_SERVER['HTTP_CF_CONNECTING_IP'])) return $_SERVER['HTTP_CF_CONNECTING_IP']; + if(isset($_SERVER['REMOTE_ADDR']) && is_ip($_SERVER['REMOTE_ADDR'])) return $_SERVER['REMOTE_ADDR']; + if(isset($_SERVER['HTTP_CLIENT_IP']) && is_ip($_SERVER['HTTP_CLIENT_IP'])) return $_SERVER['HTTP_CLIENT_IP']; + if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { + if(is_ip($_SERVER['HTTP_X_FORWARDED_FOR'])) return $_SERVER['HTTP_X_FORWARDED_FOR']; + $ip = trim(end(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']))); + if(is_ip($ip)) return $ip; + } + return '0.0.0.0'; + break; + case 'self': + return isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : (isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] : $_SERVER['ORIG_PATH_INFO']); + break; + case 'referer': + return isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; + break; + case 'domain': + return $_SERVER['SERVER_NAME']; + break; + case 'scheme': + if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && in_array($_SERVER['HTTP_X_FORWARDED_PROTO'], array('http', 'https'))) return $_SERVER['HTTP_X_FORWARDED_PROTO'].'://'; + if(isset($_SERVER['HTTP_X_CLIENT_SCHEME']) && in_array($_SERVER['HTTP_X_CLIENT_SCHEME'], array('http', 'https'))) return $_SERVER['HTTP_X_CLIENT_SCHEME'].'://'; + if($_SERVER['SERVER_PORT'] == '443') return 'https://'; + if($_SERVER['SERVER_PORT'] == '80') return 'http://'; + return substr(DT_PATH, 0, 5) == 'https' ? 'https://' : 'http://'; + break; + case 'port': + return ($_SERVER['SERVER_PORT'] == '80' || $_SERVER['SERVER_PORT'] == '443') ? '' : ':'.$_SERVER['SERVER_PORT']; + break; + case 'host': + return preg_match("/^[a-z0-9_\-\.]{4,}$/i", $_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ''; + break; + case 'url': + if(isset($_SERVER['HTTP_X_REWRITE_URL']) && $_SERVER['HTTP_X_REWRITE_URL']) { + $uri = $_SERVER['HTTP_X_REWRITE_URL']; + } else if(isset($_SERVER['HTTP_X_ORIGINAL_URL']) && $_SERVER['HTTP_X_ORIGINAL_URL']) { + $uri = $_SERVER['HTTP_X_ORIGINAL_URL']; + } else if(isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI']) { + $uri = $_SERVER['REQUEST_URI']; + } else { + $uri = $_SERVER['PHP_SELF']; + if(isset($_SERVER['argv'])) { + if(isset($_SERVER['argv'][0])) $uri .= '?'.$_SERVER['argv'][0]; + } else { + $uri .= '?'.$_SERVER['QUERY_STRING']; + } + } + $uri = dhtmlspecialchars($uri); + if(strpos($uri, '.php?') !== false && strpos($uri, '.html') !== false && strpos($uri, '=') === false) $uri = str_replace('.php?', '-htm-', $uri); + return get_env('scheme').$_SERVER['HTTP_HOST'].(strpos($_SERVER['HTTP_HOST'], ':') === false ? get_env('port') : '').$uri; + break; + case 'mobile': + $ua = strtolower(DT_UA); + if(strpos($ua, 'iphone') !== false || strpos($ua, 'ipod') !== false) return 'ios'; + if(strpos($ua, 'android') !== false || strpos($ua, 'adr') !== false) return 'android'; + return ''; + break; + case 'browser': + $ck = get_cookie('mobile'); + if(in_array($ck, array('app', 'b2b', 'web', 'screen'))) return $ck; + $browser = ''; + $ua = strtolower(DT_UA); + if(strpos($ua, 'micromessenger/') !== false) { + $browser = 'weixin'; + if(strpos($ua, 'miniprogram') !== false) { + $browser = 'wxxcx'; + } elseif(strpos($ua, 'wxwork') !== false) { + $browser = 'wxwork'; + } + } else if(strpos($ua, 'tim/') !== false) { + $browser = 'tim'; + } else if(strpos($ua, 'qq/') !== false) { + $browser = 'qq'; + } else if(strpos($ua, 'alipay') !== false) { + $browser = 'alipay'; + } else if(strpos($ua, 'dingtalk') !== false) { + $browser = 'dingtalk'; + } else if(strpos($ua, 'weibo') !== false) { + $browser = 'weibo'; + } + return $browser; + break; + } +} + +function convert($str, $from = 'utf-8', $to = 'gb2312') { + if(!$str) return ''; + $from = strtolower($from); + $to = strtolower($to); + if($from == $to) return $str; + $from = str_replace('gbk', 'gb2312', $from); + $to = str_replace('gbk', 'gb2312', $to); + $from = str_replace('utf8', 'utf-8', $from); + $to = str_replace('utf8', 'utf-8', $to); + if($from == $to) return $str; + $tmp = array(); + if(function_exists('mb_convert_encoding')) { + if(is_array($str)) { + foreach($str as $key => $val) { + $tmp[$key] = mb_convert_encoding($val, $to, $from); + } + return $tmp; + } else { + return mb_convert_encoding($str, $to, $from); + } + } else if(function_exists('iconv')) { + if(is_array($str)) { + foreach($str as $key => $val) { + $tmp[$key] = iconv($from, $to."//IGNORE", $val); + } + return $tmp; + } else { + return iconv($from, $to."//IGNORE", $str); + } + } else { + require_once DT_ROOT.'/include/convert.func.php'; + return dconvert($str, $from, $to); + } +} + +function get_type($item, $cache = 0) { + $types = array(); + if($cache) { + $types = cache_read('type-'.$item.'.php'); + } else { + $result = DB::query("SELECT * FROM ".DT_PRE."type WHERE item='$item' ORDER BY listorder ASC,typeid DESC "); + while($r = DB::fetch_array($result)) { + $types[$r['typeid']] = $r; + } + } + return $types; +} + +function get_cat($catid) { + if(!is_numeric($catid)) return array(); + $catid = intval($catid); + return $catid ? DB::get_one("SELECT * FROM ".DT_PRE."category WHERE catid=$catid") : array(); +} + +function cat_pos($CAT, $str = ' » ', $target = '', $deep = 0, $start = 0) { + global $MODULE; + if(!$CAT) return ''; + $arrparentids = $CAT['arrparentid'].','.$CAT['catid']; + $arrparentid = explode(',', $arrparentids); + $pos = ''; + $target = $target ? ' target="_blank"' : ''; + $CATEGORY = array(); + $result = DB::query("SELECT catid,moduleid,catname,linkurl FROM ".DT_PRE."category WHERE catid IN ($arrparentids)", 'CACHE'); + while($r = DB::fetch_array($result)) { + $CATEGORY[$r['catid']] = $r; + } + if($deep) $i = 1; + $j = 0; + foreach($arrparentid as $catid) { + if(!$catid || !isset($CATEGORY[$catid])) continue; + if($j++ < $start) continue; + if($deep) { + if($i > $deep) continue; + $i++; + } + $pos .= '<a href="'.$MODULE[$CATEGORY[$catid]['moduleid']]['linkurl'].$CATEGORY[$catid]['linkurl'].'"'.$target.'>'.$CATEGORY[$catid]['catname'].'</a>'.$str; + } + $_len = strlen($str); + if($str && substr($pos, -$_len, $_len) === $str) $pos = substr($pos, 0, strlen($pos) - $_len); + return $pos; +} + +function cat_url($catid, $pc = 1) { + global $MODULE; + $catid = intval($catid); + $r = DB::get_one("SELECT moduleid,linkurl FROM ".DT_PRE."category WHERE catid=$catid"); + return $r ? ($pc ? $MODULE[$r['moduleid']]['linkurl'] : $MODULE[$r['moduleid']]['mobile']).$r['linkurl'] : ''; +} + +function get_area($areaid) { + if(!is_numeric($areaid)) return array(); + $areaid = intval($areaid); + return $areaid ? DB::get_one("SELECT * FROM ".DT_PRE."area WHERE areaid=$areaid") : array(); +} + +function area_pos($areaid, $str = ' » ', $deep = 0, $start = 0) { + $areaid = intval($areaid); + if($areaid) { + global $AREA; + } else { + global $L; + return $L['allcity']; + } + $AREA or $AREA = cache_read('area.php'); + $arrparentid = $AREA[$areaid]['arrparentid'] ? explode(',', $AREA[$areaid]['arrparentid']) : array(); + $arrparentid[] = $areaid; + $pos = ''; + if($deep) $i = 1; + $j = 0; + foreach($arrparentid as $areaid) { + if(!$areaid || !isset($AREA[$areaid])) continue; + if($j++ < $start) continue; + if($deep) { + if($i > $deep) continue; + $i++; + } + $pos .= $AREA[$areaid]['areaname'].$str; + } + $_len = strlen($str); + if($str && substr($pos, -$_len, $_len) === $str) $pos = substr($pos, 0, strlen($pos)-$_len); + return $pos; +} + +function get_maincat($catid, $moduleid, $level = -1) { + $catid = intval($catid); + $condition = $catid ? "parentid=$catid" : "moduleid=$moduleid AND parentid=0"; + if($level >= 0) $condition .= " AND level=$level"; + $cat = array(); + $result = DB::query("SELECT catid,catname,child,style,linkurl,item FROM ".DT_PRE."category WHERE $condition ORDER BY listorder,catid ASC", 'CACHE'); + while($r = DB::fetch_array($result)) { + $cat[] = $r; + } + return $cat; +} + +function get_mainarea($areaid) { + $areaid = intval($areaid); + $are = array(); + $result = DB::query("SELECT areaid,areaname FROM ".DT_PRE."area WHERE parentid=$areaid ORDER BY listorder,areaid ASC", 'CACHE'); + while($r = DB::fetch_array($result)) { + $are[] = $r; + } + return $are; +} + +function get_user($value, $key = 'username', $from = 'userid') { + $r = DB::get_one("SELECT `$from` FROM ".DT_PRE."member WHERE `$key`='$value'"); + return $r[$from]; +} + +function check_group($groupid, $groupids) { + if(!$groupids || $groupid == 1) return true; + if($groupid == 4) $groupid = 3; + return in_array($groupid, explode(',', $groupids)); +} + +function tohtml($htmlfile, $module = '', $parameter = '') { + defined('TOHTML') or define('TOHTML', true); + extract($GLOBALS, EXTR_SKIP); + if($parameter) { + parse_str($parameter, $par); + extract($par, EXTR_OVERWRITE); + } + include $module ? DT_ROOT.'/module/'.$module.'/'.$htmlfile.'.htm.php' : DT_ROOT.'/include/'.$htmlfile.'.htm.php'; +} + +function set_style($string, $style = '', $tag = 'span') { + if(preg_match("/^#[0-9a-zA-Z]{6}$/", $style)) $style = 'color:'.$style; + return $style ? '<'.$tag.' style="'.$style.'">'.$string.'</'.$tag.'>' : $string; +} + +function crypt_action($action) { + return md5(md5($action.DT_KEY.DT_IP)); +} + +function captcha($captcha, $enable = 1, $return = false) { + global $DT, $session; + if($enable) { + if($DT['captcha_cn']) { + if(strlen($captcha) < 4) { + $msg = lang('include->captcha_missed'); + return $return ? $msg : message($msg); + } + } else { + if(!preg_match("/^[0-9a-z]{4,}$/i", $captcha)) { + $msg = lang('include->captcha_missed'); + return $return ? $msg : message($msg); + } + } + if(!is_object($session)) $session = new dsession(); + if(!isset($_SESSION['captchastr'])) { + $msg = lang('include->captcha_expired'); + return $return ? $msg : message($msg); + } + if(decrypt($_SESSION['captchastr'], DT_KEY.'CPC') != strtoupper($captcha)) { + $msg = lang('include->captcha_error'); + return $return ? $msg : message($msg); + } + unset($_SESSION['captchastr']); + } else { + return ''; + } +} + +function question($answer, $enable = 1, $return = false) { + global $session; + if($enable) { + if(!$answer) { + $msg = lang('include->answer_missed'); + return $return ? $msg : message($msg); + } + $answer = stripslashes($answer); + if(!is_object($session)) $session = new dsession(); + if(!isset($_SESSION['answerstr'])) { + $msg = lang('include->question_expired'); + return $return ? $msg : message($msg); + } + if(decrypt($_SESSION['answerstr'], DT_KEY.'ANS') != $answer) { + $msg = lang('include->answer_error'); + return $return ? $msg : message($msg); + } + unset($_SESSION['answerstr']); + } else { + return ''; + } +} + +function pages($total, $page = 1, $perpage = 20, $demo = '', $step = 3) { + global $DT_URL, $DT, $L; + if($total <= $perpage) return ''; + $items = $total; + $total = ceil($total/$perpage); + if($page < 1 || $page > $total) $page = 1; + if($demo) { + $demo_url = str_replace('%7Bdestoon_page%7D', '{destoon_page}', $demo); + $home_url = str_replace('{destoon_page}', '1', $demo_url); + } else { + if(defined('DT_REWRITE') && $DT['rewrite'] && $_SERVER["SCRIPT_NAME"] && strpos($DT_URL, '?') === false) { + $demo_url = $_SERVER["SCRIPT_NAME"]; + $demo_url = str_replace('//', '/', $demo_url);//Fix Nginx + $mark = false; + if(substr($demo_url, -4) == '.php') { + if(strpos($_SERVER['QUERY_STRING'], '.html') === false) { + $qstr = ''; + if($_SERVER['QUERY_STRING']) { + if(substr($_SERVER['QUERY_STRING'], -5) == '.html') { + $qstr = '-'.substr($_SERVER['QUERY_STRING'], 0, -5); + } else { + parse_str($_SERVER['QUERY_STRING'], $qs); + foreach($qs as $k=>$v) { + $qstr .= '-'.$k.'-'.rawurlencode($v); + } + } + } + $demo_url = substr($demo_url, 0, -4).'-htm-page-{destoon_page}'.$qstr.'.html'; + } else { + $demo_url = substr($demo_url, 0, -4).'-htm-'.$_SERVER['QUERY_STRING']; + $mark = true; + } + } else { + $mark = true; + } + if($mark) { + if(strpos($demo_url, '%') === false) $demo_url = rawurlencode($demo_url); + $demo_url = str_replace(array('%2F', '%3A'), array('/', ':'), $demo_url); + if(strpos($demo_url, '-page-') !== false) { + $demo_url = preg_replace("/page-([0-9]+)/", 'page-{destoon_page}', $demo_url); + } else { + $demo_url = str_replace('.html', '-page-{destoon_page}.html', $demo_url); + } + } + $home_url = str_replace('-page-{destoon_page}', '-page-1', $demo_url); + } else { + $DT_URL = str_replace('&', '&', $DT_URL); + $demo_url = $home_url = preg_replace("/(.*)([&?]page=[0-9]*)(.*)/i", "\\1\\3", $DT_URL); + $s = strpos($demo_url, '?') === false ? '?' : '&'; + $demo_url = $demo_url.$s.'page={des'.'toon_page}'; + if(defined('DT_ADMIN') && strpos($demo_url, 'sum=') === false) $demo_url = str_replace('page=', 'sum='.$items.'&page=', $demo_url); + } + } + $pages = ''; + include DT_ROOT.'/api/pages.'.((!$DT['pages_mode'] && $page < 100) ? 'default' : 'sample').'.php'; + return $pages; +} + +function listpages($CAT, $total, $page = 1, $perpage = 20, $step = 2) { + global $DT, $MOD, $L; + if($total <= $perpage) return ''; + $items = $total; + $total = ceil($total/$perpage); + if($page < 1 || $page > $total) $page = 1; + $home_url = $MOD['linkurl'].$CAT['linkurl']; + $demo_url = $MOD['linkurl'].listurl($CAT, '{destoon_page}'); + $pages = ''; + include DT_ROOT.'/api/pages.'.((!$DT['pages_mode'] && $page < 100) ? 'default' : 'sample').'.php'; + return $pages; +} + +function linkurl($linkurl) { + if($linkurl == '/') return DT_PATH; + return strpos($linkurl, '://') === false ? DT_PATH.$linkurl : $linkurl; +} + +function imgurl($url = '', $width = '') { + if($url) { + return strpos($url, '://') === false ? DT_PATH.'file/upload/'.$url : $url; + } else { + return DT_SKIN.'image/nopic'.$width.'.gif'; + } +} + +function userurl($username, $qstring = '', $domain = '') { + global $CFG, $DT, $MODULE; + $URL = ''; + $subdomain = 0; + if($CFG['com_domain']) $subdomain = substr($CFG['com_domain'], 0, 1) == '.' ? 1 : 2; + if($username) { + if($subdomain || $domain) { + $scheme = $DT['com_https'] ? 'https://' : 'http://'; + $URL = $domain ? $scheme.$domain.'/' : ($subdomain == 1 ? $scheme.($DT['com_www'] ? 'www.' : '').$username.$CFG['com_domain'].'/' : $scheme.$CFG['com_domain'].'/'.$username.'/'); + if($qstring) { + parse_str($qstring, $q); + if(isset($q['file'])) { + $URL .= $CFG['com_dir'] ? $q['file'].'/' : 'company/'.$q['file'].'/'; + unset($q['file']); + } + if($q) { + if($DT['rewrite']) { + foreach($q as $k=>$v) { + $v = rawurlencode($v); + $URL .= $k.'-'.$v.'-'; + } + $URL = substr($URL, 0, -1).'.html'; + } else { + $URL .= 'index.php?'; + $i = 0; + foreach($q as $k=>$v) { + $v = rawurlencode($v); + $URL .= ($i++ == 0 ? '' : '&').$k.'='.$v; + } + } + } + } + } else if($DT['rewrite']) { + $URL = DT_PATH.'com/'.$username.'/'; + if($qstring) { + parse_str($qstring, $q); + if(isset($q['file'])) { + $URL .= $CFG['com_dir'] ? $q['file'].'/' : 'company/'.$q['file'].'/'; + unset($q['file']); + } + if($q) { + foreach($q as $k=>$v) { + $v = rawurlencode($v); + $URL .= $k.'-'.$v.'-'; + } + $URL = substr($URL, 0, -1).'.html'; + } + } + } else { + $URL = DT_PATH.'index.php?homepage='.$username; + if($qstring) $URL = $URL.'&'.$qstring; + } + } else { + $URL = $MODULE[4]['linkurl'].'guest.php'; + } + return $URL; +} + +function useravatar($var, $size = '', $isusername = 1, $real = 0) { + in_array($size, array('large', 'small')) or $size = 'middle'; + if($real) { + $ext = 'x48.jpg'; + if($size == 'large') $ext = '.jpg'; + if($size == 'small') $ext = 'x20.jpg'; + $file = DT_ROOT.'/api/avatar/default'.$ext; + $md5 = md5($var); + if($isusername) { + $img = DT_ROOT.'/file/avatar/'.substr($md5, 0, 2).'/'.substr($md5, 2, 2).'/_'.$var.$ext; + if(is_file($img) && check_name($var)) $file = $img; + } else { + $img = DT_ROOT.'/file/avatar/'.substr($md5, 0, 2).'/'.substr($md5, 2, 2).'/'.$var.$ext; + if(is_file($img)) $file = $img; + } + if($real == 1) { + $url = str_replace(DT_ROOT.'/', DT_PATH, $file); + if(strpos($url, '/default') === false) { + $remote = file_get(DT_ROOT.'/file/avatar/remote.html'); + if(strlen($remote) > 10) $url = str_replace(DT_ROOT.'/file/', $remote, $file); + } + return $url; + } + return strpos($file, '/api/') === false ? $file : ''; + } else { + $name = $isusername ? 'username' : 'userid'; + return DT_PATH.'api/avatar/show.php?'.$name.'='.$var.'&size='.$size; + } +} + +function userinfo($username, $cache = 1) { + global $dc, $CFG; + if(!check_name($username)) return array(); + $user = array(); + if($cache && $CFG['db_expires']) { + $user = $dc->get('user-'.$username); + if($user) return $user; + } + $r1 = DB::get_one("SELECT * FROM ".DT_PRE."member WHERE username='$username'"); + if($r1) { + $userid = $r1['userid']; + $r2 = DB::get_one("SELECT * FROM ".DT_PRE."member_misc WHERE userid=$userid"); + $r3 = DB::get_one("SELECT * FROM ".DT_PRE."company WHERE userid=$userid"); + $user = array_merge($r1, $r2, $r3); + } + if($cache && $CFG['db_expires'] && $user) $dc->set('user-'.$username, $user, $CFG['db_expires']); + return $user; +} + +function userclean($username) { + global $dc, $CFG; + $user = array(); + if($CFG['db_expires']) $dc->rm('user-'.$username); +} + +function listurl($CAT, $page = 0) { + global $DT, $MOD, $L; + include DT_ROOT.'/api/url.inc.php'; + $catid = $CAT['catid']; + $file_ext = $DT['file_ext']; + $index = $DT['index']; + $catdir = $CAT['catdir']; + $catname = file_vname($CAT['catname']); + $prefix = $MOD['htm_list_prefix']; + $urlid = $MOD['list_html'] ? $MOD['htm_list_urlid'] : $MOD['php_list_urlid']; + $ext = $MOD['list_html'] ? 'htm' : 'php'; + isset($urls[$ext]['list'][$urlid]) or $urlid = 0; + $url = $urls[$ext]['list'][$urlid]; + $url = $page ? $url['page'] : $url['index']; + eval("\$listurl = \"$url\";"); + if(substr($listurl, 0, 1) == '/') $listurl = substr($listurl, 1); + return $listurl; +} + +function itemurl($item, $page = 0) { + global $DT, $MOD, $L; + if(isset($item['islink']) && $item['islink']) return $item['linkurl']; + if($MOD['show_html'] && $item['filepath']) { + if($page === 0) return $item['filepath']; + $ext = file_ext($item['filepath']); + return str_replace('.'.$ext, '_'.$page.'.'.$ext, $item['filepath']); + } + include DT_ROOT.'/api/url.inc.php'; + $file_ext = $DT['file_ext']; + $index = $DT['index']; + $itemid = $item['itemid']; + $title = file_vname($item['title']); + $addtime = $item['addtime']; + $catid = $item['catid']; + $year = date('Y', $addtime); + $month = date('m', $addtime); + $day = date('d', $addtime); + $prefix = $MOD['htm_item_prefix']; + $urlid = $MOD['show_html'] ? $MOD['htm_item_urlid'] : $MOD['php_item_urlid']; + $ext = $MOD['show_html'] ? 'htm' : 'php'; + $alloc = dalloc($itemid); + $url = $urls[$ext]['item'][$urlid]; + $url = $page ? $url['page'] : $url['index']; + if(strpos($url, 'cat') !== false && $catid) { + if(isset($item['gid'])) { + $catid = $item['gid']; + $cate = get_group($catid); + $catdir = $cate['filepath']; + $catname = $cate['title']; + } else { + $cate = get_cat($catid); + $catdir = $cate['catdir']; + $catname = $cate['catname']; + } + } + if(!isset($catdir)) $catdir = 'none'; + eval("\$itemurl = \"$url\";"); + if(substr($itemurl, 0, 1) == '/') $itemurl = substr($itemurl, 1); + return $itemurl; +} + +function moburl($url, $mid = 0) { + global $MODULE; + if(strpos($url, DT_MOB) !== false) return $url; + if(strpos($url, DT_PATH.'com/') !== false) return $url; + if(strpos($url, DT_PATH.'index.php?homepage=') !== false) return $url; + if(strpos($url, DT_PATH) !== false) return str_replace(DT_PATH, DT_MOB, $url); + if($mid) return str_replace($MODULE[$mid]['linkurl'], $MODULE[$mid]['mobile'], $url); + foreach($MODULE as $m) { + if(strpos($url, $m['linkurl']) !== false) return str_replace($m['linkurl'], $m['mobile'], $url); + } + return $url; +} + +function rewrite($url, $decode = 0) { + if($decode) { + if(strpos($url, '-htm-') === false) return $url; + if(substr($url, -5) == '.html') $url = substr($url, 0, -5); + $t1 = explode('-htm-', $url); + $t2 = explode('-', $t1[1]); + $rc = count($t2); + $par = ''; + for($i = 0; $i < $rc; $i++) { + $par .= '&'.$t2[$i].'='.$t2[++$i]; + } + $url = $t1[0].'.php?'.substr($par, 1); + } else { + if(!RE_WRITE) return $url; + if(RE_WRITE == 1 && strpos($url, 'search.php') !== false) return $url; + if(strpos($url, '.php?') === false || strpos($url, '=') === false) return $url; + $url = str_replace(array('+', '-'), array('%20', '%20'), $url); + $url = str_replace(array('.php?', '&', '='), array('-htm-', '-', '-'), $url).'.html'; + } + return $url; +} + +function timetodate($time = 0, $type = 6) { + if(!$time) $time = DT_TIME; + $types = array('Y-m-d', 'Y', 'm-d', 'Y-m-d', 'm-d H:i', 'Y-m-d H:i', 'Y-m-d H:i:s'); + if(isset($types[$type])) $type = $types[$type]; + if($time > 2147212800) { + if(class_exists('DateTime')) { + $D = new DateTime('@'.($time - 3600 * intval(str_replace('Etc/GMT', '', $GLOBALS['CFG']['timezone'])))); + return $D->format($type); + } + } + return date($type, $time); +} + +function datetotime($date) { + $time = strtotime($date); + if($time === false) { + if(class_exists('DateTime')) { + $D = new DateTime($date); + $time = $D->format('U'); + } + } + return $time; +} + +function log_write($message, $type = 'php', $force = 0) { + global $_username, $log_id; + if(!DT_DEBUG && !$force) return; + if($log_id) { + $log_id++; + } else { + $log_id = 1; + } + $user = $_username ? $_username : 'guest'; + check_name($type) or $type = 'php'; + $log = "<?php exit;?>\n<$type>\n"; + $log .= "\t<time>".timetodate()."</time>\n"; + $log .= "\t<ip>".DT_IP."</ip>\n"; + $log .= "\t<user>".$user."</user>\n"; + $log .= "\t<php>".$_SERVER['SCRIPT_NAME']."</php>\n"; + $log .= "\t<querystring>".str_replace('&', '&', $_SERVER['QUERY_STRING'])."</querystring>\n"; + $log .= "\t<message>".(is_array($message) ? var_export($message, true) : $message)."</message>\n"; + $log .= "</$type>"; + file_put(DT_ROOT.'/file/log/'.timetodate(0, 'Ym/d').'/'.$type.'-'.timetodate(0, 'Y.m.d H.i.s').'-'.$log_id.'.php', $log); +} + +function load($file) { + $ext = file_ext($file); + if($ext == 'css') { + echo '<link rel="stylesheet" type="text/css" href="'.DT_SKIN.$file.'?v='.(DT_DEBUG ? DT_TIME : DT_REFRESH).'"/>'; + } else if($ext == 'js') { + echo '<script type="text/javascript" src="'.DT_STATIC.'file/script/'.$file.'?v='.(DT_DEBUG ? DT_TIME : DT_REFRESH).'"></script>'; + } else if($ext == 'htm') { + $file = str_replace('ad_m', 'ad_t6_m', $file); + if(is_file(DT_CACHE.'/htm/'.$file)) { + $content = file_get(DT_CACHE.'/htm/'.$file); + if(substr($content, 0, 4) == '<!--') $content = substr($content, 17); + echo $content; + } else { + echo ''; + } + } else if($ext == 'lang') { + $file = str_replace('.lang', '.inc.php', $file); + return DT_ROOT.'/lang/'.DT_LANG.'/'.$file; + } else if($ext == 'inc' || $ext == 'func' || $ext == 'class') { + return DT_ROOT.'/include/'.$file.'.php'; + } +} + +function ad($id, $cid = 0, $kw = '', $tid = 0) { + global $cityid; + if($tid) { + if($kw) { + $file = 'ad_t'.$tid.'_m'.$id.'_k'.urlencode($kw); + } else if($cid) { + $file = 'ad_t'.$tid.'_m'.$id.'_c'.$cid; + } else { + $file = 'ad_t'.$tid.'_m'.$id; + } + $a3 = 'ad_'.$id.'_d'.$tid.'.htm'; + } else { + $file = 'ad_'.$id; + $a3 = 'ad_'.$id.'_d0.htm'; + } + $a1 = $file.'_'.$cityid.'.htm'; + if(is_file(DT_CACHE.'/htm/'.$a1)) return load($a1); + $a2 = $file.'_0.htm'; + if(is_file(DT_CACHE.'/htm/'.$a2)) return load($a2); + if(is_file(DT_CACHE.'/htm/'.$a3)) return load($a3); +} + +function lang($str, $arr = array()) { + if(strpos($str, '->') !== false) { + global $DT; + $t = explode('->', $str); + include load($t[0].'.lang'); + $str = $L[$t[1]]; + } + if($arr) { + foreach($arr as $k=>$v) { + $str = str_replace('{V'.$k.'}', $v, $str); + } + } + return $str; +} + +function check_name($username) { + if(strpos($username, '__') !== false || strpos($username, '--') !== false) return false; + return preg_match("/^[a-z0-9]{1}[a-z0-9_\-]{0,}[a-z0-9]{1}$/", $username); +} + +function check_post() { + if(strtoupper($_SERVER['REQUEST_METHOD']) != 'POST') return false; + return check_referer(); +} + +function check_referer() { + global $DT_REF, $CFG, $DT; + if($DT['check_referer']) { + if(!$DT_REF) return false; + $R = parse_url($DT_REF); + if($CFG['cookie_domain'] && strpos($R['host'], $CFG['cookie_domain']) !== false) return true; + if($CFG['com_domain'] && strpos($R['host'], $CFG['com_domain']) !== false) return true; + if($DT['safe_domain']) { + $tmp = explode('|', $DT['safe_domain']); + foreach($tmp as $v) { + if(strpos($R['host'], $v) !== false) return true; + } + } + $U = parse_url(DT_PATH); + if(strpos($R['host'], str_replace('www.', '.', $U['host'])) !== false) return true; + return false; + } + return true; +} + +function is_robot($ua = '') { + return preg_match("/(spider|bot|crawl|slurp|lycos|robozilla)/i", $ua ? $ua : DT_UA); +} + +function is_url($url) { + return preg_match("/^(http|https)\:\/\/[A-Za-z0-9_\-\/\.\#\&\?\;\,\=\%\:]{4,}$/", $url); +} + +function is_ip($ip) { + return preg_match("/^([0-9]{1,3}\.){3}[0-9]{1,3}$/", $ip); +} + +function is_mobile($mobile) { + return preg_match("/^1[3|4|5|6|7|8|9]{1}[0-9]{9}$/", $mobile); +} + +function is_md5($password) { + return preg_match("/^[a-f0-9]{32}$/", $password); +} + +function is_openid($openid) { + return preg_match("/^[0-9a-zA-Z\-_]{10,}$/", $openid); +} + +function is_touch() { + $ck = get_cookie('mobile'); + if($ck == 'pc') return 0; + if($ck == 'touch' || $ck == 'screen') return 1; + return is_mob(); +} + +function is_mob($par = '') { + return preg_match("/(iPhone|iPad|iPod|Android|Phone|mobile)/i", ($par ? $par : DT_UA)) ? 1 : 0; +} + +function is_founder($userid) { + global $CFG; + $userid = intval($userid); + if($userid < 1) return false; + if(strpos($CFG['founderid'], ',') === false) { + return $userid == $CFG['founderid'] ? true : false; + } else { + return strpos(','.$CFG['founderid'].',', ','.$userid.',') === false ? false : true; + } +} + +function debug() { + global $db, $debug_starttime; + $mtime = explode(' ', microtime()); + $s = number_format(($mtime[1] + $mtime[0] - $debug_starttime), 3); + echo 'Processed in '.$s.' second(s), '.$db->querynum.' queries'; + if(function_exists('memory_get_usage')) echo ', Memory '.round(memory_get_usage()/1024/1024, 2).' M'; +} + +function dhttp($status, $exit = 1) { + switch($status) { + case '301': @header("HTTP/1.1 301 Moved Permanently"); break; + case '403': @header("HTTP/1.1 403 Forbidden"); break; + case '404': @header("HTTP/1.1 404 Not Found"); break; + case '503': @header("HTTP/1.1 503 Service Unavailable"); break; + } + if($exit) exit; +} + +function dcurl($url, $par = '') { + if(function_exists('curl_init')) { + $cur = curl_init($url); + if($par) { + curl_setopt($cur, CURLOPT_POST, 1); + curl_setopt($cur, CURLOPT_POSTFIELDS, $par); + } + //curl_setopt($cur, CURLOPT_REFERER, DT_PATH); + curl_setopt($cur, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); + curl_setopt($cur, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt($cur, CURLOPT_HEADER, 0); + curl_setopt($cur, CURLOPT_TIMEOUT, 30); + curl_setopt($cur, CURLOPT_SSL_VERIFYPEER, 0); + curl_setopt($cur, CURLOPT_RETURNTRANSFER, 1); + $rec = curl_exec($cur); + curl_close($cur); + if($rec) return $rec; + if(substr($url, 0, 8) == 'https://') return dcurl('http://'.substr($url, 8), $par); + return ''; + } + return file_get($par ? $url.'?'.$par : $url); +} + +function d301($url) { + dhttp(301, 0); + dheader($url); +} +?> \ No newline at end of file diff --git a/include/hook.inc.php b/include/hook.inc.php new file mode 100644 index 0000000..b1bbfec --- /dev/null +++ b/include/hook.inc.php @@ -0,0 +1,8 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +@extract($GLOBALS, EXTR_SKIP); +?> \ No newline at end of file diff --git a/include/image.class.php b/include/image.class.php new file mode 100644 index 0000000..45a8011 --- /dev/null +++ b/include/image.class.php @@ -0,0 +1,294 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class image { + var $g_img; + var $g_w; + var $g_h; + var $img; + var $save_name; + var $g_type; + var $pos; + var $w_img; + var $transition; + var $jpeg_quality; + var $water_margin; + var $text; + var $text_size; + var $text_font; + var $text_color; + var $text_angle = 0; + var $t_x = 0; + var $t_y = 0; + var $make = true; + + function __construct($g_img) { + global $DT; + $this->g_img = $g_img; + $info = getimagesize($this->g_img); + if(!$info) { + $this->make = false; + return false; + } + $this->g_type = $info[2]; + if($this->g_type == 1 && (!function_exists('imagegif') || !function_exists('imagecreatefromgif'))) { + $this->make = false; + return false; + } + $this->img = $this->createimage($this->g_type, $this->g_img); + if(!$this->img) { + $this->make = false; + return false; + } + $this->g_w = $info[0]; + $this->g_h = $info[1]; + if($this->g_type == 1 || $this->g_type == 3) { + $tmp_im = imagecreatetruecolor($this->g_w, $this->g_h); + imagefill($tmp_im, 0, 0, imagecolorallocate($tmp_im, 255, 255, 255)); + imagecopyresampled($tmp_im, $this->img, 0, 0, 0, 0, $this->g_w, $this->g_h, $this->g_w, $this->g_h); + $this->img = $tmp_im; + unset($tmp_im); + } + $this->pos = $DT['water_pos'] ? $DT['water_pos'] : 0; + $this->w_img = DT_ROOT.'/file/image/'.($DT['water_mark'] ? $DT['water_mark'] : 'watermark.png'); + $this->transition = $DT['water_transition'] ? $DT['water_transition'] : 65; + $this->jpeg_quality = $DT['water_jpeg_quality'] ? $DT['water_jpeg_quality'] : 80; + $this->text = $DT['water_text'] ? $DT['water_text'] : 'www.destoon.com'; + $this->text_size = $DT['water_fontsize'] ? $DT['water_fontsize'] : 20; + $this->text_font = DT_ROOT.'/file/font/'.($DT['water_font'] ? $DT['water_font'] : 'simhei.ttf'); + $this->text_color = $DT['water_fontcolor'] ? $DT['water_fontcolor'] : '#000000'; + $this->water_margin = $DT['water_margin'] ? $DT['water_margin'] : 10; + } + + function image($g_img) { + $this->__construct($g_img); + } + + function waterimage($save_name = '') { + global $DT; + is_file($this->w_img) or $this->make = false; + if($DT['water_min_wh']) { + $min_wh = $DT['water_min_wh']; + if($this->g_w < $min_wh || $this->g_h < $min_wh) { + $this->make = false; + } + } + if(!$this->make) return false; + $this->save_name = $save_name ? $save_name : $this->g_img; + $info = getimagesize($this->w_img); + $w_img = $this->createimage($info[2], $this->w_img); + $w_w = $info[0]; + $w_h = $info[1]; + $temp_w_im = $this->get_pos('image', $w_w, $w_h); + $w_im_x = $temp_w_im["dest_x"]; + $w_im_y = $temp_w_im["dest_y"]; + if($info[2] == 1) { + imagecopymerge($this->img, $w_img, $w_im_x, $w_im_y, 0, 0, $w_w, $w_h, $this->transition); + } else { + $b_img = imagecreatetruecolor($this->g_w, $this->g_h); + imagecopy($b_img, $this->img, 0, 0, 0, 0, $this->g_w, $this->g_h); + imagecopy($b_img, $w_img, $w_im_x, $w_im_y, 0, 0, $w_w, $w_h); + $this->img = $b_img; + } + imagedestroy($w_img); + $this->save(); + return true; + } + + function watertext($save_name = '') { + global $DT; + is_file($this->text_font) or $this->make = false; + if($DT['water_min_wh']) { + $min_wh = $DT['water_min_wh']; + if($this->g_w < $min_wh || $this->g_h < $min_wh) $this->make = false; + } + if(!$this->make) return false; + $this->save_name = $save_name ? $save_name : $this->g_img; + $temp_text = $this->get_pos('text'); + $text_x = $temp_text['dest_x']; + $text_y = $temp_text['dest_y']; + if(preg_match("/([a-f0-9][a-f0-9])([a-f0-9][a-f0-9])([a-f0-9][a-f0-9])/i", $this->text_color, $color)) { + $red = hexdec($color[1]); + $green = hexdec($color[2]); + $blue = hexdec($color[3]); + $text_color = imagecolorallocate($this->img, $red, $green, $blue); + } else { + $text_color = imagecolorallocate($this->img, 255, 255, 255); + } + imagettftext($this->img, $this->text_size, $this->text_angle, $text_x, $text_y, $text_color, $this->text_font, $this->text); + $this->save(); + return true; + } + + function thumb($w = 0, $h = 0, $t = 0, $save_name = '') { + if(!$this->make) return false; + if($w == $this->g_w && $h == $this->g_h) { + if($save_name && $this->g_img != $save_name) file_copy($this->g_img, $save_name); + return true; + } + $this->save_name = $save_name ? $save_name : $this->g_img; + if($t ? $this->resize($w, $h) : $this->cut($w, $h)) $this->save(); + return true; + } + + function save() { + switch($this->g_type) { + case '1': imagegif($this->img, $this->save_name); break; + case '3': imagepng($this->img, $this->save_name); break; + default : imagejpeg($this->img, $this->save_name, $this->jpeg_quality); break; + } + } + + function cut($w = 0, $h = 0) { + if(!$w || !$h) return false; + $_w = intval($h*$this->g_w/$this->g_h); + $_h = intval($w*$this->g_h/$this->g_w); + $im = imagecreatetruecolor($w, $h); + if($w >= $this->g_w || $h >= $this->g_h) { + imagefill($im, 0, 0, imagecolorallocate($im, 255, 255, 255)); + $x = $w >= $this->g_w ? -intval(($this->g_w - $w)/2) : 0; + $y = $h >= $this->g_h ? -intval(($this->g_h - $h)/2) : 0; + imagecopy($im, $this->img, $x, $y, 0, 0, $this->g_w, $this->g_h); + } else if($_w >= $w) { + $tb = imagecreatetruecolor($_w, $h); + $x = intval(($_w - $w)/2); + imagecopyresampled($tb, $this->img, 0, 0, 0, 0, $_w, $h, $this->g_w, $this->g_h); + imagecopy($im, $tb, 0, 0, $x, 0, $w, $h); + } else if($_w < $w) { + $tb = imagecreatetruecolor($w, $_h); + $y = intval(($_h - $h)/2); + imagecopyresampled($tb, $this->img, 0, 0, 0, 0, $w, $_h, $this->g_w, $this->g_h); + imagecopy($im, $tb, 0, 0, 0, $y, $w, $h); + } else { + return false; + } + $this->img = $im; + unset($im); + if(isset($tb)) unset($tb); + return true; + } + + function resize($w = 0, $h = 0) { + if(!$w || !$h) return false; + $_w = intval($h*$this->g_w/$this->g_h); + $_h = intval($w*$this->g_h/$this->g_w); + $im = imagecreatetruecolor($w, $h); + imagefill($im, 0, 0, imagecolorallocate($im, 255, 255, 255)); + if($this->g_w < $w) { + if($this->g_h <= $h) { + $x = intval(($w - $this->g_w)/2); + $y = intval(($h - $this->g_h)/2); + imagecopy($im, $this->img, $x, $y, 0, 0, $this->g_w, $this->g_h); + } else if($this->g_h > $h) { + $tb = imagecreatetruecolor($_w, $h); + imagecopyresampled($tb, $this->img, 0, 0, 0, 0, $_w, $h, $this->g_w, $this->g_h); + $x = intval(($w - $_w)/2); + imagecopy($im, $tb, $x, 0, 0, 0, $_w, $h); + } + } else if($this->g_w > $w) { + if($this->g_h <= $h) { + $tb = imagecreatetruecolor($w, $_h); + imagecopyresampled($tb, $this->img, 0, 0, 0, 0, $w, $_h, $this->g_w, $this->g_h); + $y = intval(($h - $_h)/2); + imagecopy($im, $tb, 0, $y, 0, 0, $w, $_h); + } else if($this->g_h > $h) { + if($_w >= $w) { + $tb = imagecreatetruecolor($w, $_h); + imagecopyresampled($tb, $this->img, 0, 0, 0, 0, $w, $_h, $this->g_w, $this->g_h); + $y = intval(($h - $_h)/2); + imagecopy($im, $tb, 0, $y, 0, 0, $w, $_h); + } else { + $tb = imagecreatetruecolor($_w, $h); + imagecopyresampled($tb, $this->img, 0, 0, 0, 0, $_w, $h, $this->g_w, $this->g_h); + $x = intval(($w - $_w)/2); + imagecopy($im, $tb, $x, 0, 0, 0, $_w, $h); + } + } + } else if($this->g_w = $w) { + if($this->g_h <= $h) { + $y = intval(($h - $this->g_h)/2); + imagecopy($im, $this->img, 0, $y, 0, 0, $this->g_w, $this->g_h); + } else if($this->g_h > $h) { + $tb = imagecreatetruecolor($_w, $h); + imagecopyresampled($tb, $this->img, 0, 0, 0, 0, $_w, $h, $this->g_w, $this->g_h); + $x = intval(($w - $_w)/2); + imagecopy($im, $tb, $x, 0, 0, 0, $_w, $h); + } + } else { + return false; + } + $this->img = $im; + unset($im); + if(isset($tb)) unset($tb); + return true; + } + + function createimage($type, $img_name) { + if($type == 1) { + return imagecreatefromgif($img_name); + } else if($type == 2) { + return imagecreatefromjpeg($img_name); + } else if($type == 3) { + return imagecreatefrompng($img_name); + } + return false; + } + + function get_pos($type, $p_w = 0, $p_h = 0) { + if($type == 'text') { + $line = count(explode("\n",$this->text)); + $temp = imagettfbbox($this->text_size, $this->text_angle, $this->text_font, $this->text); + $p_w = $temp[2] - $temp[6]; + $p_h = $line*($temp[3] - $temp[7]); + unset($temp); + } + if(($this->g_w < $p_w) || ($this->g_h < $p_h)) return false; + switch($this->pos) { + case 1: + $p_x = $this->water_margin; + $p_y = ($type == 'image' ? $this->water_margin : $p_h) + $this->water_margin; + break; + case 2: + $p_x = ($this->g_w - $p_w) / 2; + $p_y = ($type == 'image' ? 0 : $p_h) + $this->water_margin; + break; + case 3: + $p_x = $this->g_w - $p_w - $this->water_margin; + $p_y = ($type == 'image' ? 0 : $p_h) + $this->water_margin; + break; + case 4: + $p_x = $this->water_margin; + $p_y = ($this->g_h - $p_h) / 2; + break; + case 5: + $p_x = ($this->g_w - $p_w) / 2; + $p_y = ($this->g_h - $p_h) / 2; + break; + case 6: + $p_x = $this->g_w - $p_w - $this->water_margin; + $p_y = ($this->g_h - $p_h) / 2; + break; + case 7: + $p_x = $this->water_margin; + $p_y = $this->g_h - $p_h - $this->water_margin; + break; + case 8: + $p_x = ($this->g_w - $p_w) / 2; + $p_y = $this->g_h - $p_h - $this->water_margin; + break; + case 9: + $p_x = $this->g_w - $p_w - $this->water_margin; + $p_y = $this->g_h - $p_h - $this->water_margin; + break; + default: + $p_x = mt_rand($this->water_margin, ($this->g_w - $p_w - $this->water_margin)); + $p_y = mt_rand($this->water_margin, ($this->g_h - $p_h - $this->water_margin)); + break; + } + return array('dest_x'=>$p_x, 'dest_y'=>$p_y); + } +} +?> \ No newline at end of file diff --git a/include/index.htm.php b/include/index.htm.php new file mode 100644 index 0000000..a49373c --- /dev/null +++ b/include/index.htm.php @@ -0,0 +1,45 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +if($DT['city']) { + $DT['index_html'] = 0; + $C = cache_read('module-2.php'); + $M = $C['linkurl']; +} else { + $M = $MODULE[2]['linkurl']; +} +$data = ''; +$data .= 'var DTPath = "'.DT_PATH.'";'; +$data .= 'var DTMob = "'.DT_MOB.'";'; +$data .= 'var SKPath = "'.DT_SKIN.'";'; +$data .= 'var MEPath = "'.$M.'";'; +$data .= 'var DTEditor = "'.DT_EDITOR.'";'; +$data .= 'var CKDomain = "'.$CFG['cookie_domain'].'";'; +$data .= 'var CKPath = "'.$CFG['cookie_path'].'";'; +$data .= 'var CKPrex = "'.$CFG['cookie_pre'].'";'; +$data .= 'console.clear();console.log("%cPowered By DESTOON%chttps://www.destoon.com/", "color:#FFFFFF;font-size:14px;background:#FF7418;padding:2px 12px;border-radius:10px;", "font-size:14px;padding:2px 12px;");'; +file_put(DT_ROOT.'/file/script/config.js', $data); +$filename = $CFG['com_dir'] ? DT_ROOT.'/'.$DT['index'].'.'.$DT['file_ext'] : DT_CACHE.'/index.inc.html'; +if(!$DT['index_html']) { + if(is_file($filename)) unlink($filename); + return false; +} +if(!$db->linked) return false; +$destoon_task = "moduleid=1&html=index"; +$AREA = cache_read('area.php'); +if($EXT['mobile_enable']) $head_mobile = $EXT['mobile_url']; +$index = 1; +$seo_title = $DT['seo_title']; +$head_keywords = $DT['seo_keywords']; +$head_description = $DT['seo_description']; +$CSS = array('index'); +ob_start(); +include template('index'); +$data = ob_get_contents(); +ob_clean(); +file_put($filename, $data); +return true; +?> \ No newline at end of file diff --git a/include/index.html b/include/index.html new file mode 100644 index 0000000..c1e1f00 --- /dev/null +++ b/include/index.html @@ -0,0 +1 @@ +<meta http-equiv="refresh" content="0;url=../"> \ No newline at end of file diff --git a/include/ip.class.php b/include/ip.class.php new file mode 100644 index 0000000..00df48d --- /dev/null +++ b/include/ip.class.php @@ -0,0 +1,169 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class ip { + var $ip; + var $ipfile; + + function __construct($ip) { + $this->ip = $ip; + } + + function ip($ip) { + $this->__construct($ip); + } + + function area() { + foreach(array('wry', 'tiny') as $d) { + $ipfile = DT_ROOT.'/file/ipdata/'.$d.'.dat'; + if(is_file($ipfile)) { + $this->ipfile = $ipfile; + return $this->$d(); + } + } + return 'Unknown'; + } + + function wry() { + if(!$fd = @fopen($this->ipfile, 'rb')) return 'Invalid IP data file'; + $ip = explode('.', $this->ip); + $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3]; + if(!($DataBegin = fread($fd, 4)) || !($DataEnd = fread($fd, 4)) ) return; + @$ipbegin = implode('', unpack('L', $DataBegin)); + if($ipbegin < 0) $ipbegin += pow(2, 32); + @$ipend = implode('', unpack('L', $DataEnd)); + if($ipend < 0) $ipend += pow(2, 32); + $ipAllNum = ($ipend - $ipbegin) / 7 + 1; + $BeginNum = $ip2num = $ip1num = 0; + $ipAddr1 = $ipAddr2 = ''; + $EndNum = $ipAllNum; + while($ip1num > $ipNum || $ip2num < $ipNum) { + $Middle= intval(($EndNum + $BeginNum) / 2); + fseek($fd, $ipbegin + 7 * $Middle); + $ipData1 = fread($fd, 4); + if(strlen($ipData1) < 4) { + fclose($fd); + return 'System Error'; + } + $ip1num = implode('', unpack('L', $ipData1)); + if($ip1num < 0) $ip1num += pow(2, 32); + if($ip1num > $ipNum) { + $EndNum = $Middle; + continue; + } + $DataSeek = fread($fd, 3); + if(strlen($DataSeek) < 3) { + fclose($fd); + return 'System Error'; + } + $DataSeek = implode('', unpack('L', $DataSeek.chr(0))); + fseek($fd, $DataSeek); + $ipData2 = fread($fd, 4); + if(strlen($ipData2) < 4) { + fclose($fd); + return 'System Error'; + } + $ip2num = implode('', unpack('L', $ipData2)); + if($ip2num < 0) $ip2num += pow(2, 32); + if($ip2num < $ipNum) { + if($Middle == $BeginNum) { + fclose($fd); + return 'Unknown'; + } + $BeginNum = $Middle; + } + } + $ipFlag = fread($fd, 1); + if($ipFlag == chr(1)) { + $ipSeek = fread($fd, 3); + if(strlen($ipSeek) < 3) { + fclose($fd); + return 'System Error'; + } + $ipSeek = implode('', unpack('L', $ipSeek.chr(0))); + fseek($fd, $ipSeek); + $ipFlag = fread($fd, 1); + } + if($ipFlag == chr(2)) { + $AddrSeek = fread($fd, 3); + if(strlen($AddrSeek) < 3) { + fclose($fd); + return 'System Error'; + } + $ipFlag = fread($fd, 1); + if($ipFlag == chr(2)) { + $AddrSeek2 = fread($fd, 3); + if(strlen($AddrSeek2) < 3) { + fclose($fd); + return 'System Error'; + } + $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0))); + fseek($fd, $AddrSeek2); + } else { + fseek($fd, -1, SEEK_CUR); + } + while(($char = fread($fd, 1)) != chr(0)) + $ipAddr2 .= $char; + $AddrSeek = implode('', unpack('L', $AddrSeek.chr(0))); + fseek($fd, $AddrSeek); + while(($char = fread($fd, 1)) != chr(0)) + $ipAddr1 .= $char; + } else { + fseek($fd, -1, SEEK_CUR); + while(($char = fread($fd, 1)) != chr(0)) + $ipAddr1 .= $char; + $ipFlag = fread($fd, 1); + if($ipFlag == chr(2)) { + $AddrSeek2 = fread($fd, 3); + if(strlen($AddrSeek2) < 3) { + fclose($fd); + return 'System Error'; + } + $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0))); + fseek($fd, $AddrSeek2); + } else { + fseek($fd, -1, SEEK_CUR); + } + while(($char = fread($fd, 1)) != chr(0)) + $ipAddr2 .= $char; + } + fclose($fd); + if(preg_match('/http/i', $ipAddr2)) $ipAddr2 = ''; + $ipaddr = "$ipAddr1 $ipAddr2"; + $ipaddr = preg_replace('/CZ88\.NET/is', '', $ipaddr); + $ipaddr = preg_replace('/^\s*/is', '', $ipaddr); + $ipaddr = preg_replace('/\s*$/is', '', $ipaddr); + if(preg_match('/http/i', $ipaddr) || $ipaddr == '') $ipaddr = 'Unknown'; + return convert($ipaddr, 'GBK', DT_CHARSET); + } + + function tiny() { + static $fp = NULL, $offset = array(), $index = NULL; + $ipdot = explode('.', $this->ip); + $ip = pack('N', ip2long($this->ip)); + $ipdot[0] = (int)$ipdot[0]; + $ipdot[1] = (int)$ipdot[1]; + if($fp === NULL && $fp = @fopen($this->ipfile, 'rb')) { + $offset = unpack('Nlen', fread($fp, 4)); + $index = fread($fp, $offset['len'] - 4); + } else if($fp == false) { + return 'Invalid IP data file'; + } + $length = $offset['len'] - 1028; + $start = unpack('Vlen', $index[$ipdot[0] * 4].$index[$ipdot[0] * 4 + 1].$index[$ipdot[0] * 4 + 2].$index[$ipdot[0] * 4 + 3]); + for($start = $start['len'] * 8 + 1024; $start < $length; $start += 8) { + if($index[$start] . $index[$start + 1] . $index[$start + 2] . $index[$start + 3] >= $ip) { + $index_offset = unpack('Vlen', $index[$start + 4] . $index[$start + 5] . $index[$start + 6] . "\x0"); + $index_length = unpack('Clen', $index[$start + 7]); + break; + } + } + fseek($fp, $offset['len'] + $index_offset['len'] - 1024); + if($index_length['len']) return convert(fread($fp, $index_length['len']), 'GBK', DT_CHARSET); + return 'Unknown'; + } +} +?> \ No newline at end of file diff --git a/include/mail.func.php b/include/mail.func.php new file mode 100644 index 0000000..8bd9e50 --- /dev/null +++ b/include/mail.func.php @@ -0,0 +1,160 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +function dmail($mail_to, $mail_subject, $mail_body, $mail_from = '', $mail_sign = true) { + global $DT; + if($DT['mail_type'] == 'close') return 'close'; + if($DT['mail_sign'] && $mail_sign) $mail_body .= $DT['mail_sign']; + if($DT['mail_type'] == 'sc') { + $url = 'http://sendcloud.sohu.com/webapi/mail.send.json'; + $par = 'api_user='.$DT['smtp_user'].'&api_key='.$DT['smtp_pass'].'&from='.$DT['mail_sender'].'&fromname='.$DT['mail_name'].'&to='.$mail_to.'&subject='.$mail_subject.'&html='.$mail_body; + $rec = dcurl($url, $par); + $arr = json_decode($rec, true); + if($arr['message'] == 'success') return 'SUCCESS'; + $errmsg = ''; + foreach($arr['errors'] as $v) { + $errmsg .= $v."\n"; + } + $errmsg = trim($errmsg); + if(defined('TESTMAIL')) dalert('Error:'.$errmsg); + log_write($errmsg, 'sendcloud'); + return $errmsg; + } else { + $sendmail_from = $mail_from ? $mail_from : $DT['mail_sender']; + $mail_from = "=?".strtolower(DT_CHARSET)."?B?".base64_encode($DT['mail_name'] ? $DT['mail_name'] : $DT['sitename'])."?= <".$sendmail_from.">"; + $mail_subject = stripslashes($mail_subject); + $mail_subject = str_replace("\r", '', str_replace("\n", '', $mail_subject)); + $mail_subject = "=?".strtolower(DT_CHARSET)."?B?".base64_encode($mail_subject)."?="; + $mail_body = stripslashes($mail_body); + $mail_body = chunk_split(base64_encode(str_replace("\r\n.", " \r\n..", str_replace("\n", "\r\n", str_replace("\r", "\n", str_replace("\r\n", "\n", str_replace("\n\r", "\r", $mail_body))))))); + $mail_dlmt = $DT['mail_delimiter'] == 1 ? "\r\n" : ($DT['mail_delimiter'] == 2 ? "\n" : "\r"); + $headers = ''; + $headers .= "From: $mail_from".$mail_dlmt; + $headers .= "X-Priority: 3".$mail_dlmt; + $headers .= "X-Mailer: Destoon".$mail_dlmt; + $headers .= "MIME-Version: 1.0".$mail_dlmt; + $headers .= "Content-type: text/html; charset=".DT_CHARSET.$mail_dlmt; + $headers .= "Content-Transfer-Encoding: base64".$mail_dlmt; + } + if($DT['mail_type'] == 'smtp') { + $host = $DT['smtp_host'].':'.$DT['smtp_port'].' '; + if(!$fp = fsockopen($DT['smtp_host'], $DT['smtp_port'], $errno, $errstr, 30)) { + $errmsg = $host.'can not connect to the SMTP server'; + if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); + log_write($errmsg, 'smtp'); + return $errmsg; + } + stream_set_blocking($fp, true); + $RE = fgets($fp, 512); + if(substr($RE, 0, 3) != '220') { + $errmsg = $host.$RE; + if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); + log_write($errmsg, 'smtp'); + return $errmsg; + } + fputs($fp, ($DT['smtp_auth'] ? 'EHLO' : 'HELO')." Destoon\r\n"); + $RE = fgets($fp, 512); + if(substr($RE, 0, 3) != 220 && substr($RE, 0, 3) != 250) { + $errmsg = $host.'HELO/EHLO - '.$RE; + if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); + log_write($errmsg, 'smtp'); + return $errmsg; + } + while(1) { + if(substr($RE, 3, 1) != '-' || empty($RE)) break; + $RE = fgets($fp, 512); + } + if($DT['smtp_auth']) { + fputs($fp, "AUTH LOGIN\r\n"); + $RE = fgets($fp, 512); + if(substr($RE, 0, 3) != 334) { + $errmsg = $host.'AUTH LOGIN - '.$RE; + if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); + log_write($errmsg, 'smtp'); + return $errmsg; + } + fputs($fp, base64_encode($DT['smtp_user'])."\r\n"); + $RE = fgets($fp, 512); + if(substr($RE, 0, 3) != 334) { + $errmsg = $host.'USERNAME - '.$RE; + if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); + log_write($errmsg, 'smtp'); + return $errmsg; + } + fputs($fp, base64_encode($DT['smtp_pass'])."\r\n"); + $RE = fgets($fp, 512); + if(substr($RE, 0, 3) != 235) { + $errmsg = $host.'PASSWORD - '.$RE; + if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); + log_write($errmsg, 'smtp'); + return $errmsg; + } + $mail_from = strpos($DT['smtp_user'], '@') !== false ? $DT['smtp_user'] : $DT['mail_sender']; + } else { + $mail_from = $DT['mail_sender']; + } + fputs($fp, "MAIL FROM: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $mail_from).">\r\n"); + $RE = fgets($fp, 512); + if(substr($RE, 0, 3) != 250) { + fputs($fp, "MAIL FROM: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $mail_from).">\r\n"); + $RE = fgets($fp, 512); + if(substr($RE, 0, 3) != 250) { + $errmsg = $host.'MAIL FROM - '.$RE; + if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); + log_write($errmsg, 'smtp'); + return $errmsg; + } + } + foreach(explode(',', $mail_to) as $touser) { + $touser = trim($touser); + if($touser) { + fputs($fp, "RCPT TO: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $touser).">\r\n"); + $RE = fgets($fp, 512); + if(substr($RE, 0, 3) != 250) { + fputs($fp, "RCPT TO: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $touser).">\r\n"); + $RE = fgets($fp, 512); + $errmsg = $host.'RCPT TO - '.$RE; + if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); + log_write($errmsg, 'smtp'); + return $errmsg; + } + } + } + fputs($fp, "DATA\r\n"); + $RE = fgets($fp, 512); + if(substr($RE, 0, 3) != 354) { + $errmsg = $host.'DATA - '.$RE; + if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); + log_write($errmsg, 'smtp'); + return $errmsg; + } + list($msec, $sec) = explode(' ', microtime()); + $headers .= "Message-ID: <".date('YmdHis', $sec).".".($msec*1000000).".".substr($mail_from, strpos($mail_from,'@')).">".$mail_dlmt; + fputs($fp, "Date: ".date('r')."\r\n"); + fputs($fp, "To: ".$mail_to."\r\n"); + fputs($fp, "Subject: ".$mail_subject."\r\n"); + fputs($fp, $headers."\r\n"); + fputs($fp, "\r\n\r\n"); + fputs($fp, "$mail_body\r\n.\r\n"); + $RE = fgets($fp, 512); + if(substr($RE, 0, 3) != 250) { + $errmsg = $host.'END - '.$RE; + if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); + log_write($errmsg, 'smtp'); + return $errmsg; + } + fputs($fp, "QUIT\r\n"); + return 'SUCCESS'; + } else { + if($DT['mail_type'] != 'mail') { + ini_set('SMTP', $DT['smtp_host']); + ini_set('smtp_port', $DT['smtp_port']); + ini_set('sendmail_from', $sendmail_from); + } + return @mail($mail_to, $mail_subject, $mail_body, $headers) ? 'SUCCESS' : ''; + } +} +?> \ No newline at end of file diff --git a/include/mobile.func.php b/include/mobile.func.php new file mode 100644 index 0000000..392ee75 --- /dev/null +++ b/include/mobile.func.php @@ -0,0 +1,111 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +function mobile_pages($total, $page = 1, $perpage = 20, $demo = '') { + global $DT_URL, $DT, $L; + if($total <= $perpage) return ''; + $items = $total; + $total = ceil($total/$perpage); + if($page < 1 || $page > $total) $page = 1; + if($demo) { + $demo_url = str_replace('%7Bdestoon_page%7D', '{destoon_page}', $demo); + $home_url = str_replace('{destoon_page}', '1', $demo_url); + } else { + if(defined('DT_REWRITE') && $DT['rewrite'] && $_SERVER["SCRIPT_NAME"] && strpos($DT_URL, '?') === false) { + $demo_url = $_SERVER["SCRIPT_NAME"]; + $demo_url = str_replace('//', '/', $demo_url);//Fix Nginx + $mark = false; + if(substr($demo_url, -4) == '.php') { + if(strpos($_SERVER['QUERY_STRING'], '.html') === false) { + $qstr = ''; + if($_SERVER['QUERY_STRING']) { + if(substr($_SERVER['QUERY_STRING'], -5) == '.html') { + $qstr = '-'.substr($_SERVER['QUERY_STRING'], 0, -5); + } else { + parse_str($_SERVER['QUERY_STRING'], $qs); + foreach($qs as $k=>$v) { + $qstr .= '-'.$k.'-'.rawurlencode($v); + } + } + } + $demo_url = substr($demo_url, 0, -4).'-htm-page-{destoon_page}'.$qstr.'.html'; + } else { + $demo_url = substr($demo_url, 0, -4).'-htm-'.$_SERVER['QUERY_STRING']; + $mark = true; + } + } else { + $mark = true; + } + if($mark) { + if(strpos($demo_url, '%') === false) $demo_url = rawurlencode($demo_url); + $demo_url = str_replace(array('%2F', '%3A'), array('/', ':'), $demo_url); + if(strpos($demo_url, '-page-') !== false) { + $demo_url = preg_replace("/page-([0-9]+)/", 'page-{destoon_page}', $demo_url); + } else { + $demo_url = str_replace('.html', '-page-{destoon_page}.html', $demo_url); + } + } + $home_url = str_replace('-page-{destoon_page}', '-page-1', $demo_url); + } else { + $DT_URL = str_replace('&', '&', $DT_URL); + $demo_url = $home_url = preg_replace("/(.*)([&?]page=[0-9]*)(.*)/i", "\\1\\3", $DT_URL); + $s = strpos($demo_url, '?') === false ? '?' : '&'; + $demo_url = $demo_url.$s.'page={des'.'toon_page}'; + if(defined('DT_ADMIN') && strpos($demo_url, 'sum=') === false) $demo_url = str_replace('page=', 'sum='.$items.'&page=', $demo_url); + } + } + $pages = ''; + $_page = $page <= 1 ? $total : ($page - 1); + $url = str_replace('{destoon_page}', $_page, $demo_url); + $pages .= '<a href="'.$url.'" data-transition="none" id="page-prev">« '.$L['prev_page'].'</a> '; + if(strpos($demo_url, 'javascript') === false) { + $pages .= '<a href="javascript:GoPage('.$total.', '.$items.', \''.$demo_url.'\');" id="page-goto"><b>'.$page.'</b>/'.$total.'</a> '; + } else { + $pages .= '<a href="'.$url.'" id="page-goto"><b>'.$page.'</b>/'.$total.'</a> '; + } + $_page = $page >= $total ? 1 : $page + 1; + $url = str_replace('{destoon_page}', $_page, $demo_url); + $pages .= '<a href="'.$url.'" data-transition="none" id="page-next">'.$L['next_page'].' »</a> '; + return $pages; +} + +function m301($moduleid, $catid = 0, $itemid = 0, $page = 1) { + global $MODULE; + $url = ''; + if($itemid) { + if($moduleid > 4) { + $item = DB::get_one("SELECT * FROM ".get_table($moduleid)." WHERE itemid=$itemid"); + if($item && $item['status'] > 2) { + $url = $MODULE[$moduleid]['mobile'].itemurl($item, $page > 1 ? $page : ''); + } + } + } else if($catid) { + $CAT = get_cat($catid); + $url = $MODULE[$moduleid]['mobile'].listurl($CAT, $page > 1 ? $page : ''); + } else { + $url = $MODULE[$moduleid]['mobile']; + } + if($moduleid == 4) { + global $username, $DT_URL; + if(check_name($username)) $url = userurl($username, cutstr($DT_URL, $username.'&', '.html')); + } + if($url) d301($url); +} + +function input_trim($wd) { + return trim(urldecode(str_replace('%E2%80%86', '', urlencode($wd)))); +} + +function is_pc() { + if(DT_DEBUG || is_robot()) return false; + $UA = strtoupper(DT_UA); + if(strpos($UA, 'WINDOWS NT') !== false) { + if(strpos($UA, 'MICROMESSENGER/') !== false) return false;//WX + return true; + } + return false; +} +?> \ No newline at end of file diff --git a/include/mobile.htm.php b/include/mobile.htm.php new file mode 100644 index 0000000..33a2ede --- /dev/null +++ b/include/mobile.htm.php @@ -0,0 +1,26 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +require_once DT_ROOT.'/include/mobile.func.php'; +include load('mobile.lang'); +$back_link = $pages = ''; +$areaid = isset($areaid) ? intval($areaid) : 0; +$site_name = $EXT['mobile_sitename'] ? $EXT['mobile_sitename'] : $DT['sitename'].$L['mobile_version']; +$DT_PC = $GLOBALS['DT_PC'] = 0; +$MURL = $MODULE[2]['linkurl']; +$_cart = 0; +$share_icon = 0; +$sns_app = 0; +$MOB_MODULE = array(); +foreach($MODULE as $v) { + if($v['moduleid'] > 3 && $v['ismenu'] && !$v['islink']) $MOB_MODULE[] = $v; +} +$js_pageid = random(4, 'a-Z').substr(DT_TIME, -4); +$js_load = ''; +$js_pull = 1; +$js_item = $js_album = 0; +$foot = 'channel'; +?> \ No newline at end of file diff --git a/include/mobile.inc.php b/include/mobile.inc.php new file mode 100644 index 0000000..1e6d51c --- /dev/null +++ b/include/mobile.inc.php @@ -0,0 +1,32 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +require DT_ROOT.'/include/mobile.func.php'; +if(is_pc() && strpos($DT_URL, 'device.php') === false) dheader(DT_PATH.'api/mobile.php?action=device&uri='.urlencode($head_pc)); +include load('mobile.lang'); +$EXT['mobile_enable'] or message($L['msg_mobile_close']); +if($DT_BOT) $EXT['mobile_ajax'] = 0; +$dmobile = get_cookie('mobile'); +if($dmobile == '' || $dmobile == 'pc') set_cookie('mobile', 'touch'); +$back_link = $pages = ''; +$areaid = isset($areaid) ? intval($areaid) : 0; +$site_name = $EXT['mobile_sitename'] ? $EXT['mobile_sitename'] : $DT['sitename'].$L['mobile_version']; +$DT_PC = 0; +$MURL = $MODULE[2]['linkurl']; +if($DT_MBS == 'screen' && $_username) $MURL = DT_PATH.'api/mobile.php?action=sync&auth='.encrypt($_username.'|'.$DT_IP.'|'.$DT_TIME, DT_KEY.'SCREEN').'&goto='; +$_cart = ($DT['max_cart'] && $_userid) ? intval(get_cookie('cart')) : 0; +$share_icon = ($DT_MBS == 'weixin' || $DT_MBS == 'qq') ? DT_PATH.'apple-touch-icon-precomposed.png' : ''; +$sns_app = in_array($DT_MBS, array('weixin', 'wxxcx', 'wxwork', 'qq', 'tim', 'alipay', 'dingtalk', 'weibo')) ? 1 : 0; +$MOB_MODULE = array(); +foreach($MODULE as $v) { + if($v['moduleid'] > 3 && $v['ismenu'] && !$v['islink']) $MOB_MODULE[] = $v; +} +$js_pageid = random(4, 'a-Z').substr(DT_TIME, -6); +$js_load = ''; +$js_pull = in_array($action, array('add', 'edit')) ? 0 : 1; +$js_item = $js_album = 0; +$foot = 'channel'; +?> \ No newline at end of file diff --git a/include/module.func.php b/include/module.func.php new file mode 100644 index 0000000..d1973a9 --- /dev/null +++ b/include/module.func.php @@ -0,0 +1,397 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +function keyword($search, $username, $kw, $items, $moduleid) { + if($search) { + if(strlen($kw) < 3 || strlen($kw) > 30 || strpos($kw, ' ') !== false || strpos($kw, '%') !== false) return; + $kw = addslashes($kw); + if($items > 1) { + $r = DB::get_one("SELECT * FROM ".DT_PRE."keyword WHERE moduleid=$moduleid AND word='$kw' ORDER BY itemid ASC"); + if($r) { + $items = $items > $r['items'] ? $items : $r['items']; + $month_search = date('Y-m', $r['updatetime']) == date('Y-m', DT_TIME) ? 'month_search+1' : '1'; + $week_search = date('W', $r['updatetime']) == date('W', DT_TIME) ? 'week_search+1' : '1'; + $today_search = date('Y-m-d', $r['updatetime']) == date('Y-m-d', DT_TIME) ? 'today_search+1' : '1'; + DB::query("UPDATE ".DT_PRE."keyword SET items='$items',updatetime='".DT_TIME."',total_search=total_search+1,month_search=$month_search,week_search=$week_search,today_search=$today_search WHERE itemid=$r[itemid]"); + DB::query("DELETE FROM ".DT_PRE."keyword WHERE moduleid=$moduleid AND word='$kw' AND itemid>$r[itemid]"); + } else { + $letter = trim(gb2py($kw)); + $status = $search == 2 ? 2 : 3; + if(strlen($letter) < 2) $status = 2; + DB::query("INSERT INTO ".DT_PRE."keyword (moduleid,word,keyword,letter,items,updatetime,total_search,month_search,week_search,today_search,status) VALUES ('$moduleid','$kw','$kw','$letter','$items','".DT_TIME."','1','1','1','1','$status')"); + } + } + if(check_name($username)) { + DB::query("INSERT INTO ".DT_PRE."keyword_record (moduleid,keyword,username,items,addtime) VALUES ('$moduleid','$kw','$username','$items','".DT_TIME."')"); + } + } +} + +function money_add($username, $amount) { + if($username && $amount) { + if($amount < 0) { + $r = DB::get_one("SELECT money FROM ".DT_PRE."member WHERE username='$username'"); + if($r['money'] < abs($amount)) { + set_cookie('auth', ''); + dhttp(403, 0); + dalert('HTTP 403 Forbidden - Bad Data', DT_PATH); + } + } + DB::query("UPDATE ".DT_PRE."member SET money=money+{$amount} WHERE username='$username'"); + } +} + +function money_record($username, $amount, $bank, $editor, $reason, $note = '') { + if($username && $amount) { + $r = DB::get_one("SELECT money FROM ".DT_PRE."member WHERE username='$username'"); + $balance = $r['money']; + $reason = addslashes(stripslashes(strip_tags($reason))); + $note = addslashes(stripslashes(strip_tags($note))); + DB::query("INSERT INTO ".DT_PRE."finance_record (username,bank,amount,balance,addtime,reason,note,editor) VALUES ('$username','$bank','$amount','$balance','".DT_TIME."','$reason','$note','$editor')"); + } +} + +function credit_add($username, $amount) { + if($username && $amount) DB::query("UPDATE ".DT_PRE."member SET credit=credit+{$amount} WHERE username='$username'"); +} + +function credit_record($username, $amount, $editor, $reason, $note = '') { + global $DT; + if($DT['log_credit'] && $username && $amount) { + $r = DB::get_one("SELECT credit FROM ".DT_PRE."member WHERE username='$username'"); + $balance = $r['credit']; + $reason = addslashes(stripslashes(strip_tags($reason))); + $note = addslashes(stripslashes(strip_tags($note))); + DB::query("INSERT INTO ".DT_PRE."finance_credit (username,amount,balance,addtime,reason,note,editor) VALUES ('$username','$amount','$balance','".DT_TIME."','$reason','$note','$editor')"); + } +} + +function sms_add($username, $amount) { + if($username && $amount) DB::query("UPDATE ".DT_PRE."member SET sms=sms+{$amount} WHERE username='$username'"); +} + +function sms_record($username, $amount, $editor, $reason, $note = '') { + if($username && $amount) { + $r = DB::get_one("SELECT sms FROM ".DT_PRE."member WHERE username='$username'"); + $balance = $r['sms']; + $reason = addslashes(stripslashes(strip_tags($reason))); + $note = addslashes(stripslashes(strip_tags($note))); + DB::query("INSERT INTO ".DT_PRE."finance_sms (username,amount,balance,addtime,reason,note,editor) VALUES ('$username','$amount','$balance','".DT_TIME."','$reason','$note','$editor')"); + } +} + +function secondstodate($seconds) { + include load('include.lang'); + $date = ''; + if($seconds > 0) { + $t = floor($seconds/86400); + if($t) { + $date .= $t.$L['mod_day']; + $seconds = $seconds%86400; + } + $t = floor($seconds/3600); + if($t) { + $date .= $t.$L['mod_hour']; + $seconds = $seconds%3600; + } + $t = floor($seconds/60); + if($t) { + $date .= $t.$L['mod_minute']; + $seconds = $seconds%60; + } + if($seconds) { + $date .= $seconds.$L['mod_second']; + } + } + return $date; +} + +function get_intro($content, $length = 0) { + if($length) { + $intro = trim(strip_tags($content)); + $intro = preg_replace("/&([a-z]{1,});/", '', $intro); + $intro = str_replace(array("\r", "\n", "\t", ' '), array('', '', '', ''), $intro); + return dsubstr($intro, $length); + } else { + return ''; + } +} + +function get_module_setting($moduleid, $key = '') { + $M = cache_read('module-'.$moduleid.'.php'); + return $key ? $M[$key] : $M; +} + +function get_company_setting($userid, $key = '', $cache = '') { + if($key) { + $r = DB::get_one("SELECT * FROM ".DT_PRE."company_setting WHERE userid=$userid AND item_key='$key'", $cache); + return $r ? $r['item_value'] : ''; + } else { + $setting = array(); + $query = DB::query("SELECT * FROM ".DT_PRE."company_setting WHERE userid=$userid", $cache); + while($r = DB::fetch_array($query)) { + $setting[$r['item_key']] = $r['item_value']; + } + return $setting; + } +} + +function anti_spam($string) { + global $DT; + if($DT['anti_spam'] && preg_match("/^[a-z0-9_@\-\s\/\.\,\(\)\+]+$/i", $string)) { + return '<img src="'.DT_PATH.'api/image.png.php?auth='.encrypt($string, DT_KEY.'SPAM').'" align="absmddle"/>'; + } else { + return $string; + } +} + +function hide_info($str, $type = 'username') { + if($type == 'ip') { + if(is_ip($str)) { + $tmp = explode('.', $str); + return $tmp[0].'.'.$tmp[1].'.*.*'; + } + } elseif($type == 'username') { + if(check_name($str)) { + $len = strlen($str); + $tmp = ''; + for($i = 0; $i < $len; $i++) { + $tmp .= ($i == 0 || $i == $len - 1) ? $str[$i] : '*'; + } + return $tmp; + } + } else if($type == 'mobile') { + if(is_mobile($str)) return substr($str, 0, 3).'****'.substr($str, -4); + } + return $str; +} + +function check_pay($moduleid, $itemid) { + global $_username, $MOD; + $condition = "mid=$moduleid AND tid=$itemid AND username='$_username'"; + if($MOD['fee_period']) $condition .= " AND paytime>".(DT_TIME - $MOD['fee_period']*60); + return DB::get_one("SELECT itemid FROM ".DT_PRE."finance_pay WHERE $condition"); +} + +function check_sign($string, $sign) { + return $sign == crypt_sign($string); +} + +function crypt_sign($string) { + return strtoupper(md5(md5(DT_IP.$string.DT_KEY.'SIGN'))); +} + +function cache_hits($moduleid, $itemid) { + if(@$fp = fopen(DT_CACHE.'/hits-'.$moduleid.'.php', 'a')) { + flock($fp, LOCK_EX); + fwrite($fp, $itemid.' '); + flock($fp, LOCK_UN); + fclose($fp); + } +} + +function update_hits($moduleid, $table) { + $hits = trim(file_get(DT_CACHE.'/hits-'.$moduleid.'.php')); + file_put(DT_CACHE.'/hits-'.$moduleid.'.php', ' '); + file_put(DT_CACHE.'/hits-'.$moduleid.'.dat', DT_TIME); + if($hits) { + $tmp = array_count_values(explode(' ', $hits)); + $arr = array(); + foreach($tmp as $k=>$v) { + $arr[$v] .= $k ? ','.$k : ''; + } + $id = $moduleid == 4 ? 'userid' : 'itemid'; + foreach($arr as $k=>$v) { + DB::query("UPDATE LOW_PRIORITY {$table} SET `hits`=`hits`+".$k." WHERE `$id` IN (0".$v.")", 'UNBUFFERED'); + } + } +} + +function gender($gender, $type = 0) { + global $L; + if($type) return $gender == 1 ? $L['man'] : $L['woman']; + return $gender == 1 ? $L['sir'] : $L['lady']; +} + +function online($user, $type = 0) { + $r = DB::get_one("SELECT online FROM ".DT_PRE."online WHERE `".($type ? 'username' : 'userid')."`='$user'"); + if($r) return $r['online'] ? 1 : -1; + return 0; +} + +function fix_link($url) { + $url = trim($url); + if(strlen($url) < 10) return ''; + return strpos($url, '://') === false ? 'http://'.$url : $url; +} + +function vip_year($fromtime) { + return $fromtime ? intval((DT_TIME - $fromtime)/86400/365) + 1 : 1; +} + +function get_albums($item) { + $thumbs = array(); + if($item['thumb']) $thumbs[] = $item['thumb']; + if(isset($item['thumb1']) && $item['thumb1'] && strpos($item['thumbs'], $item['thumb1']) === false) $thumbs[] = $item['thumb1']; + if(isset($item['thumb2']) && $item['thumb2'] && strpos($item['thumbs'], $item['thumb2']) === false) $thumbs[] = $item['thumb2']; + foreach(explode('|', $item['thumbs']) as $v) { + if($v) $thumbs[] = $v; + } + $i = count($thumbs); + while($i++ < 5) { + $thumbs[] = DT_SKIN.'image/nopic.thumb.png';; + } + return $thumbs; +} + +function get_thumbs($item = array()) { + $thumbs = array(); + if($item) { + if($item['thumb']) $thumbs[] = $item['thumb']; + if(isset($item['thumb1']) && $item['thumb1'] && strpos($item['thumbs'], $item['thumb1']) === false) $thumbs[] = $item['thumb1']; + if(isset($item['thumb2']) && $item['thumb2'] && strpos($item['thumbs'], $item['thumb2']) === false) $thumbs[] = $item['thumb2']; + foreach(explode('|', $item['thumbs']) as $v) { + if($v) $thumbs[] = $v; + } + } + return $thumbs; +} + +function xml_linkurl($linkurl, $modurl = '') { + if(strpos($linkurl, '://') === false) $linkurl = $modurl.$linkurl; + return str_replace('&', '&', $linkurl); +} + +function sort_type($TYPE) { + $p = $c = array(); + foreach($TYPE as $v) { + if($v['parentid']) { + $c[$v['parentid']][] = $v; + } else { + $p[] = $v; + } + } + return array($p, $c); +} + +function update_user($member, $item, $fileds = array('groupid','vip','validated','company','areaid','truename','telephone','mobile','address','qq','wx','ali','skype')) { + $update = ''; + foreach($fileds as $v) { + if(isset($item[$v]) && $item[$v] != $member[$v]) $update .= ",$v='".addslashes($member[$v])."'"; + } + if(isset($item['email']) && $item['email'] != $member['mail']) $update .= ",email='".addslashes($member['mail'])."'"; + return $update; +} + +function highlight($str) { + return '<span class="highlight">'.$str.'</span>'; +} + +function parse_face($str) { + if(preg_match_all("/\:([0-9]{3,})\)/i", $str, $m)) { + foreach($m[0] as $u) { + $f = substr($u, 1, -1).'.png'; + if(is_file(DT_ROOT.'/file/face/'.$f)) $str = str_replace($u, '<img src="'.DT_STATIC.'file/face/'.$f.'" width="24"/>', $str); + } + } + return $str; +} + +function get_face() { + $faces = array(); + $face = glob(DT_ROOT.'/file/face/*.png'); + if($face) { + foreach($face as $k=>$v) { + $faces[$k] = basename($v, '.png'); + } + } + return $faces; +} + +function get_uid() { + DB::query("INSERT INTO ".DT_PRE."uid () VALUES ()"); + return DB::insert_id(); +} + +function url2video($u) { + $d = cutstr($u, '://', '/'); + $h = substr($u, 0, 5) == 'https' ? 'https://' : 'http://'; + switch($d) { + case 'v.youku.com': + if(strpos($u, '/embed/') !== false) return $u; + $p = cutstr($u, 'id_', '.html'); + if($p) return $h.'player.youku.com/embed/'.$p; + break; + case 'player.youku.com': + if(strpos($u, '/embed/') !== false) return $u; + $p = cutstr($u, 'sid/', '/'); + if($p) return $h.'player.youku.com/embed/'.$p; + $p = cutstr($u, 'embed/', strpos($u, "'") !== false ? "'" : '"'); + if($p) return $h.'player.youku.com/embed/'.$p; + break; + case 'imgcache.qq.com': + case 'static.v.qq.com': + case 'v.qq.com': + if(strpos($u, '/iframe/') !== false) return $u; + if(strpos($u, 'page/') !== false && strpos($u, '.html') !== false) { + $p = cutstr($u, 'page/', '.html'); + if($p) return $h.'v.qq.com/txp/iframe/player.html?vid='.$p; + } + if(strpos($u, 'vid=') !== false && strpos($u, '&') !== false) { + $p = cutstr($u, 'vid=', '&'); + if($p) return $h.'v.qq.com/iframe/player.html?vid='.$p.'&tiny=0&auto=0'; + } + break; + case 'www.iqiyi.com': + if(strpos($u, 'shareplay.html') !== false) return $u; + $c = dcurl($u); + if($c) { + $p1 = cutstr($c, 'data-player-videoid="', '"'); + $p2 = cutstr($c, 'data-player-tvid="', '"'); + if($p1 && $p2) return $h.'m.iqiyi.com/shareplay.html?vid='.$p1.'&tvid='.$p2; + } + break; + case 'open.iqiyi.com': + if(strpos($u, 'shareplay.html') !== false) return $u; + $p1 = cutstr($u, 'vid=', '&'); + $p2 = cutstr($u, 'tvId=', '&'); + if($p1 && $p2) return $h.'m.iqiyi.com/shareplay.html?vid='.$p1.'&tvid='.$p2; + break; + case 'player.video.qiyi.com': + if(strpos($u, 'shareplay.html') !== false) return $u; + $p1 = cutstr($u, 'player.video.qiyi.com/', '/'); + $p2 = cutstr($u, 'tvId=', '-'); + if($p1 && $p2) return $h.'m.iqiyi.com/shareplay.html?vid='.$p1.'&tvid='.$p2; + break; + case 'www.bilibili.com': + if(strpos($u, 'player.html') !== false) return $u; + $p = cutstr($u, '/video/', strpos($u, '?') === false ? '/' : '?'); + if($p) return $h.'player.bilibili.com/player.html?bvid='.$p; + break; + case 'www.acfun.cn': + if(strpos($u, '/player/') !== false) return $u; + $p = cutstr($u, '/v/', strpos($u, '?') === false ? '/' : '?'); + if($p) return $h.'www.acfun.cn/player/'.$p; + break; + case 'www.youtube.com': + if(strpos($u, '/embed/') !== false) return $u; + $p = cutstr($u, 'v=', '&'); + if($p) return $h.'www.youtube.com/embed/'.$p; + break; + case 'www.huya.com': + if(strpos($u, '/iframe/') !== false) return $u; + $p = cutstr($u, 'www.huya.com/', '/'); + if($p) return $h.'liveshare.huya.com/iframe/'.$p; + break; + case 'www.douyu.com': + if(strpos($u, '/share/') !== false) return $u; + $p = cutstr($u, 'www.douyu.com/', '/'); + if($p) return $h.'staticlive.douyucdn.cn/common/share/play.swf?room_id='.$p; + break; + } + return $u; +} +?> \ No newline at end of file diff --git a/include/post.func.php b/include/post.func.php new file mode 100644 index 0000000..affdcdf --- /dev/null +++ b/include/post.func.php @@ -0,0 +1,879 @@ +<?php +/* + [DESTOON] Copyright (c) 2008-2022 www.destoon.com + This is NOT a freeware, use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +function deditor($moduleid = 1, $textareaid = 'content', $toolbarset = 'Default', $width = 500, $height = 400) { + global $DT, $MODULE, $_userid, $destoon_editor_id; + $editor = ''; + if(!$destoon_editor_id) { + $destoon_editor_id = 1; + } else { + $destoon_editor_id++; + } + include DT_ROOT.'/'.$MODULE[2]['moduledir'].'/editor/'.DT_EDITOR.'/init.inc.php'; + return $editor; +} + +function dstyle($name, $value = '') { + global $destoon_style_id; + $style = $color = ''; + if(preg_match("/^#[0-9a-zA-Z]{6}$/", $value)) $color = $value; + if(!$destoon_style_id) { + $destoon_style_id = 1; + $style .= '<script type="text/javascript" src="'.DT_STATIC.'file/script/color.js?v='.DT_REFRESH.'"></script>'; + } else { + $destoon_style_id++; + } + $style .= '<input type="hidden" name="'.$name.'" id="color_input_'.$destoon_style_id.'" value="'.$color.'"/><img src="'.DT_PATH.'file/image/color.gif" width="21" height="18" align="absmiddle" id="color_img_'.$destoon_style_id.'" style="cursor:pointer;background:'.$color.'" onclick="color_show('.$destoon_style_id.');"/>'; + return $style; +} + +function dcalendar($name, $value = '', $sep = '-', $time = 0) { + global $destoon_calendar_id; + $calendar = ''; + $id = str_replace(array('[', ']'), array('', ''), $name); + if(!$destoon_calendar_id) { + $destoon_calendar_id = 1; + $calendar .= '<script type="text/javascript" src="'.DT_STATIC.'file/script/calendar.js?v='.DT_REFRESH.'"></script>'; + } + $calendar .= '<input type="text" name="'.$name.'" id="'.$id.'" value="'.$value.'" style="width:'.($time ? 156 : 100).'px;" autocomplete="off" onfocus="ca_show(\''.$id.'\', \''.$sep.'\', '.$time.');" readonly ondblclick="this.value=\'\';"/><img src="'.DT_PATH.'file/image/calendar.gif" style="z-index:1;position:relative;top:3px;left:-8px;margin:0 0 0 -16px;cursor:pointer;" onclick="ca_show(\''.$id.'\', \''.$sep.'\', '.$time.');"/>'; + return $calendar; +} + +function dselect($sarray, $name, $title = '', $selected = 0, $extend = '', $key = 1, $ov = '', $abs = 0) { + $select = '<select name="'.$name.'" '.$extend.'>'; + if($title) $select .= '<option value="'.$ov.'">'.$title.'</option>'; + foreach($sarray as $k=>$v) { + if(!$v) continue; + $val = $key ? $k : $v; + $_selected = ($abs ? $val === $selected : $val == $selected) ? ' selected="selected"' : ''; + if(strpos($select, ' selected="selected"') !== false) $_selected = ''; + $select .= '<option value="'.$val.'"'.$_selected.'>'.$v.'</option>'; + } + $select .= '</select>'; + return $select; +} + +function dcheckbox($sarray, $name, $checked = '', $extend = '', $key = 1, $except = '', $abs = 0) { + $checked = $checked ? explode(',', $checked) : array(); + $except = $except ? explode(',', $except) : array(); + $checkbox = $sp = ''; + foreach($sarray as $k=>$v) { + if(in_array($key ? $k : $v, $except)) continue; + $sp = in_array($key ? $k : $v, $checked) ? ' checked ' : ''; + $checkbox .= '<input type="checkbox" name="'.$name.'" value="'.($key ? $k : $v).'"'.$sp.$extend.'> '.$v.' '; + } + return $checkbox; +} + +function type_select($item, $cache = 0, $name = 'typeid', $title = '', $typeid = 0, $extend = '', $all = '') { + $TYPE = is_array($item) ? $item : get_type($item, $cache); + $select = '<select name="'.$name.'" '.$extend.'>'; + if($all) $select .= '<option value="-1"'.($typeid == -1 ? ' selected=selected' : '').'>'.$all.'</option>'; + if($title) $select .= '<option value="0"'.($typeid == 0 ? ' selected=selected' : '').'>'.$title.'</option>'; + $p = $c = array(); + foreach($TYPE as $v) { + if($v['parentid']) { + $c[$v['parentid']][] = $v; + } else { + $p[] = $v; + } + } + foreach($p as $v0) { + $select .= '<option value="'.$v0['typeid'].'"'.($v0['typeid'] == $typeid ? ' selected' : '').'>'.$v0['typename'].'</option>'; + if(isset($c[$v0['typeid']])) { + foreach($c[$v0['typeid']] as $v1) { + $select .= '<option value="'.$v1['typeid'].'"'.($v1['typeid'] == $typeid ? ' selected' : '').'> ├'.$v1['typename'].'</option>'; + } + } + } + $select .= '</select>'; + return $select; +} + +function type_child($typeid, $TYPE) { + if($typeid <= 0) return '0'; + $id = $typeid; + foreach($TYPE as $v) { + if($v['parentid'] == $typeid) $id .= ','.$v['typeid']; + } + return $id; +} + +function url_select($name, $ext = 'htm', $type = 'list', $urlid = 0, $extend = '') { + global $L; + include DT_ROOT."/api/url.inc.php"; + $select = '<select name="'.$name.'" '.$extend.'>'; + $types = count($urls[$ext][$type]); + for($i = 0; $i < $types; $i++) { + $select .= ' <option value="'.$i.'"'.($i == $urlid ? ' selected' : '').'>'.$L['url_eg'].' '.$urls[$ext][$type][$i]['example'].'</option>'; + } + $select .= '</select>'; + return $select; +} + +function tpl_select($file = 'index', $module = '', $name = 'template', $title = '', $template = '', $extend = '') { + include load('include.lang'); + global $CFG, $destoon_tpl_id; + if(!$destoon_tpl_id) { + $destoon_tpl_id = 1; + } else { + $destoon_tpl_id++; + } + $tpldir = $module ? DT_ROOT."/template/".$CFG['template']."/".$module : DT_ROOT."/template/".$CFG['template']; + @include $tpldir."/these.name.php"; + $select = '<span id="destoon_template_'.$destoon_tpl_id.'"><select name="'.$name.'" '.$extend.'><option value="">'.$title.'</option>'; + $files = glob($tpldir."/*.htm"); + foreach($files as $tplfile) { + $tplfile = basename($tplfile); + $tpl = str_replace('.htm', '', $tplfile); + if(preg_match("/^".$file."-(.*)/i", $tpl) || !$file) {//$file == $tpl || + $selected = ($template && $tpl == $template) ? 'selected' : ''; + $templatename = (isset($names[$tpl]) && $names[$tpl]) ? $names[$tpl] : $tpl; + $select .= '<option value="'.$tpl.'" '.$selected.'>'.$templatename.'</option>'; + } + } + $select .= '</select></span>'; + if(defined('DT_ADMIN')) $select .= '  <a href="javascript:tpl_edit(\''.$file.'\', \''.$module.'\', '.$destoon_tpl_id.');" class="t">'.$L['post_edit'].'</a>  <a href="javascript:tpl_add(\''.$file.'\', \''.$module.'\');" class="t">'.$L['post_new'].'</a>'; + return $select; +} + +function group_select($name = 'groupid', $title = '', $groupid = '', $extend = '') { + global $GROUP; + if(!$GROUP) $GROUP = cache_read('group.php'); + $select = '<select name="'.$name.'" '.$extend.'><option value="0">'.$title.'</option>'; + foreach($GROUP as $k=>$v) { + $select .= '<option value="'.$k.'"'.($k == $groupid ? ' selected' : '').'>'.$v['groupname'].'</option>'; + } + $select .= '</select>'; + return $select; +} + +function group_checkbox($name = 'groupid', $checked = '', $except = '1,2,4') { + global $GROUP, $L; + $GROUP or $GROUP = cache_read('group.php'); + $checked = $checked ? explode(',', $checked) : array(); + $except = $except ? explode(',', $except) : array(); + $str = $sp = ''; + $id = str_replace(array('[', ']'), array('', ''), $name); + foreach($GROUP as $k=>$v) { + if(in_array($k, $except)) continue; + $sp = in_array($k, $checked) ? ' checked' : ''; + $str .= '<input type="checkbox" name="'.$name.'" value="'.$k.'"'.$sp.' id="'.$id.$k.'"/><label for="'.$id.$k.'"> '.$v['groupname'].'  </label>'; + } + return '<span id="group_'.$id.'">'.$str.'</span> <a href="javascript:check_box(\'group_'.$id.'\', true);" class="t">'.$L['select_all'].'</a> / <a href="javascript:check_box(\'group_'.$id.'\', false);" class="t">'.$L['clear_all'].'</a>'; +} + +function module_checkbox($name = 'moduleid', $checked = '', $except = '1,2,3,4') { + global $MODULE; + $checked = $checked ? explode(',', $checked) : array(); + $except = $except ? explode(',', $except) : array(); + $str = $sp = ''; + $id = str_replace(array('[', ']'), array('', ''), $name); + foreach($MODULE as $k=>$v) { + if(in_array($k, $except) || $v['islink']) continue; + $sp = in_array($k, $checked) ? ' checked' : ''; + $str .= '<li><input type="checkbox" name="'.$name.'" value="'.$k.'"'.$sp.' id="'.$id.$k.'"/><label for="'.$id.$k.'"> '.$v['name'].'  </label></li>'; + } + return '<ul class="mods">'.$str.'</ul>'; +} + +function module_select($name = 'moduleid', $title = '', $moduleid = '', $extend = '', $except = '1,2,3') { + global $MODULE, $L; + $except = $except ? explode(',', $except) : array(); + $title or $title = $L['choose']; + $select = '<select name="'.$name.'" '.$extend.'><option value="0">'.$title.'</option>'; + foreach($MODULE as $k=>$v) { + if(in_array($k, $except) || $v['islink']) continue; + $select .= '<option value="'.$k.'"'.($k == $moduleid ? ' selected' : '').'>'.$v['name'].'</option>'; + } + $select .= '</select>'; + return $select; +} + +function homepage_select($name, $title = '', $groupid = 0, $itemid = 0, $extend = '') { + global $L; + $title or $title = $L['choose']; + $select = '<select name="'.$name.'" '.$extend.'><option value="0">'.$title.'</option>'; + $result = DB::query("SELECT * FROM ".DT_PRE."style ORDER BY listorder DESC,itemid DESC"); + while($r = DB::fetch_array($result)) { + $select .= '<option value="'.$r['itemid'].'"'.($r['itemid'] == $itemid ? ' selected' : '').'>'.$r['title'].'</option>'; + } + $select .= '</select>'; + return $select; +} + +function product_select($name = 'pid', $title = '', $pid = 0, $extend = '') { + global $PRODUCT; + $PRODUCT or $PRODUCT = cache_read('product.php'); + $select = '<select name="'.$name.'" '.$extend.'>'; + if($title) $select .= '<option value="0">'.$title.'</option>'; + foreach($PRODUCT as $k=>$v) { + $select .= '<option value="'.$k.'"'.($k == $pid ? ' selected' : '').'>'.$v['title'].'</option>'; + } + $select .= '</select>'; + return $select; +} + +function category_select($name = 'catid', $title = '', $catid = 0, $moduleid = 1, $extend = '') { + $option = cache_read('catetree-'.$moduleid.'.php', '', true); + if($option) { + if($catid) $option = str_replace('value="'.$catid.'"', 'value="'.$catid.'" selected', $option); + $select = '<select name="'.$name.'" '.$extend.' id="catid_1">'; + if($title) $select .= '<option value="0">'.$title.'</option>'; + $select .= $option ? $option : '</select>'; + return $select; + } else { + return ajax_category_select($name, $title, $catid, $moduleid, $extend); + } +} + +function get_category_select($title = '', $catid = 0, $moduleid = 1, $extend = '', $deep = 0, $cat_id = 1) { + global $cat_child; + $cat_child or $cat_child = array(); + $parents = array(); + if($catid) { + $r = DB::get_one("SELECT child,arrparentid FROM ".DT_PRE."category WHERE catid=$catid"); + $parents = explode(',', $r['arrparentid']); + if($r['child']) $parents[] = $catid; + } else { + $parents[] = 0; + } + $select = ''; + foreach($parents as $k=>$v) { + if($deep && $deep <= $k) break; + $select .= '<select onchange="load_category(this.value, '.$cat_id.');" '.$extend.'>'; + if($title) $select .= '<option value="'.$v.'">'.$title.'</option>'; + $condition = $v ? "parentid=$v" : "moduleid=$moduleid AND parentid=0"; + $result = DB::query("SELECT catid,catname FROM ".DT_PRE."category WHERE $condition ORDER BY listorder,catid ASC"); + while($c = DB::fetch_array($result)) { + $selectid = isset($parents[$k+1]) ? $parents[$k+1] : $catid; + $selected = $c['catid'] == $selectid ? ' selected' : ''; + if($cat_child && !in_array($c['catid'], $cat_child)) continue; + $select .= '<option value="'.$c['catid'].'"'.$selected.'>'.$c['catname'].'</option>'; + } + $select .= '</select> '; + } + return $select; +} + +function ajax_category_select($name = 'catid', $title = '', $catid = 0, $moduleid = 1, $extend = '', $deep = 0) { + global $cat_id; + if($cat_id) { + $cat_id++; + } else { + $cat_id = 1; + } + $catid = intval($catid); + $deep = intval($deep); + $select = ''; + $select .= '<input name="'.$name.'" id="catid_'.$cat_id.'" type="hidden" value="'.$catid.'"/>'; + $select .= '<span id="load_category_'.$cat_id.'">'.get_category_select($title, $catid, $moduleid, $extend, $deep, $cat_id).'</span>'; + $select .= '<script type="text/javascript">'; + if($cat_id == 1) $select .= 'var category_moduleid = new Array;'; + $select .= 'category_moduleid['.$cat_id.']="'.$moduleid.'";'; + if($cat_id == 1) $select .= 'var category_title = new Array;'; + $select .= 'category_title['.$cat_id.']=\''.$title.'\';'; + if($cat_id == 1) $select .= 'var category_extend = new Array;'; + $select .= 'category_extend['.$cat_id.']=\''.encrypt($extend, DT_KEY.'CAT').'\';'; + if($cat_id == 1) $select .= 'var category_catid = new Array;'; + $select .= 'category_catid['.$cat_id.']=\''.$catid.'\';'; + if($cat_id == 1) $select .= 'var category_deep = new Array;'; + $select .= 'category_deep['.$cat_id.']=\''.$deep.'\';'; + $select .= '</script>'; + if($cat_id == 1) $select .= '<script type="text/javascript" src="'.DT_STATIC.'file/script/category.js?v='.DT_REFRESH.'"></script>'; + return $select; +} + +function get_area_select($title = '', $areaid = 0, $extend = '', $deep = 0, $id = 1) { + $parents = array(); + if($areaid) { + $r = DB::get_one("SELECT child,arrparentid FROM ".DT_PRE."area WHERE areaid=$areaid"); + $parents = explode(',', $r['arrparentid']); + if($r['child']) $parents[] = $areaid; + } else { + $parents[] = 0; + } + $select = ''; + foreach($parents as $k=>$v) { + if($deep && $deep <= $k) break; + $v = intval($v); + $select .= '<select onchange="load_area(this.value, '.$id.');" '.$extend.'>'; + if($title) $select .= '<option value="'.$v.'">'.$title.'</option>'; + $result = DB::query("SELECT areaid,areaname FROM ".DT_PRE."area WHERE parentid=$v ORDER BY listorder,areaid ASC"); + while($a = DB::fetch_array($result)) { + $selectid = isset($parents[$k+1]) ? $parents[$k+1] : $areaid; + $selected = $a['areaid'] == $selectid ? ' selected' : ''; + $select .= '<option value="'.$a['areaid'].'"'.$selected.'>'.$a['areaname'].'</option>'; + } + $select .= '</select> '; + } + return $select; +} + +function ajax_area_select($name = 'areaid', $title = '', $areaid = 0, $extend = '', $deep = 0) { + global $area_id; + if($area_id) { + $area_id++; + } else { + $area_id = 1; + } + $areaid = intval($areaid); + $deep = intval($deep); + $select = ''; + $select .= '<input name="'.$name.'" id="areaid_'.$area_id.'" type="hidden" value="'.$areaid.'"/>'; + $select .= '<span id="load_area_'.$area_id.'">'.get_area_select($title, $areaid, $extend, $deep, $area_id).'</span>'; + $select .= '<script type="text/javascript">'; + if($area_id == 1) $select .= 'var area_title = new Array;'; + $select .= 'area_title['.$area_id.']=\''.$title.'\';'; + if($area_id == 1) $select .= 'var area_extend = new Array;'; + $select .= 'area_extend['.$area_id.']=\''.encrypt($extend, DT_KEY.'ARE').'\';'; + if($area_id == 1) $select .= 'var area_areaid = new Array;'; + $select .= 'area_areaid['.$area_id.']=\''.$areaid.'\';'; + if($area_id == 1) $select .= 'var area_deep = new Array;'; + $select .= 'area_deep['.$area_id.']=\''.$deep.'\';'; + $select .= '</script>'; + if($area_id == 1) $select .= '<script type="text/javascript" src="'.DT_STATIC.'file/script/area.js?v='.DT_REFRESH.'"></script>'; + return $select; +} + +function level_select($name, $title = '', $level = 0, $extend = '') { + global $MOD, $L; + $names = isset($MOD['level']) && $MOD['level'] ? $MOD['level'] : ''; + $names = $names ? explode('|', trim($names)) : array(); + $select = '<select name="'.$name.'" '.$extend.'>'; + if($title) $select .= '<option value="0">'.$title.'</option>'; + for($i = 1; $i < 10; $i++) { + $n = isset($names[$i-1]) ? ' '.$names[$i-1] : ''; + $select .= '<option value="'.$i.'"'.($i == $level ? ' selected' : '').'>'.$i.' '.$L['level'].$n.'</option>'; + } + if($extend == 'all') $select .= '<option value="10"'.(10 == $level ? ' selected' : '').'>'.$L['level_all'].'</option>'; + $select .= '</select>'; + return $select; +} + +function is_filepath($filepath) { + return strlen($filepath) > 6 && in_array(file_ext($filepath), array('htm', 'html','shtm', 'shtml')); +} + +function is_email($email) { + if(!preg_match("/^[a-z0-9_\-\.]{1,}@[a-z0-9\-]{1,}\.[a-z0-9\.]{1,}$/", $email)) return false; + list($user, $domain) = explode('@', $email); + if(strpos($domain, '..') !== false) return false; + $str = substr($user, 0, 1).substr($user, -1, 1).substr($domain, 0, 1).substr($domain, -1, 1).substr(cutstr($email, '@', '.'), -1, 1); + if(preg_match("/[_\-\.]/", $str)) return false; + return true; +} + +function is_telephone($telephone) { + return preg_match("/^[0-9\-\+\(\)\s]{6,}$/", $telephone); +} + +function is_qq($qq) { + return preg_match("/^[1-9]{1}[0-9]{4,12}$/", $qq); +} + +function is_wx($wx) { + return check_name($wx); +} + +function is_gzh($gzh) { + return check_name($gzh); +} + +function is_skuid($skuid) { + return preg_match("/^[0-9a-zA-Z\-_]{2,}$/", $skuid); +} + +function is_gbk($string) { + return preg_match("/^([\s\S]*?)([\x81-\xfe][\x40-\xfe])([\s\S]*?)/", $string); +} + +function is_date($date, $sep = '-') { + if(strlen($date) == 8) $date = substr($date, 0, 4).'-'.substr($date, 4, 2).'-'.substr($date, 6, 2); + if(strlen($date) > 10 || strlen($date) < 8) return false; + list($year, $month, $day) = explode($sep, $date); + return checkdate($month, $day, $year); +} + +function is_time($time, $sep = '-') { + $time = str_replace('T', ' ', $time); + if(substr_count($time, ' ') != 1) return false; + if(substr_count($time, ':') != 2) return false; + list($date, $time) = explode(' ', $time); + if(!preg_match("/^[0-2]{1}[0-9]{1}\:[0-5]{1}[0-9]{1}\:[0-5]{1}[0-9]{1}$/", $time)) return false; + if(substr($time, 0, 1) == '2' && substr($time, 1, 1) > 3) return false; + if(strlen($date) == 8) $date = substr($date, 0, 4).'-'.substr($date, 4, 2).'-'.substr($date, 6, 2); + if(strlen($date) > 10 || strlen($date) < 8) return false; + list($year, $month, $day) = explode($sep, $date); + return checkdate($month, $day, $year); +} + +function is_image($file) { + return preg_match("/^(jpg|jpeg|gif|png|bmp)$/i", file_ext($file)); +} + +function is_user($username) { + $r = DB::get_one("SELECT username FROM ".DT_PRE."member WHERE username='$username'"); + return $r ? true : false; +} + +function is_password($username, $password) { + if(strlen($password) < 6) return false; + $r = DB::get_one("SELECT password,passsalt FROM ".DT_PRE."member WHERE username='$username'"); + if(!$r) return false; + return $r['password'] == dpassword($password, $r['passsalt']); +} + +function is_payword($username, $payword) { + if(strlen($payword) < 6) return false; + $r = DB::get_one("SELECT payword,paysalt FROM ".DT_PRE."member WHERE username='$username'"); + if(!$r) return false; + return $r['payword'] == dpassword($payword, $r['paysalt']); +} + +function is_crsf($url) { + if(strpos($url, '://') === false) { + // + } else { + if(strpos($url, DT_DOMAIN ? '.'.DT_DOMAIN : DT_PATH) === false) return false; + } + return preg_match("/(\?|\&|\.php)/i", $url); +} + +function dpassword($password, $salt) { + return md5((is_md5($password) ? md5($password) : md5(md5($password))).$salt); +} + +function gb2py($text, $exp = '') { + if(!$text) return ''; + $text = convert($text, DT_CHARSET, 'GBK'); + $data = array(); + $tmp = @file(DT_ROOT.'/file/table/gb-pinyin.table'); + if(!$tmp) return ''; + $tmps = count($tmp); + for($i = 0; $i < $tmps; $i++) { + $tmp1 = explode(" ", $tmp[$i]); + $data[$i]=array($tmp1[0], $tmp1[1]); + } + $r = array(); + $k = 0; + $textlen = strlen($text); + for($i = 0; $i < $textlen; $i++) { + $p = ord(substr($text, $i, 1)); + if($p > 160) { + $q = ord(substr($text, ++$i, 1)); + $p = $p*256+$q-65536; + } + if($p > 0 && $p < 160) { + $r[$k] = chr($p); + } elseif($p < -20319 || $p > -10247) { + $r[$k] = ''; + } else { + for($j = $tmps - 1; $j >= 0; $j--) { + if($data[$j][1]<=$p) break; + } + $r[$k] = $data[$j][0]; + } + $k++; + } + return implode($exp, $r); +} + +function match_userid($file) { + $name = explode('.', basename($file)); + return intval(substr($name[0], strpos($name[0], '-') === false ? 8 : 12)); +} + +function clear_img($content) { + return preg_replace("/<img[^>]*>/i", "", $content); +} + +function clear_link($content) { + return preg_replace_callback("/<a[^>]*>(.*?)<\/a>/is", "_clear_link", $content); +} + +function _clear_link($matches) { + if(strpos($matches[0], DT_PATH) !== false) return $matches[0]; + if(DT_DOMAIN && strpos($matches[0], DT_DOMAIN) !== false) return $matches[0]; + return $matches[1]; +} + +function save_remote($content, $ext = 'jpg|jpeg|gif|png|bmp', $self = 0) { + global $DT, $_userid, $_username, $moduleid, $itemid, $session; + if(!$_userid || !$content) return $content; + if(!preg_match_all("/src=([\"|']?)([^ \"'>]+\.($ext))\\1/i", $content, $matches)) return $content; + require_once DT_ROOT.'/include/image.class.php'; + $dftp = false; + if($DT['ftp_remote'] && $DT['remote_url']) { + require_once DT_ROOT.'/include/ftp.class.php'; + $ftp = new dftp($DT['ftp_host'], $DT['ftp_user'], $DT['ftp_pass'], $DT['ftp_port'], $DT['ftp_path'], $DT['ftp_pasv'], $DT['ftp_ssl']); + $dftp = $ftp->connected; + } + if($DT['uploadlog'] && !is_object($session)) $session = new dsession(); + $urls = $oldpath = $newpath = array(); + $DT['uploaddir'] or $DT['uploaddir'] = 'Ym/d'; + foreach($matches[2] as $k=>$url) { + if(in_array($url, $urls)) continue; + $urls[$url] = $url; + if(strpos($url, '://') === false) continue; + if(!$self) { + if(DT_DOMAIN) { + if(strpos($url, '.'.DT_DOMAIN.'/') !== false) continue; + } else { + if(strpos($url, DT_PATH) !== false) continue; + } + if($DT['remote_url'] && strpos($url, $DT['remote_url']) !== false) continue; + } + $filedir = 'file/upload/'.timetodate(DT_TIME, $DT['uploaddir']).'/'; + $filepath = DT_PATH.$filedir; + $fileroot = DT_ROOT.'/'.$filedir; + $file_ext = file_ext($url); + $filename = timetodate(DT_TIME, 'His').mt_rand(10, 99).$_userid.'.'.$file_ext; + $newfile = $fileroot.$filename; + if(file_copy($url, $newfile)) { + $file_size = filesize($newfile); + if($file_size < 1) { + file_del($newfile); + continue; + } + $img = ''; + if(is_image($newfile)) { + $img = @getimagesize($newfile); + if(!$img) { + file_del($newfile); + continue; + } + if($DT['water_type']) { + $image = new image($newfile); + if($DT['water_type'] == 2) { + $image->waterimage(); + } else if($DT['water_type'] == 1) { + $image->watertext(); + } + } + } + $oldpath[] = $url; + $newurl = linkurl($filepath.$filename); + if($dftp) { + $exp = explode("file/upload/", $newurl); + if($ftp->dftp_put($filedir.$filename, $exp[1])) { + $newurl = $DT['remote_url'].$exp[1]; + $DT['ftp_save'] or file_del($newfile); + } + } + if($DT['uploadlog']) { + $upload_table = DT_PRE.'upload_'.($_userid%10); + $_SESSION['uploads'][] = $newurl; + $img_w = $img ? $img[0] : 0; + $img_h = $img ? $img[1] : 0; + DB::query("INSERT INTO {$upload_table} (item,fileurl,filesize,fileext,upfrom,width,height,moduleid,username,ip,addtime,itemid) VALUES ('".md5($newurl)."','$newurl','$file_size','$file_ext','editor','$img_w','$img_h','$moduleid','$_username','".DT_IP."','".DT_TIME."','$itemid')"); + } + $newpath[] = $newurl; + } + } + unset($matches); + return str_replace($oldpath, $newpath, $content); +} + +function save_local($content) { + global $DT, $_userid, $_username, $moduleid, $itemid, $session; + if($content == '<br type="_moz" />') return '';//FireFox + if($content == ' ') return '';//Chrome + if(DT_EDITOR == 'kindeditor') $content = str_replace('" /></embed />', '"></embed>', $content); + $content = preg_replace("/allowScriptAccess=\"always\"/i", "", $content); + $content = preg_replace("/allowScriptAccess/i", "allowscr-iptaccess", $content); + if(!preg_match_all("/src=([\"|']?)([^ \"'>]+)\\1/i", $content, $matches)) return $content; + foreach($matches[2] as $k=>$url) { + if(is_crsf($url) && substr($url, 0, 10) != 'data:image') $content = str_replace($url, DT_SKIN.'image/nopic.gif', $content); + } + if(strpos($content, 'data:image') === false) return $content; + require_once DT_ROOT.'/include/image.class.php'; + $dftp = false; + if($DT['ftp_remote'] && $DT['remote_url']) { + require_once DT_ROOT.'/include/ftp.class.php'; + $ftp = new dftp($DT['ftp_host'], $DT['ftp_user'], $DT['ftp_pass'], $DT['ftp_port'], $DT['ftp_path'], $DT['ftp_pasv'], $DT['ftp_ssl']); + $dftp = $ftp->connected; + } + if($DT['uploadlog'] && !is_object($session)) $session = new dsession(); + $urls = $oldpath = $newpath = array(); + $DT['uploaddir'] or $DT['uploaddir'] = 'Ym/d'; + foreach($matches[2] as $k=>$url) { + if(in_array($url, $urls)) continue; + $urls[$url] = $url; + if(strpos($url, 'data:image') === false) continue; + if(strpos($url, ';base64,') === false) continue; + $t1 = explode(';base64,', $url); + $t2 = explode('/', $t1[0]); + $file_ext = $t2[1]; + in_array($file_ext, array('jpg', 'jpeg', 'gif', 'png')) or $file_ext = 'jpg'; + $filedir = 'file/upload/'.timetodate(DT_TIME, $DT['uploaddir']).'/'; + $filepath = DT_PATH.$filedir; + $fileroot = DT_ROOT.'/'.$filedir; + $filename = timetodate(DT_TIME, 'His').mt_rand(10, 99).$_userid.'.'.$file_ext; + $newfile = $fileroot.$filename; + if(!is_image($newfile)) continue; + if(file_put($newfile, base64_decode(strip_sql($t1[1], 0)))) { + $file_size = filesize($newfile); + if($file_size < 1) { + file_del($newfile); + continue; + } + $img = @getimagesize($newfile); + if(!$img) { + file_del($newfile); + continue; + } + if($DT['water_type']) { + $image = new image($newfile); + if($DT['water_type'] == 2) { + $image->waterimage(); + } else if($DT['water_type'] == 1) { + $image->watertext(); + } + } + $oldpath[] = $url; + $newurl = linkurl($filepath.$filename); + if($dftp) { + $exp = explode("file/upload/", $newurl); + if($ftp->dftp_put($filedir.$filename, $exp[1])) { + $newurl = $DT['remote_url'].$exp[1]; + $DT['ftp_save'] or file_del($newfile); + } + } + if($DT['uploadlog']) { + $upload_table = DT_PRE.'upload_'.($_userid%10); + $_SESSION['uploads'][] = $newurl; + $img_w = $img ? $img[0] : 0; + $img_h = $img ? $img[1] : 0; + DB::query("INSERT INTO {$upload_table} (item,fileurl,filesize,fileext,upfrom,width,height,moduleid,username,ip,addtime,itemid) VALUES ('".md5($newurl)."','$newurl','$file_size','$file_ext','editor','$img_w','$img_h','$moduleid','$_username','".DT_IP."','".DT_TIME."','$itemid')"); + } + $newpath[] = $newurl; + } + } + unset($matches); + return str_replace($oldpath, $newpath, $content); +} + +function save_thumb($content, $no, $width = 120, $height = 90) { + global $DT, $_userid; + if(!$_userid || !$content) return ''; + $ext = 'jpg|jpeg|gif|png|bmp'; + if(!preg_match_all("/src=([\"|']?)([^ \"'>]+\.($ext))\\1/i", $content, $matches)) return ''; + require_once DT_ROOT.'/include/image.class.php'; + $dftp = false; + if($DT['ftp_remote'] && $DT['remote_url']) { + require_once DT_ROOT.'/include/ftp.class.php'; + $ftp = new dftp($DT['ftp_host'], $DT['ftp_user'], $DT['ftp_pass'], $DT['ftp_port'], $DT['ftp_path'], $DT['ftp_pasv'], $DT['ftp_ssl']); + $dftp = $ftp->connected; + } + $urls = $oldpath = $newpath = array(); + $DT['uploaddir'] or $DT['uploaddir'] = 'Ym/d'; + foreach($matches[2] as $k=>$url) { + if($k == $no - 1) { + $filedir = 'file/upload/'.timetodate(DT_TIME, $DT['uploaddir']).'/'; + $filepath = DT_PATH.$filedir; + $fileroot = DT_ROOT.'/'.$filedir; + $file_ext = file_ext($url); + $filename = timetodate(DT_TIME, 'His').mt_rand(10, 99).$_userid.'.'.$file_ext; + $newfile = $fileroot.$filename; + if(file_copy($url, $newfile)) { + if(is_image($newfile)) { + if(!@getimagesize($newfile)) { + file_del($newfile); + return ''; + } + $image = new image($newfile); + $image->thumb($width, $height); + } + $newurl = linkurl($filepath.$filename); + if($dftp) { + $exp = explode("file/upload/", $newurl); + if($ftp->dftp_put($filedir.$filename, $exp[1])) { + $newurl = $DT['remote_url'].$exp[1]; + $DT['ftp_save'] or file_del($newfile); + } + } + return $newurl; + } + } + } + unset($matches); + return ''; +} + +function delete_local($content, $userid, $ext = 'jpg|jpeg|gif|png|bmp|mp4|swf') { + if(preg_match_all("/src=([\"|']?)([^ \"'>]+\.($ext))\\1/i", $content, $matches)) { + foreach($matches[2] as $url) { + delete_upload($url, $userid); + } + unset($matches); + } +} + +function delete_diff($new, $old, $ext = 'jpg|jpeg|gif|png|bmp|mp4|swf') { + global $_userid; + $new = stripslashes($new); + $diff_urls = $new_urls = $old_urls = array(); + if(preg_match_all("/src=([\"|']?)([^ \"'>]+\.($ext))\\1/i", $old, $matches)) { + foreach($matches[2] as $url) { + $old_urls[] = $url; + } + } else { + return; + } + if(preg_match_all("/src=([\"|']?)([^ \"'>]+\.($ext))\\1/i", $new, $matches)) { + foreach($matches[2] as $url) { + $new_urls[] = $url; + } + } + foreach($old_urls as $url) { + in_array($url, $new_urls) or $diff_urls[] = $url; + } + if(!$diff_urls) return; + foreach($diff_urls as $url) { + delete_upload($url, $_userid); + } + unset($new, $old, $matches, $url, $diff_urls, $new_urls, $old_urls); +} + +function delete_upload($file, $userid) { + global $CFG, $DT, $ftp; + if(!defined('DT_ADMIN') && (!$userid || $userid != match_userid($file))) return false; + if(!$file) return false; + $thumb = strpos($file, '.thumb.') !== false ? 1 : 0; + $ext = file_ext($file); + $fileurl = $file; + if(strpos($file, 'file/upload') === false) {//Remote + if($DT['ftp_remote'] && $DT['remote_url']) { + if(strpos($file, $DT['remote_url']) !== false) { + if(!is_object($ftp)) { + require_once DT_ROOT.'/include/ftp.class.php'; + $ftp = new dftp($DT['ftp_host'], $DT['ftp_user'], $DT['ftp_pass'], $DT['ftp_port'], $DT['ftp_path'], $DT['ftp_pasv'], $DT['ftp_ssl']); + } + $file = str_replace($DT['remote_url'], '', $file); + $ftp->dftp_delete($file); + if($DT['ftp_save']) file_del(DT_ROOT.'file/upload/'.$file); + if($thumb) { + $ftp->dftp_delete(str_replace('.thumb.'.$ext, '', $file)); + if($DT['ftp_save']) file_del(DT_ROOT.'file/upload/'.str_replace('.thumb.'.$ext, '', $file)); + $ftp->dftp_delete(str_replace('.thumb.', '.middle.', $file)); + if($DT['ftp_save']) file_del(DT_ROOT.'file/upload/'.str_replace('.thumb.', '.middle.', $file)); + } else { + $ftp->dftp_delete($file.'.thumb.'.$ext); + if($DT['ftp_save']) file_del(DT_ROOT.'file/upload/'.$file.'.thumb.'.$ext); + $ftp->dftp_delete($file.'.middle.'.$ext); + if($DT['ftp_save']) file_del(DT_ROOT.'file/upload/'.$file.'.middle.'.$ext); + } + } + } + } else { + $exp = explode('file/upload/', $file); + $file = DT_ROOT.'/file/upload/'.$exp[1]; + if(is_file($file) && strpos($exp[1], '..') === false) { + file_del($file); + if($thumb) { + file_del(str_replace('.thumb.'.$ext, '', $file)); + file_del(str_replace('.thumb.', '.middle.', $file)); + } else { + file_del($file.'.thumb.'.$ext); + file_del($file.'.middle.'.$ext); + } + } + } + if($DT['uploadlog']) { + $picurl = $thumb ? str_replace('.thumb.'.$ext, '', $fileurl) : $fileurl.'.thumb.'.$ext; + DB::query("DELETE FROM ".DT_PRE."upload_".($userid%10)." WHERE item='".md5($fileurl)."'"); + DB::query("DELETE FROM ".DT_PRE."upload_".($userid%10)." WHERE item='".md5($picurl)."'"); + } +} + +function clear_upload($content = '', $itemid = 0, $tb = '') { + global $DT, $session, $_userid; + if(!is_object($session)) $session = new dsession(); + if(!isset($_SESSION['uploads']) || !$_SESSION['uploads'] || !$content) return; + $update = array(); + foreach($_SESSION['uploads'] as $file) { + $ext = file_ext($file); + $pic = strpos($file, '.thumb.') !== false ? str_replace('.thumb.'.$ext, '', $file) : $file.'.thumb.'.$ext; + if(strpos($content, $file) === false && strpos($content, $pic) === false) { + delete_upload($file, $_userid); + } else { + if($DT['uploadlog'] && $itemid) { $update[] = "'".md5($file)."'"; $update[] = "'".md5($pic)."'"; } + } + } + $tb = $tb ? str_replace(DT_PRE, '', $tb) : ''; + if($update) DB::query("UPDATE ".DT_PRE."upload_".($_userid%10)." SET itemid=$itemid".($tb ? ",tb='$tb'" : "")." WHERE item IN (".implode(',', $update).")"); + $_SESSION['uploads'] = array(); +} + +function check_period($period) { + if($period) { + if(strpos($period, ',') === false) { + $period = explode('|', $period); + foreach($period as $p) { + $p = str_replace(':', '.', $p); + $p = explode('-', $p); + $f = $p[0]; + $t = $p[1]; + $n = date('G.i', DT_TIME); + if(($f > $t && ($n > $f || $n < $t)) || ($f < $t && $n > $f && $n < $t)) return true; + } + return false; + } else { + return strpos(','.$period.',', ','.date('w', DT_TIME).',') === false ? false : true; + } + } else { + return false; + } +} + +function get_status($status, $check) { + global $DT; + if(!$check && $DT['check_week'] && check_period($DT['check_week'])) $check = true; + if(!$check && $DT['check_hour'] && check_period($DT['check_hour'])) $check = true; + if($status == 0) { + return 0; + } else if($status == 1) { + return 2; + } else if($status == 2) { + return 2; + } else if($status == 3) { + return $check ? 2 : 3; + } else if($status == 4) { + return $check ? 2 : 3; + } else { + return 2; + } +} + +function tips($tips) { + $tips = str_replace(array('<br/>', '<br />', '<br>'), array(' ', ' ', ' '), $tips); + echo ' <img src="'.DT_STATIC.'file/image/tips.png" width="16" height="16" title="'.$tips.'" alt="tips" class="c_p" onclick="Dconfirm(\''.str_replace(' ', '<br/>', $tips).'\', \'\', 450);"/>'; +} + +function reload_captcha() { + return 'try{parent.reloadcaptcha();}catch(e){}'; +} + +function reload_question() { + return 'try{parent.reloadquestion();}catch(e){}'; +} + +function sync_weibo($site, $moduleid, $itemid) { + return 'document.write(\'<img src="'.DT_PATH.'api/oauth/'.$site.'/post.php?auth='.encrypt($moduleid.'-'.$itemid, DT_KEY.'SYNC').'" width="1" height="1"/>\');'; +} + +function history($moduleid, $itemid, $action = '', $item = array()) { + $file = DT_ROOT.'/file/history/'.$moduleid.'/'.$itemid.'.php'; + if($action == 'set') { + file_put($file, '<?php exit;?>'.serialize($item)); + } else if($action == 'del') { + file_del($file); + } else { + return is_file($file); + } +} +?> \ No newline at end of file diff --git a/include/property.func.php b/include/property.func.php new file mode 100644 index 0000000..22e9c82 --- /dev/null +++ b/include/property.func.php @@ -0,0 +1,125 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +function property_update($post_ppt, $moduleid, $catid, $itemid) { + $catid = intval($catid); + if(!$post_ppt || !$moduleid || !$catid || !$itemid) return; + $OP = property_option($catid); + if(!$OP) return; + $post_ppt = dhtmlspecialchars($post_ppt); + DB::query("DELETE FROM ".DT_PRE."category_value WHERE moduleid=$moduleid AND itemid=$itemid"); + $ppt = array(); + foreach($OP as $v) { + if($v['type'] > 1 && $v['search']) $ppt[] = $v['oid']; + } + $pptword = ''; + foreach($post_ppt as $k=>$v) { + if(in_array($k, $ppt)) { + if(is_array($v)) { + foreach($v as $_v) { + $pptword .= 'O'.$k.':'.$_v.';'; + } + } else { + $pptword .= 'O'.$k.':'.$v.';'; + } + } + if(is_array($v)) $v = implode(',', $v); + DB::query("INSERT INTO ".DT_PRE."category_value (oid,moduleid,itemid,value) VALUES ('$k','$moduleid','$itemid','$v')"); + } + if($pptword) DB::query("UPDATE ".get_table($moduleid)." SET pptword='$pptword' WHERE itemid=$itemid"); +} + +function property_check($post_ppt) { + global $post; + include load('include.lang'); + $OP = $post['catid'] ? property_option($post['catid']) : array(); + if(!$OP) return; + foreach($OP as $v) { + if($v['required'] && !$post_ppt[$v['oid']]) { + $msg = lang($v['type'] > 1 ? $L['fields_choose'] : $L['fields_input'], array($v['name'])); + defined('DT_ADMIN') ? msg($msg) : dalert($msg); + } + } +} + +function property_option($catid) { + $catid = intval($catid); + $lists = array(); + $result = DB::query("SELECT * FROM ".DT_PRE."category_option WHERE catid=$catid ORDER BY listorder ASC,oid ASC"); + while($r = DB::fetch_array($result)) { + $lists[] = $r; + } + return $lists; +} + +function property_value($moduleid, $itemid) { + $lists = array(); + $result = DB::query("SELECT oid,value FROM ".DT_PRE."category_value WHERE moduleid=$moduleid AND itemid=$itemid"); + while($r = DB::fetch_array($result)) { + $lists[$r['oid']] = $r['value']; + } + return $lists; +} + +function property_condition($catid) { + $catid = intval($catid); + $lists = array(); + $result = DB::query("SELECT * FROM ".DT_PRE."category_option WHERE catid=$catid AND type>1 AND search>0 ORDER BY listorder ASC,oid ASC"); + while($r = DB::fetch_array($result)) { + $r['options'] = explode('|', str_replace('(*)', '', $r['value'])); + $lists[] = $r; + } + return $lists; +} + +function property_js() { + include template('property_js', 'chip'); +} + +function property_html($var, $oid, $type, $value, $extend = '') { + global $L, $DT_PC; + $str = ''; + if($type == 0) { + if(strpos($extend, 'size=') === false) $extend .= ' size="50"'; + $str = '<input type="text" name="post_ppt['.$oid.']" id="property-'.$oid.'" value="'.($var ? $var : $value).'" '.$extend.'/>'; + } else if($type == 1) { + if(strpos($extend, 'rows=') === false) $extend .= ' rows="5"'; + if(strpos($extend, 'cols=') === false) $extend .= ' cols="80"'; + $str = '<textarea name="post_ppt['.$oid.']" id="property-'.$oid.'" '.$extend.'>'.($var ? $var : $value).'</textarea><br/>'; + } else if($type == 2) { + $str = '<select name="post_ppt['.$oid.']" id="property-'.$oid.'" '.$extend.'><option value="">'.$L['choose'].'</option>'; + $ops = explode('|', $value); + foreach($ops as $o) { + if($var) { + $o = str_replace('(*)', '', $o); + $selected = $o == $var ? ' selected' : ''; + } else { + $selected = strpos($o, '(*)') !== false ? ' selected' : ''; + $o = str_replace('(*)', '', $o); + } + $str .= '<option value="'.$o.'"'.$selected.'>'.$o.'</option>'; + } + $str .= '</select>'; + } else if($type == 3) { + $str = '<span id="property-'.$oid.'" '.$extend.'>'; + $ops = explode('|', $value); + foreach($ops as $o) { + if($var) { + $o = str_replace('(*)', '', $o); + $tmp = explode(',', $var); + $selected = in_array($o, $tmp) ? ' checked' : ''; + } else { + $selected = strpos($o, '(*)') !== false ? ' checked' : ''; + $o = str_replace('(*)', '', $o); + } + $str .= '<input type="checkbox" name="post_ppt['.$oid.'][]" value="'.$o.'"'.$selected.'>'.$o.'  '; + } + $str .= '</span>'; + } + if($DT_PC) $str .= ' <span id="dproperty-'.$oid.'" class="f_red"></span>'; + return $str; +} +?> \ No newline at end of file diff --git a/include/remote.class.php b/include/remote.class.php new file mode 100644 index 0000000..545af62 --- /dev/null +++ b/include/remote.class.php @@ -0,0 +1,100 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class remote { + var $file; + var $savename; + var $savepath; + var $saveto; + var $overwrite = false; + var $maxsize; + var $ext; + var $errmsg = errmsg; + var $userid; + var $image; + var $uptime = 0; + var $adduserid = true; + + function __construct($file, $savepath, $savename = '') { + global $DT, $_userid; + $this->file = strip_sql($file, 0); + $this->userid = $_userid; + $this->ext = file_ext($file); + $this->maxsize = $DT['uploadsize'] ? $DT['uploadsize']*1024 : 2048*1024; + $this->savepath = $savepath; + $this->savename = $savename; + } + + function remote($file, $savepath, $savename = '') { + $this->__construct($file, $savepath, $savename); + } + + function save() { + include load('include.lang'); + if(!$this->is_allow()) return $this->_($L['upload_not_allow']); + $this->set_savepath($this->savepath); + $this->set_savename($this->savename); + if(file_copy($this->file, DT_ROOT.'/'.$this->saveto)) { + if(!@getimagesize(DT_ROOT.'/'.$this->saveto)) { + file_del(DT_ROOT.'/'.$this->saveto); + return $this->_($L['upload_bad']); + } + if($this->maxsize > 0 && filesize(DT_ROOT.'/'.$this->saveto) > $this->maxsize) { + file_del(DT_ROOT.'/'.$this->saveto); + return $this->_($L['upload_size_limit'].' ('.intval($this->maxsize/1024).'Kb)'); + } + $this->image = 1; + return true; + } else { + return $this->_($L['upload_failed']); + } + } + + function is_allow() { + if($this->ext) { + if(!in_array($this->ext, array('jpg', 'jpeg', 'gif', 'png', 'bmp'))) return false; + } else { + $this->ext = 'jpg'; + } + return preg_match("/^(http|https)\:\/\/[A-Za-z0-9_\-\/\.\#\&\?\;\,\=\%\:\!]{10,}$/", $this->file); + } + + function set_savepath($savepath) { + $savepath = str_replace("\\", "/", $savepath); + $savepath = substr($savepath, -1) == "/" ? $savepath : $savepath."/"; + $this->savepath = $savepath; + } + + function set_savename($savename) { + if($savename) { + $this->savename = $this->adduserid ? str_replace('.'.$this->ext, $this->userid.'.'.$this->ext, $savename) : $savename; + } else { + $this->uptime = DT_TIME; + $name = date('His', $this->uptime).rand(10, 99); + $this->savename = $this->adduserid ? $name.$this->userid.'.'.$this->ext : $name.'.'.$this->ext; + } + $this->saveto = $this->savepath.$this->savename; + if(!$this->overwrite && is_file(DT_ROOT.'/'.$this->saveto)) { + $i = 1; + while($i) { + $saveto = str_replace('.'.$this->ext, '('.$i.').'.$this->ext, $this->saveto); + if(is_file(DT_ROOT.'/'.$saveto)) { + $i++; + continue; + } else { + $this->saveto = $saveto; + break; + } + } + } + } + + function _($e) { + $this->errmsg = $e; + return false; + } +} +?> \ No newline at end of file diff --git a/include/rewrite.inc.php b/include/rewrite.inc.php new file mode 100644 index 0000000..4706788 --- /dev/null +++ b/include/rewrite.inc.php @@ -0,0 +1,26 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +$pstr = ''; +if(isset($_SERVER['UNENCODED_URL']) && strpos($_SERVER['QUERY_STRING'], '-htm-') !== false) $_SERVER['QUERY_STRING'] = substr($_SERVER['UNENCODED_URL'], strpos($_SERVER['UNENCODED_URL'], '-htm-') + 5);//IIS7+ +if($_SERVER['QUERY_STRING']) { + if(preg_match("/^(.*)\.html(\?(.*))*$/", $_SERVER['QUERY_STRING'], $_match)) { + $pstr = $_match[1]; + } else if(preg_match("/^(.*)\/$/", $_SERVER['QUERY_STRING'], $_match)) { + $pstr = $_match[1]; + } +} else if($_SERVER["REQUEST_URI"] != $_SERVER["SCRIPT_NAME"]) { + $string = str_replace($_SERVER["SCRIPT_NAME"], '', $_SERVER["REQUEST_URI"]); + if($string && preg_match("/^\/(.*)\/$/", $string, $_match)) $pstr = $_match[1]; +} +if($pstr && strpos($pstr, '-') !== false) { + $_GET = array(); + $pstr = explode('-', $pstr); + $pstr_count = count($pstr); + if($pstr_count%2 == 1) --$pstr_count; + for($i = 0; $i < $pstr_count; $i++) { $_GET[$pstr[$i]] = $MQG ? addslashes($pstr[++$i]) : $pstr[++$i]; } +} +?> \ No newline at end of file diff --git a/include/safe.func.php b/include/safe.func.php new file mode 100644 index 0000000..5ff16b1 --- /dev/null +++ b/include/safe.func.php @@ -0,0 +1,98 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +function dhtmlspecialchars($string) { + if(is_array($string)) { + return array_map('dhtmlspecialchars', $string); + } else { + $string = htmlspecialchars($string, ENT_QUOTES, DT_CHARSET == 'GBK' ? 'GB2312' : 'UTF-8'); + return str_replace('&', '&', $string); + } +} + +function dsafe($string, $type = 1) { + if(is_array($string)) { + return array_map('dsafe', $string); + } else { + if($type) { + $string = str_replace('<i></i>', '', $string); + $string = preg_replace("/\<\!\-\-([\s\S]*?)\-\-\>/", "", $string); + $string = preg_replace("/\/\*([\s\S]*?)\*\//", "", $string); + $string = preg_replace("/&#([a-z0-9]{1,})/i", "<i></i>&#\\1", $string); + $match = array("/s[\s]*c[\s]*r[\s]*i[\s]*p[\s]*t/i","/d[\s]*a[\s]*t[\s]*a[\s]*\:/i","/b[\s]*a[\s]*s[\s]*e/i","/e[\\\]*x[\\\]*p[\\\]*r[\\\]*e[\\\]*s[\\\]*s[\\\]*i[\\\]*o[\\\]*n/i","/i[\\\]*m[\\\]*p[\\\]*o[\\\]*r[\\\]*t/i","/on([a-z]{2,})([\(|\=|\s]+)/i","/about/i","/frame/i","/link/i","/meta/i","/textarea/i","/eval/i","/alert/i","/confirm/i","/prompt/i","/cookie/i","/document/i","/newline/i","/colon/i","/<style/i","/\\\x/i"); + $replace = array("s<i></i>cript","da<i></i>ta:","ba<i></i>se","ex<i></i>pression","im<i></i>port","o<i></i>n\\1\\2","a<i></i>bout","f<i></i>rame","l<i></i>ink","me<i></i>ta","text<i></i>area","e<i></i>val","a<i></i>lert","/con<i></i>firm/i","prom<i></i>pt","coo<i></i>kie","docu<i></i>ment","new<i></i>line","co<i></i>lon","<sty1e","\<i></i>x"); + return str_replace(array('isShowa<i></i>bout', 'co<i></i>ntrols'), array('isShowAbout', 'controls'), preg_replace($match, $replace, $string)); + } else { + return str_replace(array('<i></i>', '<sty1e'), array('', '<style'), $string); + } + } +} + +function strip_sql($string, $type = 1) { + if(is_array($string)) { + return array_map('strip_sql', $string); + } else { + if($type) { + $string = preg_replace("/\/\*([\s\S]*?)\*\//", "", $string); + $string = preg_replace("/0x([a-fA-d0-9]{2,})/", '0x\\1', $string); + $string = preg_replace("/0X([a-fA-d0-9]{2,})/", '0X\\1', $string); + $string = preg_replace_callback("/(select|update|replace|delete|drop)([\s\S]*?)(".DT_PRE."|from)/i", 'strip_wd', $string); + $string = preg_replace_callback("/(load_file|substring|substr|reverse|trim|space|left|right|mid|lpad|concat|concat_ws|make_set|ascii|bin|oct|hex|ord|char|conv)([^a-z]?)\(/i", 'strip_wd', $string); + $string = preg_replace_callback("/(union|where|having|outfile|dumpfile|".DT_PRE.")/i", 'strip_wd', $string); + return $string; + } else { + return str_replace(array('_','d','e','g','i','m','n','p','r','s','t','v','x','X','R'), array('_','d','e','g','i','m','n','p','r','s','t','v','x','X','R'), $string); + } + } +} + +function strip_wd($m) { + if(is_array($m) && isset($m[1])) { + $wd = substr($m[1], 0, -1).'&#'.ord(substr($m[1], -1)).';'; + if(isset($m[3])) return $wd.$m[2].$m[3]; + if(isset($m[2])) return $wd.$m[2].'('; + return $wd; + } + return ''; +} + +function strip_uri($uri) { + if(strpos($uri, '%') !== false) { + while($uri != urldecode($uri)) { + $uri = urldecode($uri); + } + } + if(strpos($uri, '<') !== false || strpos($uri, "'") !== false || strpos($uri, '"') !== false) { + dhttp(403, 0); + dalert('HTTP 403 Forbidden - Bad URL', DT_PATH); + } +} + +function strip_kw($kw, $max = 0) { + $kw = dhtmlspecialchars(trim(urldecode($kw))); + if($kw) { + if(strpos($kw, '%') !== false) return ''; + $kw = str_replace(array("'", '&'), array('', ''), $kw); + $max = intval($max); + if($max > 0 && strlen($kw) > $max) $kw = dsubstr($kw, $max); + } + return $kw; +} + +function strip_key($array) { + foreach($array as $k=>$v) { + if(!preg_match("/^[a-z0-9_\-]{1,64}$/i", $k)) { + dhttp(403, 0); + dalert('HTTP 403 Forbidden - Bad DATA', DT_PATH); + } + if(is_array($v)) strip_key($v); + } +} + +function strip_str($string) { + return str_replace(array('\\','"', "'"), array('', '', ''), $string); +} +?> \ No newline at end of file diff --git a/include/seo.inc.php b/include/seo.inc.php new file mode 100644 index 0000000..a9a1f4b --- /dev/null +++ b/include/seo.inc.php @@ -0,0 +1,121 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +$seo_modulename = $MOD['name']; +$seo_sitename = $city_sitename ? $city_sitename : $DT['sitename']; +$seo_sitetitle = $DT['seo_title']; +$seo_sitekeywords = $DT['seo_keywords']; +$seo_sitedescription = $DT['seo_description']; +$seo_delimiter = $DT['seo_delimiter']; +$seo_page = $page > 1 ? lang($L['seo_page'], array($page)).$seo_delimiter : ''; +$seo_catname = $seo_cattitle = $seo_parentname = $seo_catkeywords = $seo_catdescription = ''; +if($catid) { + if($CAT['parentid']) { + $seo_catname = ''; + $tmp = strip_tags(cat_pos($CAT, 'DESTOON')); + $tmp = explode('DESTOON', $tmp); + $tmp = array_reverse($tmp); + foreach($tmp as $k=>$v) { + $seo_catname .= $v.$seo_delimiter; + } + } else { + $seo_catname = $CAT['catname'].$seo_delimiter; + } + $seo_cattitle = $CAT['seo_title'] ? $CAT['seo_title'].$seo_delimiter : $seo_catname; + $seo_catkeywords = $CAT['seo_keywords'] ? $CAT['seo_keywords'] : ''; + $seo_catdescription = $CAT['seo_description'] ? $CAT['seo_description'] : ''; +} +$seo_areaname = (isset($areaid) && $areaid) ? area_pos($areaid, $seo_delimiter).$seo_delimiter : ''; +$seo_showtitle = isset($title) ? $title : ''; +$seo_showintroduce = isset($introduce) ? $introduce : ''; +switch($seo_file) { + case 'index': + if($MOD['title_index']) { + eval("\$seo_title = \"$MOD[title_index]\";"); + } else { + $seo_title = $seo_modulename.$seo_delimiter.$seo_sitename; + } + if($MOD['keywords_index']) eval("\$head_keywords = \"$MOD[keywords_index]\";"); + if($MOD['description_index']) eval("\$head_description = \"$MOD[description_index]\";"); + break; + case 'list': + if($CAT['seo_title']) { + $seo_title = $CAT['seo_title']; + } else if($MOD['title_list']) { + eval("\$seo_title = \"$MOD[title_list]\";"); + } else { + $seo_title = $seo_cattitle.$seo_page.$seo_modulename.$seo_delimiter.$seo_sitename; + } + $_seo_catname = $seo_catname; + $_seo_areaname = $seo_areaname; + if($CAT['seo_keywords']) { + $head_keywords = $CAT['seo_keywords']; + } else if($MOD['keywords_list']) { + if($_seo_catname) $seo_catname = str_replace($seo_delimiter, ',', $_seo_catname); + if($_seo_areaname) $seo_areaname = str_replace($seo_delimiter, ',', $_seo_areaname); + eval("\$head_keywords = \"$MOD[keywords_list]\";"); + } + if($CAT['seo_description']) { + $head_description = $CAT['seo_description']; + } else if($MOD['description_list']) { + if($_seo_catname) $seo_catname = str_replace($seo_delimiter, ' ', $_seo_catname); + if($_seo_areaname) $seo_areaname = str_replace($seo_delimiter, ' ', $_seo_areaname); + eval("\$head_description = \"$MOD[description_list]\";"); + } + break; + case 'show': + if($MOD['title_show']) { + eval("\$seo_title = \"$MOD[title_show]\";"); + } else { + $seo_title = $seo_showtitle.$seo_delimiter.$seo_catname.$seo_modulename.$seo_delimiter.$seo_sitename; + } + $_seo_catname = $seo_catname; + $_seo_areaname = $seo_areaname; + if($MOD['keywords_show']) { + if($_seo_catname) $seo_catname = str_replace($seo_delimiter, ',', $_seo_catname); + if($_seo_areaname) $seo_areaname = str_replace($seo_delimiter, ',', $_seo_areaname); + eval("\$head_keywords = \"$MOD[keywords_show]\";"); + } else { + $head_keywords = $keyword; + } + if($MOD['description_show']) { + if($_seo_catname) $seo_catname = str_replace($seo_delimiter, ' ', $_seo_catname); + if($_seo_areaname) $seo_areaname = str_replace($seo_delimiter, ' ', $_seo_areaname); + eval("\$head_description = \"$MOD[description_show]\";"); + } else { + $head_description = $introduce ? $introduce : $title; + } + break; + case 'search': + if($MOD['title_search']) { + $seo_kw = $kw ? $kw.$seo_delimiter : ''; + eval("\$seo_title = \"$MOD[title_search]\";"); + } else { + $seo_title = $seo_modulename.$L['search'].$seo_delimiter.$seo_page.$seo_sitename; + if($catid) $seo_title = $seo_catname.$seo_title; + if($areaid) $seo_title = $seo_areaname.$seo_title; + if($kw) $seo_title = $kw.$seo_delimiter.$seo_title; + } + $_seo_catname = $seo_catname; + $_seo_areaname = $seo_areaname; + if($MOD['keywords_search']) { + if($_seo_catname) $seo_catname = str_replace($seo_delimiter, ',', $_seo_catname); + if($_seo_areaname) $seo_areaname = str_replace($seo_delimiter, ',', $_seo_areaname); + $seo_kw = $kw ? $kw.',' : ''; + eval("\$head_keywords = \"$MOD[keywords_search]\";"); + } + if($MOD['description_search']) { + if($_seo_catname) $seo_catname = str_replace($seo_delimiter, ' ', $_seo_catname); + if($_seo_areaname) $seo_areaname = str_replace($seo_delimiter, ' ', $_seo_areaname); + $seo_kw = $kw ? $kw : ''; + eval("\$head_description = \"$MOD[description_search]\";"); + } + break; + default: + break; +} +if(isset($sns_app) && $sns_app) $seo_title = ''; +?> \ No newline at end of file diff --git a/include/session_apc.class.php b/include/session_apc.class.php new file mode 100644 index 0000000..e5d392f --- /dev/null +++ b/include/session_apc.class.php @@ -0,0 +1,45 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class dsession { + + function __construct() { + if(DT_DOMAIN) @ini_set('session.cookie_domain', '.'.DT_DOMAIN); + session_set_save_handler(array(&$this,'open'), array(&$this,'close'), array(&$this,'read'), array(&$this,'write'), array(&$this,'destroy'), array(&$this,'gc')); + session_cache_limiter('private, must-revalidate'); + session_start(); + header("cache-control: private"); + } + + function dsession() { + $this->__construct(); + } + + function open($path, $name) { + return true; + } + + function close() { + return true; + } + + function read($sid) { + return apc_fetch($sid); + } + + function write($sid, $data) { + return apc_store($sid, $data, 1800); + } + + function destroy($sid) { + return apc_delete($sid); + } + + function gc() { + return true; + } +} +?> \ No newline at end of file diff --git a/include/session_eaccelerator.class.php b/include/session_eaccelerator.class.php new file mode 100644 index 0000000..6e49329 --- /dev/null +++ b/include/session_eaccelerator.class.php @@ -0,0 +1,45 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class dsession { + + function __construct() { + if(DT_DOMAIN) @ini_set('session.cookie_domain', '.'.DT_DOMAIN); + session_set_save_handler(array(&$this,'open'), array(&$this,'close'), array(&$this,'read'), array(&$this,'write'), array(&$this,'destroy'), array(&$this,'gc')); + session_cache_limiter('private, must-revalidate'); + session_start(); + header("cache-control: private"); + } + + function dsession() { + $this->__construct(); + } + + function open($path, $name) { + return true; + } + + function close() { + return true; + } + + function read($sid) { + return eaccelerator_get($sid); + } + + function write($sid, $data) { + return eaccelerator_put($sid, $data, 1800); + } + + function destroy($sid) { + return eaccelerator_rm($sid); + } + + function gc() { + return eaccelerator_gc(); + } +} +?> \ No newline at end of file diff --git a/include/session_file.class.php b/include/session_file.class.php new file mode 100644 index 0000000..9d2281c --- /dev/null +++ b/include/session_file.class.php @@ -0,0 +1,28 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class dsession { + function __construct() { + if(DT_DOMAIN) @ini_set('session.cookie_domain', '.'.DT_DOMAIN); + @ini_set('session.gc_maxlifetime', 1800); + if(is_dir(DT_ROOT.'/file/session/')) { + $dir = DT_ROOT.'/file/session/'.strtolower(substr(md5(DT_KEY), 2, 6)).'/'; + if(is_dir($dir)) { + session_save_path($dir); + } else { + dir_create($dir); + } + } + session_cache_limiter('private, must-revalidate'); + @session_start(); + header("cache-control: private"); + } + + function dsession() { + $this->__construct(); + } +} +?> \ No newline at end of file diff --git a/include/session_memcache.class.php b/include/session_memcache.class.php new file mode 100644 index 0000000..8dfb6e4 --- /dev/null +++ b/include/session_memcache.class.php @@ -0,0 +1,52 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class dsession { + var $obj; + + function __construct() { + $this->obj = new Memcache; + include DT_ROOT.'/file/config/memcache.inc.php'; + $num = count($MemServer); + $key = $num == 1 ? 0 : abs(crc32(DT_IP))%$num; + $this->obj->connect($MemServer[$key]['host'], $MemServer[$key]['port'], 2); + + if(DT_DOMAIN) @ini_set('session.cookie_domain', '.'.DT_DOMAIN); + session_set_save_handler(array(&$this,'open'), array(&$this,'close'), array(&$this,'read'), array(&$this,'write'), array(&$this,'destroy'), array(&$this,'gc')); + session_cache_limiter('private, must-revalidate'); + session_start(); + header("cache-control: private"); + } + + function dsession() { + $this->__construct(); + } + + function open($path, $name) { + return true; + } + + function close() { + return true; + } + + function read($sid) { + return $this->obj->get($sid); + } + + function write($sid, $data) { + return $this->obj->set($sid, $data, 0, 1800); + } + + function destroy($sid) { + return $this->obj->delete($sid); + } + + function gc() { + return true; + } +} +?> \ No newline at end of file diff --git a/include/session_mysql.class.php b/include/session_mysql.class.php new file mode 100644 index 0000000..245654b --- /dev/null +++ b/include/session_mysql.class.php @@ -0,0 +1,50 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class dsession { + var $table; + + function __construct() { + $this->table = DT_PRE.'session'; + if(DT_DOMAIN) @ini_set('session.cookie_domain', '.'.DT_DOMAIN); + session_set_save_handler(array(&$this,'open'), array(&$this,'close'), array(&$this,'read'), array(&$this,'write'), array(&$this,'destroy'), array(&$this,'gc')); + session_cache_limiter('private, must-revalidate'); + session_start(); + header("cache-control: private"); + } + + function dsession() { + $this->__construct(); + } + + function open($path, $name) { + return true; + } + + function close() { + $this->gc(); + } + + function read($sid) { + $r = DB::get_one("SELECT data FROM {$this->table} WHERE sessionid='$sid'"); + return $r ? $r['data'] : ''; + } + + function write($sid, $data) { + $data = addslashes($data); + DB::query("REPLACE INTO {$this->table} (sessionid,data,lastvisit) VALUES('$sid', '$data', '".DT_TIME."')"); + } + + function destroy($sid) { + DB::query("DELETE FROM {$this->table} WHERE sessionid='$sid'"); + } + + function gc() { + $expiretime = DT_TIME - 1800; + DB::query("DELETE FROM {$this->table} WHERE lastvisit<$expiretime"); + } +} +?> \ No newline at end of file diff --git a/include/session_redis.class.php b/include/session_redis.class.php new file mode 100644 index 0000000..36b2dfa --- /dev/null +++ b/include/session_redis.class.php @@ -0,0 +1,52 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class dsession { + var $obj; + + function __construct() { + $this->obj = new Redis; + include DT_ROOT.'/file/config/redis.inc.php'; + $num = count($RedisServer); + $key = $num == 1 ? 0 : abs(crc32(DT_IP))%$num; + $this->obj->connect($RedisServer[$key]['host'], $RedisServer[$key]['port']); + + if(DT_DOMAIN) @ini_set('session.cookie_domain', '.'.DT_DOMAIN); + session_set_save_handler(array(&$this,'open'), array(&$this,'close'), array(&$this,'read'), array(&$this,'write'), array(&$this,'destroy'), array(&$this,'gc')); + session_cache_limiter('private, must-revalidate'); + session_start(); + header("cache-control: private"); + } + + function dsession() { + $this->__construct(); + } + + function open($path, $name) { + return true; + } + + function close() { + return true; + } + + function read($sid) { + return $this->obj->get($sid); + } + + function write($sid, $data) { + return $this->obj->setex($sid, 1800, $data); + } + + function destroy($sid) { + return $this->obj->delete($sid); + } + + function gc() { + return true; + } +} +?> \ No newline at end of file diff --git a/include/session_wincache.class.php b/include/session_wincache.class.php new file mode 100644 index 0000000..77d5554 --- /dev/null +++ b/include/session_wincache.class.php @@ -0,0 +1,45 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class dsession { + + function __construct() { + if(DT_DOMAIN) @ini_set('session.cookie_domain', '.'.DT_DOMAIN); + session_set_save_handler(array(&$this,'open'), array(&$this,'close'), array(&$this,'read'), array(&$this,'write'), array(&$this,'destroy'), array(&$this,'gc')); + session_cache_limiter('private, must-revalidate'); + session_start(); + header("cache-control: private"); + } + + function dsession() { + $this->__construct(); + } + + function open($path, $name) { + return true; + } + + function close() { + return true; + } + + function read($sid) { + return wincache_ucache_get($sid); + } + + function write($sid, $data) { + return wincache_ucache_set($sid, $data, 1800); + } + + function destroy($sid) { + return wincache_ucache_delete($sid); + } + + function gc() { + return true; + } +} +?> \ No newline at end of file diff --git a/include/session_xcache.class.php b/include/session_xcache.class.php new file mode 100644 index 0000000..e0027dc --- /dev/null +++ b/include/session_xcache.class.php @@ -0,0 +1,45 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class dsession { + + function __construct() { + if(DT_DOMAIN) @ini_set('session.cookie_domain', '.'.DT_DOMAIN); + session_set_save_handler(array(&$this,'open'), array(&$this,'close'), array(&$this,'read'), array(&$this,'write'), array(&$this,'destroy'), array(&$this,'gc')); + session_cache_limiter('private, must-revalidate'); + session_start(); + header("cache-control: private"); + } + + function dsession() { + $this->__construct(); + } + + function open($path, $name) { + return true; + } + + function close() { + return true; + } + + function read($sid) { + return xcache_get($sid); + } + + function write($sid, $data) { + return xcache_set($sid, $data, 1800); + } + + function destroy($sid) { + return xcache_unset($sid); + } + + function gc() { + return true; + } +} +?> \ No newline at end of file diff --git a/include/sphinx.class.php b/include/sphinx.class.php new file mode 100644 index 0000000..d412382 --- /dev/null +++ b/include/sphinx.class.php @@ -0,0 +1,1399 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); + +define( "SEARCHD_COMMAND_SEARCH", 0 ); +define( "SEARCHD_COMMAND_EXCERPT", 1 ); +define( "SEARCHD_COMMAND_UPDATE", 2 ); +define( "SEARCHD_COMMAND_KEYWORDS",3 ); +define( "SEARCHD_COMMAND_PERSIST", 4 ); +define( "SEARCHD_COMMAND_STATUS", 5 ); +define( "SEARCHD_COMMAND_QUERY", 6 ); + +define( "VER_COMMAND_SEARCH", 0x116 ); +define( "VER_COMMAND_EXCERPT", 0x100 ); +define( "VER_COMMAND_UPDATE", 0x102 ); +define( "VER_COMMAND_KEYWORDS", 0x100 ); +define( "VER_COMMAND_STATUS", 0x100 ); +define( "VER_COMMAND_QUERY", 0x100 ); + +define( "SEARCHD_OK", 0 ); +define( "SEARCHD_ERROR", 1 ); +define( "SEARCHD_RETRY", 2 ); +define( "SEARCHD_WARNING", 3 ); + +define( "SPH_MATCH_ALL", 0 ); +define( "SPH_MATCH_ANY", 1 ); +define( "SPH_MATCH_PHRASE", 2 ); +define( "SPH_MATCH_BOOLEAN", 3 ); +define( "SPH_MATCH_EXTENDED", 4 ); +define( "SPH_MATCH_FULLSCAN", 5 ); +define( "SPH_MATCH_EXTENDED2", 6 ); // extended engine V2 (TEMPORARY, WILL BE REMOVED) + +define( "SPH_RANK_PROXIMITY_BM25", 0 ); ///< default mode, phrase proximity major factor and BM25 minor one +define( "SPH_RANK_BM25", 1 ); ///< statistical mode, BM25 ranking only (faster but worse quality) +define( "SPH_RANK_NONE", 2 ); ///< no ranking, all matches get a weight of 1 +define( "SPH_RANK_WORDCOUNT", 3 ); ///< simple word-count weighting, rank is a weighted sum of per-field keyword occurence counts +define( "SPH_RANK_PROXIMITY", 4 ); +define( "SPH_RANK_MATCHANY", 5 ); +define( "SPH_RANK_FIELDMASK", 6 ); + +define( "SPH_SORT_RELEVANCE", 0 ); +define( "SPH_SORT_ATTR_DESC", 1 ); +define( "SPH_SORT_ATTR_ASC", 2 ); +define( "SPH_SORT_TIME_SEGMENTS", 3 ); +define( "SPH_SORT_EXTENDED", 4 ); +define( "SPH_SORT_EXPR", 5 ); + +define( "SPH_FILTER_VALUES", 0 ); +define( "SPH_FILTER_RANGE", 1 ); +define( "SPH_FILTER_FLOATRANGE", 2 ); + +define( "SPH_ATTR_INTEGER", 1 ); +define( "SPH_ATTR_TIMESTAMP", 2 ); +define( "SPH_ATTR_ORDINAL", 3 ); +define( "SPH_ATTR_BOOL", 4 ); +define( "SPH_ATTR_FLOAT", 5 ); +define( "SPH_ATTR_BIGINT", 6 ); +define( "SPH_ATTR_MULTI", 0x40000000 ); + +define( "SPH_GROUPBY_DAY", 0 ); +define( "SPH_GROUPBY_WEEK", 1 ); +define( "SPH_GROUPBY_MONTH", 2 ); +define( "SPH_GROUPBY_YEAR", 3 ); +define( "SPH_GROUPBY_ATTR", 4 ); +define( "SPH_GROUPBY_ATTRPAIR", 5 ); + + + +function sphPackI64 ( $v ) +{ + assert ( is_numeric($v) ); + + if ( PHP_INT_SIZE>=8 ) + { + $v = (int)$v; + return pack ( "NN", $v>>32, $v&0xFFFFFFFF ); + } + + if ( is_int($v) ) + return pack ( "NN", $v < 0 ? -1 : 0, $v ); + + if ( function_exists("bcmul") ) + { + if ( bccomp ( $v, 0 ) == -1 ) + $v = bcadd ( "18446744073709551616", $v ); + $h = bcdiv ( $v, "4294967296", 0 ); + $l = bcmod ( $v, "4294967296" ); + return pack ( "NN", (float)$h, (float)$l ); // conversion to float is intentional; int would lose 31st bit + } + + $p = max(0, strlen($v) - 13); + $lo = abs((float)substr($v, $p)); + $hi = abs((float)substr($v, 0, $p)); + + $m = $lo + $hi*1316134912.0; // (10 ^ 13) % (1 << 32) = 1316134912 + $q = floor($m/4294967296.0); + $l = $m - ($q*4294967296.0); + $h = $hi*2328.0 + $q; // (10 ^ 13) / (1 << 32) = 2328 + + if ( $v<0 ) + { + if ( $l==0 ) + $h = 4294967296.0 - $h; + else + { + $h = 4294967295.0 - $h; + $l = 4294967296.0 - $l; + } + } + return pack ( "NN", $h, $l ); +} + +function sphPackU64 ( $v ) +{ + assert ( is_numeric($v) ); + + if ( PHP_INT_SIZE>=8 ) + { + assert ( $v>=0 ); + + if ( is_int($v) ) + return pack ( "NN", $v>>32, $v&0xFFFFFFFF ); + + if ( function_exists("bcmul") ) + { + $h = bcdiv ( $v, 4294967296, 0 ); + $l = bcmod ( $v, 4294967296 ); + return pack ( "NN", $h, $l ); + } + + $p = max ( 0, strlen($v) - 13 ); + $lo = (int)substr ( $v, $p ); + $hi = (int)substr ( $v, 0, $p ); + + $m = $lo + $hi*1316134912; + $l = $m % 4294967296; + $h = $hi*2328 + (int)($m/4294967296); + + return pack ( "NN", $h, $l ); + } + + if ( is_int($v) ) + return pack ( "NN", 0, $v ); + + if ( function_exists("bcmul") ) + { + $h = bcdiv ( $v, "4294967296", 0 ); + $l = bcmod ( $v, "4294967296" ); + return pack ( "NN", (float)$h, (float)$l ); // conversion to float is intentional; int would lose 31st bit + } + + $p = max(0, strlen($v) - 13); + $lo = (float)substr($v, $p); + $hi = (float)substr($v, 0, $p); + + $m = $lo + $hi*1316134912.0; + $q = floor($m / 4294967296.0); + $l = $m - ($q * 4294967296.0); + $h = $hi*2328.0 + $q; + + return pack ( "NN", $h, $l ); +} + +function sphUnpackU64 ( $v ) +{ + list ( $hi, $lo ) = array_values ( unpack ( "N*N*", $v ) ); + + if ( PHP_INT_SIZE>=8 ) + { + if ( $hi<0 ) $hi += (1<<32); // because php 5.2.2 to 5.2.5 is totally fucked up again + if ( $lo<0 ) $lo += (1<<32); + + if ( $hi<=2147483647 ) + return ($hi<<32) + $lo; + + if ( function_exists("bcmul") ) + return bcadd ( $lo, bcmul ( $hi, "4294967296" ) ); + + $C = 100000; + $h = ((int)($hi / $C) << 32) + (int)($lo / $C); + $l = (($hi % $C) << 32) + ($lo % $C); + if ( $l>$C ) + { + $h += (int)($l / $C); + $l = $l % $C; + } + + if ( $h==0 ) + return $l; + return sprintf ( "%d%05d", $h, $l ); + } + + if ( $hi==0 ) + { + if ( $lo>0 ) + return $lo; + return sprintf ( "%u", $lo ); + } + + $hi = sprintf ( "%u", $hi ); + $lo = sprintf ( "%u", $lo ); + + if ( function_exists("bcmul") ) + return bcadd ( $lo, bcmul ( $hi, "4294967296" ) ); + + $hi = (float)$hi; + $lo = (float)$lo; + + $q = floor($hi/10000000.0); + $r = $hi - $q*10000000.0; + $m = $lo + $r*4967296.0; + $mq = floor($m/10000000.0); + $l = $m - $mq*10000000.0; + $h = $q*4294967296.0 + $r*429.0 + $mq; + + $h = sprintf ( "%.0f", $h ); + $l = sprintf ( "%07.0f", $l ); + if ( $h=="0" ) + return sprintf( "%.0f", (float)$l ); + return $h . $l; +} + +function sphUnpackI64 ( $v ) +{ + list ( $hi, $lo ) = array_values ( unpack ( "N*N*", $v ) ); + + if ( PHP_INT_SIZE>=8 ) + { + if ( $hi<0 ) $hi += (1<<32); // because php 5.2.2 to 5.2.5 is totally fucked up again + if ( $lo<0 ) $lo += (1<<32); + + return ($hi<<32) + $lo; + } + + if ( $hi==0 ) + { + if ( $lo>0 ) + return $lo; + return sprintf ( "%u", $lo ); + } + elseif ( $hi==-1 ) + { + if ( $lo<0 ) + return $lo; + return sprintf ( "%.0f", $lo - 4294967296.0 ); + } + + $neg = ""; + $c = 0; + if ( $hi<0 ) + { + $hi = ~$hi; + $lo = ~$lo; + $c = 1; + $neg = "-"; + } + + $hi = sprintf ( "%u", $hi ); + $lo = sprintf ( "%u", $lo ); + + if ( function_exists("bcmul") ) + return $neg . bcadd ( bcadd ( $lo, bcmul ( $hi, "4294967296" ) ), $c ); + + $hi = (float)$hi; + $lo = (float)$lo; + + $q = floor($hi/10000000.0); + $r = $hi - $q*10000000.0; + $m = $lo + $r*4967296.0; + $mq = floor($m/10000000.0); + $l = $m - $mq*10000000.0 + $c; + $h = $q*4294967296.0 + $r*429.0 + $mq; + if ( $l==10000000 ) + { + $l = 0; + $h += 1; + } + + $h = sprintf ( "%.0f", $h ); + $l = sprintf ( "%07.0f", $l ); + if ( $h=="0" ) + return $neg . sprintf( "%.0f", (float)$l ); + return $neg . $h . $l; +} + + +function sphFixUint ( $value ) +{ + if ( PHP_INT_SIZE>=8 ) + { + if ( $value<0 ) $value += (1<<32); + return $value; + } + else + { + return sprintf ( "%u", $value ); + } +} + + +class SphinxClient +{ + var $_host; ///< searchd host (default is "localhost") + var $_port; ///< searchd port (default is 9312) + var $_offset; ///< how many records to seek from result-set start (default is 0) + var $_limit; ///< how many records to return from result-set starting at offset (default is 20) + var $_mode; ///< query matching mode (default is SPH_MATCH_ALL) + var $_weights; ///< per-field weights (default is 1 for all fields) + var $_sort; ///< match sorting mode (default is SPH_SORT_RELEVANCE) + var $_sortby; ///< attribute to sort by (defualt is "") + var $_min_id; ///< min ID to match (default is 0, which means no limit) + var $_max_id; ///< max ID to match (default is 0, which means no limit) + var $_filters; ///< search filters + var $_groupby; ///< group-by attribute name + var $_groupfunc; ///< group-by function (to pre-process group-by attribute value with) + var $_groupsort; ///< group-by sorting clause (to sort groups in result set with) + var $_groupdistinct;///< group-by count-distinct attribute + var $_maxmatches; ///< max matches to retrieve + var $_cutoff; ///< cutoff to stop searching at (default is 0) + var $_retrycount; ///< distributed retries count + var $_retrydelay; ///< distributed retries delay + var $_anchor; ///< geographical anchor point + var $_indexweights; ///< per-index weights + var $_ranker; ///< ranking mode (default is SPH_RANK_PROXIMITY_BM25) + var $_maxquerytime; ///< max query time, milliseconds (default is 0, do not limit) + var $_fieldweights; ///< per-field-name weights + var $_overrides; ///< per-query attribute values overrides + var $_select; ///< select-list (attributes or expressions, with optional aliases) + + var $_error; ///< last error message + var $_warning; ///< last warning message + var $_connerror; ///< connection error vs remote error flag + + var $_reqs; ///< requests array for multi-query + var $_mbenc; ///< stored mbstring encoding + var $_arrayresult; ///< whether $result["matches"] should be a hash or an array + var $_timeout; ///< connect timeout + + function __construct() { + $this->SphinxClient(); + } + + function SphinxClient () + { + $this->_host = "localhost"; + $this->_port = 9312; + $this->_path = false; + $this->_socket = false; + + $this->_offset = 0; + $this->_limit = 20; + $this->_mode = SPH_MATCH_ALL; + $this->_weights = array (); + $this->_sort = SPH_SORT_RELEVANCE; + $this->_sortby = ""; + $this->_min_id = 0; + $this->_max_id = 0; + $this->_filters = array (); + $this->_groupby = ""; + $this->_groupfunc = SPH_GROUPBY_DAY; + $this->_groupsort = "@group desc"; + $this->_groupdistinct= ""; + $this->_maxmatches = 1000; + $this->_cutoff = 0; + $this->_retrycount = 0; + $this->_retrydelay = 0; + $this->_anchor = array (); + $this->_indexweights= array (); + $this->_ranker = SPH_RANK_PROXIMITY_BM25; + $this->_maxquerytime= 0; + $this->_fieldweights= array(); + $this->_overrides = array(); + $this->_select = "*"; + + $this->_error = ""; // per-reply fields (for single-query case) + $this->_warning = ""; + $this->_connerror = false; + + $this->_reqs = array (); // requests storage (for multi-query case) + $this->_mbenc = ""; + $this->_arrayresult = false; + $this->_timeout = 0; + } + + function __destruct() + { + if ( $this->_socket !== false ) + fclose ( $this->_socket ); + } + + function GetLastError () + { + return $this->_error; + } + + function GetLastWarning () + { + return $this->_warning; + } + + function IsConnectError() + { + return $this->_connerror; + } + + function SetServer ( $host, $port = 0 ) + { + assert ( is_string($host) ); + if ( $host[0] == '/') + { + $this->_path = 'unix://' . $host; + return; + } + if ( substr ( $host, 0, 7 )=="unix://" ) + { + $this->_path = $host; + return; + } + + assert ( is_int($port) ); + $this->_host = $host; + $this->_port = $port; + $this->_path = ''; + + } + + function SetConnectTimeout ( $timeout ) + { + assert ( is_numeric($timeout) ); + $this->_timeout = $timeout; + } + + + function _Send ( $handle, $data, $length ) + { + if ( feof($handle) || fwrite ( $handle, $data, $length ) !== $length ) + { + $this->_error = 'connection unexpectedly closed (timed out?)'; + $this->_connerror = true; + return false; + } + return true; + } + + + function _MBPush () + { + $this->_mbenc = ""; + if ( ini_get ( "mbstring.func_overload" ) & 2 ) + { + $this->_mbenc = mb_internal_encoding(); + mb_internal_encoding ( "latin1" ); + } + } + + function _MBPop () + { + if ( $this->_mbenc ) + mb_internal_encoding ( $this->_mbenc ); + } + + function _Connect () + { + if ( $this->_socket!==false ) + { + if ( !@feof ( $this->_socket ) ) + return $this->_socket; + + $this->_socket = false; + } + + $errno = 0; + $errstr = ""; + $this->_connerror = false; + + if ( $this->_path ) + { + $host = $this->_path; + $port = 0; + } + else + { + $host = $this->_host; + $port = $this->_port; + } + + if ( $this->_timeout<=0 ) + $fp = fsockopen ( $host, $port, $errno, $errstr ); + else + $fp = fsockopen ( $host, $port, $errno, $errstr, $this->_timeout ); + + if ( !$fp ) + { + if ( $this->_path ) + $location = $this->_path; + else + $location = "{$this->_host}:{$this->_port}"; + + $errstr = trim ( $errstr ); + $this->_error = "connection to $location failed (errno=$errno, msg=$errstr)"; + $this->_connerror = true; + return false; + } + + if ( !$this->_Send ( $fp, pack ( "N", 1 ), 4 ) ) + { + fclose ( $fp ); + $this->_error = "failed to send client protocol version"; + return false; + } + + list(,$v) = unpack ( "N*", fread ( $fp, 4 ) ); + $v = (int)$v; + if ( $v<1 ) + { + fclose ( $fp ); + $this->_error = "expected searchd protocol version 1+, got version '$v'"; + return false; + } + + return $fp; + } + + function _GetResponse ( $fp, $client_ver ) + { + $response = ""; + $len = 0; + + $header = fread ( $fp, 8 ); + if ( strlen($header)==8 ) + { + list ( $status, $ver, $len ) = array_values ( unpack ( "n2a/Nb", $header ) ); + $left = $len; + while ( $left>0 && !feof($fp) ) + { + $chunk = fread ( $fp, $left ); + if ( $chunk ) + { + $response .= $chunk; + $left -= strlen($chunk); + } + } + } + if ( $this->_socket === false ) + fclose ( $fp ); + + $read = strlen ( $response ); + if ( !$response || $read!=$len ) + { + $this->_error = $len + ? "failed to read searchd response (status=$status, ver=$ver, len=$len, read=$read)" + : "received zero-sized searchd response"; + return false; + } + + if ( $status==SEARCHD_WARNING ) + { + list(,$wlen) = unpack ( "N*", substr ( $response, 0, 4 ) ); + $this->_warning = substr ( $response, 4, $wlen ); + return substr ( $response, 4+$wlen ); + } + if ( $status==SEARCHD_ERROR ) + { + $this->_error = "searchd error: " . substr ( $response, 4 ); + return false; + } + if ( $status==SEARCHD_RETRY ) + { + $this->_error = "temporary searchd error: " . substr ( $response, 4 ); + return false; + } + if ( $status!=SEARCHD_OK ) + { + $this->_error = "unknown status code '$status'"; + return false; + } + + if ( $ver<$client_ver ) + { + $this->_warning = sprintf ( "searchd command v.%d.%d older than client's v.%d.%d, some options might not work", + $ver>>8, $ver&0xff, $client_ver>>8, $client_ver&0xff ); + } + + return $response; + } + + + function SetLimits ( $offset, $limit, $max=0, $cutoff=0 ) + { + assert ( is_int($offset) ); + assert ( is_int($limit) ); + assert ( $offset>=0 ); + assert ( $limit>0 ); + assert ( $max>=0 ); + $this->_offset = $offset; + $this->_limit = $limit; + if ( $max>0 ) + $this->_maxmatches = $max; + if ( $cutoff>0 ) + $this->_cutoff = $cutoff; + } + + function SetMaxQueryTime ( $max ) + { + assert ( is_int($max) ); + assert ( $max>=0 ); + $this->_maxquerytime = $max; + } + + function SetMatchMode ( $mode ) + { + assert ( $mode==SPH_MATCH_ALL + || $mode==SPH_MATCH_ANY + || $mode==SPH_MATCH_PHRASE + || $mode==SPH_MATCH_BOOLEAN + || $mode==SPH_MATCH_EXTENDED + || $mode==SPH_MATCH_FULLSCAN + || $mode==SPH_MATCH_EXTENDED2 ); + $this->_mode = $mode; + } + + function SetRankingMode ( $ranker ) + { + assert ( $ranker==SPH_RANK_PROXIMITY_BM25 + || $ranker==SPH_RANK_BM25 + || $ranker==SPH_RANK_NONE + || $ranker==SPH_RANK_WORDCOUNT + || $ranker==SPH_RANK_PROXIMITY ); + $this->_ranker = $ranker; + } + + function SetSortMode ( $mode, $sortby="" ) + { + assert ( + $mode==SPH_SORT_RELEVANCE || + $mode==SPH_SORT_ATTR_DESC || + $mode==SPH_SORT_ATTR_ASC || + $mode==SPH_SORT_TIME_SEGMENTS || + $mode==SPH_SORT_EXTENDED || + $mode==SPH_SORT_EXPR ); + assert ( is_string($sortby) ); + assert ( $mode==SPH_SORT_RELEVANCE || strlen($sortby)>0 ); + + $this->_sort = $mode; + $this->_sortby = $sortby; + } + + function SetWeights ( $weights ) + { + assert ( is_array($weights) ); + foreach ( $weights as $weight ) + assert ( is_int($weight) ); + + $this->_weights = $weights; + } + + function SetFieldWeights ( $weights ) + { + assert ( is_array($weights) ); + foreach ( $weights as $name=>$weight ) + { + assert ( is_string($name) ); + assert ( is_int($weight) ); + } + $this->_fieldweights = $weights; + } + + function SetIndexWeights ( $weights ) + { + assert ( is_array($weights) ); + foreach ( $weights as $index=>$weight ) + { + assert ( is_string($index) ); + assert ( is_int($weight) ); + } + $this->_indexweights = $weights; + } + + function SetIDRange ( $min, $max ) + { + assert ( is_numeric($min) ); + assert ( is_numeric($max) ); + assert ( $min<=$max ); + $this->_min_id = $min; + $this->_max_id = $max; + } + + function SetFilter ( $attribute, $values, $exclude=false ) + { + assert ( is_string($attribute) ); + assert ( is_array($values) ); + assert ( count($values) ); + + if ( is_array($values) && count($values) ) + { + foreach ( $values as $value ) + assert ( is_numeric($value) ); + + $this->_filters[] = array ( "type"=>SPH_FILTER_VALUES, "attr"=>$attribute, "exclude"=>$exclude, "values"=>$values ); + } + } + + function SetFilterRange ( $attribute, $min, $max, $exclude=false ) + { + assert ( is_string($attribute) ); + assert ( is_numeric($min) ); + assert ( is_numeric($max) ); + assert ( $min<=$max ); + + $this->_filters[] = array ( "type"=>SPH_FILTER_RANGE, "attr"=>$attribute, "exclude"=>$exclude, "min"=>$min, "max"=>$max ); + } + + function SetFilterFloatRange ( $attribute, $min, $max, $exclude=false ) + { + assert ( is_string($attribute) ); + assert ( is_float($min) ); + assert ( is_float($max) ); + assert ( $min<=$max ); + + $this->_filters[] = array ( "type"=>SPH_FILTER_FLOATRANGE, "attr"=>$attribute, "exclude"=>$exclude, "min"=>$min, "max"=>$max ); + } + + function SetGeoAnchor ( $attrlat, $attrlong, $lat, $long ) + { + assert ( is_string($attrlat) ); + assert ( is_string($attrlong) ); + assert ( is_float($lat) ); + assert ( is_float($long) ); + + $this->_anchor = array ( "attrlat"=>$attrlat, "attrlong"=>$attrlong, "lat"=>$lat, "long"=>$long ); + } + + function SetGroupBy ( $attribute, $func, $groupsort="@group desc" ) + { + assert ( is_string($attribute) ); + assert ( is_string($groupsort) ); + assert ( $func==SPH_GROUPBY_DAY + || $func==SPH_GROUPBY_WEEK + || $func==SPH_GROUPBY_MONTH + || $func==SPH_GROUPBY_YEAR + || $func==SPH_GROUPBY_ATTR + || $func==SPH_GROUPBY_ATTRPAIR ); + + $this->_groupby = $attribute; + $this->_groupfunc = $func; + $this->_groupsort = $groupsort; + } + + function SetGroupDistinct ( $attribute ) + { + assert ( is_string($attribute) ); + $this->_groupdistinct = $attribute; + } + + function SetRetries ( $count, $delay=0 ) + { + assert ( is_int($count) && $count>=0 ); + assert ( is_int($delay) && $delay>=0 ); + $this->_retrycount = $count; + $this->_retrydelay = $delay; + } + + function SetArrayResult ( $arrayresult ) + { + assert ( is_bool($arrayresult) ); + $this->_arrayresult = $arrayresult; + } + + function SetOverride ( $attrname, $attrtype, $values ) + { + assert ( is_string ( $attrname ) ); + assert ( in_array ( $attrtype, array ( SPH_ATTR_INTEGER, SPH_ATTR_TIMESTAMP, SPH_ATTR_BOOL, SPH_ATTR_FLOAT, SPH_ATTR_BIGINT ) ) ); + assert ( is_array ( $values ) ); + + $this->_overrides[$attrname] = array ( "attr"=>$attrname, "type"=>$attrtype, "values"=>$values ); + } + + function SetSelect ( $select ) + { + assert ( is_string ( $select ) ); + $this->_select = $select; + } + + + function ResetFilters () + { + $this->_filters = array(); + $this->_anchor = array(); + } + + function ResetGroupBy () + { + $this->_groupby = ""; + $this->_groupfunc = SPH_GROUPBY_DAY; + $this->_groupsort = "@group desc"; + $this->_groupdistinct= ""; + } + + function ResetOverrides () + { + $this->_overrides = array (); + } + + + function Query ( $query, $index="*", $comment="" ) + { + assert ( empty($this->_reqs) ); + + $this->AddQuery ( $query, $index, $comment ); + + $results = $this->RunQueries (); + + $this->_reqs = array (); // just in case it failed too early + + if ( !is_array($results) ) + return false; // probably network error; error message should be already filled + + $this->_error = $results[0]["error"]; + $this->_warning = $results[0]["warning"]; + if ( $results[0]["status"]==SEARCHD_ERROR ) + return false; + else + return $results[0]; + } + + function _PackFloat ( $f ) + { + $t1 = pack ( "f", $f ); // machine order + list(,$t2) = unpack ( "L*", $t1 ); // int in machine order + return pack ( "N", $t2 ); + } + + function AddQuery ( $query, $index="*", $comment="" ) + { + $this->_MBPush (); + + $req = pack ( "NNNNN", $this->_offset, $this->_limit, $this->_mode, $this->_ranker, $this->_sort ); // mode and limits + $req .= pack ( "N", strlen($this->_sortby) ) . $this->_sortby; + $req .= pack ( "N", strlen($query) ) . $query; // query itself + $req .= pack ( "N", count($this->_weights) ); // weights + foreach ( $this->_weights as $weight ) + $req .= pack ( "N", (int)$weight ); + $req .= pack ( "N", strlen($index) ) . $index; // indexes + $req .= pack ( "N", 1 ); // id64 range marker + $req .= sphPackU64 ( $this->_min_id ) . sphPackU64 ( $this->_max_id ); // id64 range + + $req .= pack ( "N", count($this->_filters) ); + foreach ( $this->_filters as $filter ) + { + $req .= pack ( "N", strlen($filter["attr"]) ) . $filter["attr"]; + $req .= pack ( "N", $filter["type"] ); + switch ( $filter["type"] ) + { + case SPH_FILTER_VALUES: + $req .= pack ( "N", count($filter["values"]) ); + foreach ( $filter["values"] as $value ) + $req .= sphPackI64 ( $value ); + break; + + case SPH_FILTER_RANGE: + $req .= sphPackI64 ( $filter["min"] ) . sphPackI64 ( $filter["max"] ); + break; + + case SPH_FILTER_FLOATRANGE: + $req .= $this->_PackFloat ( $filter["min"] ) . $this->_PackFloat ( $filter["max"] ); + break; + + default: + assert ( 0 && "internal error: unhandled filter type" ); + } + $req .= pack ( "N", $filter["exclude"] ); + } + + $req .= pack ( "NN", $this->_groupfunc, strlen($this->_groupby) ) . $this->_groupby; + $req .= pack ( "N", $this->_maxmatches ); + $req .= pack ( "N", strlen($this->_groupsort) ) . $this->_groupsort; + $req .= pack ( "NNN", $this->_cutoff, $this->_retrycount, $this->_retrydelay ); + $req .= pack ( "N", strlen($this->_groupdistinct) ) . $this->_groupdistinct; + + if ( empty($this->_anchor) ) + { + $req .= pack ( "N", 0 ); + } else + { + $a =& $this->_anchor; + $req .= pack ( "N", 1 ); + $req .= pack ( "N", strlen($a["attrlat"]) ) . $a["attrlat"]; + $req .= pack ( "N", strlen($a["attrlong"]) ) . $a["attrlong"]; + $req .= $this->_PackFloat ( $a["lat"] ) . $this->_PackFloat ( $a["long"] ); + } + + $req .= pack ( "N", count($this->_indexweights) ); + foreach ( $this->_indexweights as $idx=>$weight ) + $req .= pack ( "N", strlen($idx) ) . $idx . pack ( "N", $weight ); + + $req .= pack ( "N", $this->_maxquerytime ); + + $req .= pack ( "N", count($this->_fieldweights) ); + foreach ( $this->_fieldweights as $field=>$weight ) + $req .= pack ( "N", strlen($field) ) . $field . pack ( "N", $weight ); + + $req .= pack ( "N", strlen($comment) ) . $comment; + + $req .= pack ( "N", count($this->_overrides) ); + foreach ( $this->_overrides as $key => $entry ) + { + $req .= pack ( "N", strlen($entry["attr"]) ) . $entry["attr"]; + $req .= pack ( "NN", $entry["type"], count($entry["values"]) ); + foreach ( $entry["values"] as $id=>$val ) + { + assert ( is_numeric($id) ); + assert ( is_numeric($val) ); + + $req .= sphPackU64 ( $id ); + switch ( $entry["type"] ) + { + case SPH_ATTR_FLOAT: $req .= $this->_PackFloat ( $val ); break; + case SPH_ATTR_BIGINT: $req .= sphPackI64 ( $val ); break; + default: $req .= pack ( "N", $val ); break; + } + } + } + + $req .= pack ( "N", strlen($this->_select) ) . $this->_select; + + $this->_MBPop (); + + $this->_reqs[] = $req; + return count($this->_reqs)-1; + } + + function RunQueries () + { + + if ( empty($this->_reqs) ) + { + $this->_error = "no queries defined, issue AddQuery() first"; + return false; + } + + $this->_MBPush (); + + if (!( $fp = $this->_Connect() )) + { + $this->_MBPop (); + return false; + } + + $nreqs = count($this->_reqs); + $req = join ( "", $this->_reqs ); + $len = 4+strlen($req); + $req = pack ( "nnNN", SEARCHD_COMMAND_SEARCH, VER_COMMAND_SEARCH, $len, $nreqs ) . $req; // add header + if ( !( $this->_Send ( $fp, $req, $len+8 ) ) || + !( $response = $this->_GetResponse ( $fp, VER_COMMAND_SEARCH ) ) ) + { + $this->_MBPop (); + return false; + } + + $this->_reqs = array (); + + return $this->_ParseSearchResponse ( $response, $nreqs ); + } + + function _ParseSearchResponse ( $response, $nreqs ) + { + $p = 0; // current position + $max = strlen($response); // max position for checks, to protect against broken responses + + $results = array (); + for ( $ires=0; $ires<$nreqs && $p<$max; $ires++ ) + { + $results[] = array(); + $result =& $results[$ires]; + + $result["error"] = ""; + $result["warning"] = ""; + + list(,$status) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + $result["status"] = $status; + if ( $status!=SEARCHD_OK ) + { + list(,$len) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + $message = substr ( $response, $p, $len ); $p += $len; + + if ( $status==SEARCHD_WARNING ) + { + $result["warning"] = $message; + } else + { + $result["error"] = $message; + continue; + } + } + + $fields = array (); + $attrs = array (); + + list(,$nfields) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + while ( $nfields-->0 && $p<$max ) + { + list(,$len) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + $fields[] = substr ( $response, $p, $len ); $p += $len; + } + $result["fields"] = $fields; + + list(,$nattrs) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + while ( $nattrs-->0 && $p<$max ) + { + list(,$len) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + $attr = substr ( $response, $p, $len ); $p += $len; + list(,$type) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + $attrs[$attr] = $type; + } + $result["attrs"] = $attrs; + + list(,$count) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + list(,$id64) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + + $idx = -1; + while ( $count-->0 && $p<$max ) + { + $idx++; + + if ( $id64 ) + { + $doc = sphUnpackU64 ( substr ( $response, $p, 8 ) ); $p += 8; + list(,$weight) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + } + else + { + list ( $doc, $weight ) = array_values ( unpack ( "N*N*", + substr ( $response, $p, 8 ) ) ); + $p += 8; + $doc = sphFixUint($doc); + } + $weight = sprintf ( "%u", $weight ); + + if ( $this->_arrayresult ) + $result["matches"][$idx] = array ( "id"=>$doc, "weight"=>$weight ); + else + $result["matches"][$doc]["weight"] = $weight; + + $attrvals = array (); + foreach ( $attrs as $attr=>$type ) + { + if ( $type==SPH_ATTR_BIGINT ) + { + $attrvals[$attr] = sphUnpackI64 ( substr ( $response, $p, 8 ) ); $p += 8; + continue; + } + + if ( $type==SPH_ATTR_FLOAT ) + { + list(,$uval) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + list(,$fval) = unpack ( "f*", pack ( "L", $uval ) ); + $attrvals[$attr] = $fval; + continue; + } + + list(,$val) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + if ( $type & SPH_ATTR_MULTI ) + { + $attrvals[$attr] = array (); + $nvalues = $val; + while ( $nvalues-->0 && $p<$max ) + { + list(,$val) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + $attrvals[$attr][] = sphFixUint($val); + } + } else + { + $attrvals[$attr] = sphFixUint($val); + } + } + + if ( $this->_arrayresult ) + $result["matches"][$idx]["attrs"] = $attrvals; + else + $result["matches"][$doc]["attrs"] = $attrvals; + } + + list ( $total, $total_found, $msecs, $words ) = + array_values ( unpack ( "N*N*N*N*", substr ( $response, $p, 16 ) ) ); + $result["total"] = sprintf ( "%u", $total ); + $result["total_found"] = sprintf ( "%u", $total_found ); + $result["time"] = sprintf ( "%.3f", $msecs/1000 ); + $p += 16; + + while ( $words-->0 && $p<$max ) + { + list(,$len) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + $word = substr ( $response, $p, $len ); $p += $len; + list ( $docs, $hits ) = array_values ( unpack ( "N*N*", substr ( $response, $p, 8 ) ) ); $p += 8; + $result["words"][$word] = array ( + "docs"=>sprintf ( "%u", $docs ), + "hits"=>sprintf ( "%u", $hits ) ); + } + } + + $this->_MBPop (); + return $results; + } + + + function BuildExcerpts ( $docs, $index, $words, $opts=array() ) + { + assert ( is_array($docs) ); + assert ( is_string($index) ); + assert ( is_string($words) ); + assert ( is_array($opts) ); + + $this->_MBPush (); + + if (!( $fp = $this->_Connect() )) + { + $this->_MBPop(); + return false; + } + + + if ( !isset($opts["before_match"]) ) $opts["before_match"] = "<b>"; + if ( !isset($opts["after_match"]) ) $opts["after_match"] = "</b>"; + if ( !isset($opts["chunk_separator"]) ) $opts["chunk_separator"] = " ... "; + if ( !isset($opts["limit"]) ) $opts["limit"] = 256; + if ( !isset($opts["around"]) ) $opts["around"] = 5; + if ( !isset($opts["exact_phrase"]) ) $opts["exact_phrase"] = false; + if ( !isset($opts["single_passage"]) ) $opts["single_passage"] = false; + if ( !isset($opts["use_boundaries"]) ) $opts["use_boundaries"] = false; + if ( !isset($opts["weight_order"]) ) $opts["weight_order"] = false; + + + $flags = 1; // remove spaces + if ( $opts["exact_phrase"] ) $flags |= 2; + if ( $opts["single_passage"] ) $flags |= 4; + if ( $opts["use_boundaries"] ) $flags |= 8; + if ( $opts["weight_order"] ) $flags |= 16; + $req = pack ( "NN", 0, $flags ); // mode=0, flags=$flags + $req .= pack ( "N", strlen($index) ) . $index; // req index + $req .= pack ( "N", strlen($words) ) . $words; // req words + + $req .= pack ( "N", strlen($opts["before_match"]) ) . $opts["before_match"]; + $req .= pack ( "N", strlen($opts["after_match"]) ) . $opts["after_match"]; + $req .= pack ( "N", strlen($opts["chunk_separator"]) ) . $opts["chunk_separator"]; + $req .= pack ( "N", (int)$opts["limit"] ); + $req .= pack ( "N", (int)$opts["around"] ); + + $req .= pack ( "N", count($docs) ); + foreach ( $docs as $doc ) + { + assert ( is_string($doc) ); + $req .= pack ( "N", strlen($doc) ) . $doc; + } + + + $len = strlen($req); + $req = pack ( "nnN", SEARCHD_COMMAND_EXCERPT, VER_COMMAND_EXCERPT, $len ) . $req; // add header + if ( !( $this->_Send ( $fp, $req, $len+8 ) ) || + !( $response = $this->_GetResponse ( $fp, VER_COMMAND_EXCERPT ) ) ) + { + $this->_MBPop (); + return false; + } + + + $pos = 0; + $res = array (); + $rlen = strlen($response); + for ( $i=0; $i<count($docs); $i++ ) + { + list(,$len) = unpack ( "N*", substr ( $response, $pos, 4 ) ); + $pos += 4; + + if ( $pos+$len > $rlen ) + { + $this->_error = "incomplete reply"; + $this->_MBPop (); + return false; + } + $res[] = $len ? substr ( $response, $pos, $len ) : ""; + $pos += $len; + } + + $this->_MBPop (); + return $res; + } + + + + function BuildKeywords ( $query, $index, $hits ) + { + assert ( is_string($query) ); + assert ( is_string($index) ); + assert ( is_bool($hits) ); + + $this->_MBPush (); + + if (!( $fp = $this->_Connect() )) + { + $this->_MBPop(); + return false; + } + + + $req = pack ( "N", strlen($query) ) . $query; // req query + $req .= pack ( "N", strlen($index) ) . $index; // req index + $req .= pack ( "N", (int)$hits ); + + + $len = strlen($req); + $req = pack ( "nnN", SEARCHD_COMMAND_KEYWORDS, VER_COMMAND_KEYWORDS, $len ) . $req; // add header + if ( !( $this->_Send ( $fp, $req, $len+8 ) ) || + !( $response = $this->_GetResponse ( $fp, VER_COMMAND_KEYWORDS ) ) ) + { + $this->_MBPop (); + return false; + } + + + $pos = 0; + $res = array (); + $rlen = strlen($response); + list(,$nwords) = unpack ( "N*", substr ( $response, $pos, 4 ) ); + $pos += 4; + for ( $i=0; $i<$nwords; $i++ ) + { + list(,$len) = unpack ( "N*", substr ( $response, $pos, 4 ) ); $pos += 4; + $tokenized = $len ? substr ( $response, $pos, $len ) : ""; + $pos += $len; + + list(,$len) = unpack ( "N*", substr ( $response, $pos, 4 ) ); $pos += 4; + $normalized = $len ? substr ( $response, $pos, $len ) : ""; + $pos += $len; + + $res[] = array ( "tokenized"=>$tokenized, "normalized"=>$normalized ); + + if ( $hits ) + { + list($ndocs,$nhits) = array_values ( unpack ( "N*N*", substr ( $response, $pos, 8 ) ) ); + $pos += 8; + $res [$i]["docs"] = $ndocs; + $res [$i]["hits"] = $nhits; + } + + if ( $pos > $rlen ) + { + $this->_error = "incomplete reply"; + $this->_MBPop (); + return false; + } + } + + $this->_MBPop (); + return $res; + } + + function EscapeString ( $string ) + { + $from = array ( '\\', '(',')','|','-','!','@','~','"','&', '/', '^', '$', '=' ); + $to = array ( '\\\\', '\(','\)','\|','\-','\!','\@','\~','\"', '\&', '\/', '\^', '\$', '\=' ); + + return str_replace ( $from, $to, $string ); + } + + + function UpdateAttributes ( $index, $attrs, $values, $mva=false ) + { + assert ( is_string($index) ); + assert ( is_bool($mva) ); + + assert ( is_array($attrs) ); + foreach ( $attrs as $attr ) + assert ( is_string($attr) ); + + assert ( is_array($values) ); + foreach ( $values as $id=>$entry ) + { + assert ( is_numeric($id) ); + assert ( is_array($entry) ); + assert ( count($entry)==count($attrs) ); + foreach ( $entry as $v ) + { + if ( $mva ) + { + assert ( is_array($v) ); + foreach ( $v as $vv ) + assert ( is_int($vv) ); + } else + assert ( is_int($v) ); + } + } + + $req = pack ( "N", strlen($index) ) . $index; + + $req .= pack ( "N", count($attrs) ); + foreach ( $attrs as $attr ) + { + $req .= pack ( "N", strlen($attr) ) . $attr; + $req .= pack ( "N", $mva ? 1 : 0 ); + } + + $req .= pack ( "N", count($values) ); + foreach ( $values as $id=>$entry ) + { + $req .= sphPackU64 ( $id ); + foreach ( $entry as $v ) + { + $req .= pack ( "N", $mva ? count($v) : $v ); + if ( $mva ) + foreach ( $v as $vv ) + $req .= pack ( "N", $vv ); + } + } + + if (!( $fp = $this->_Connect() )) + return -1; + + $len = strlen($req); + $req = pack ( "nnN", SEARCHD_COMMAND_UPDATE, VER_COMMAND_UPDATE, $len ) . $req; // add header + if ( !$this->_Send ( $fp, $req, $len+8 ) ) + return -1; + + if (!( $response = $this->_GetResponse ( $fp, VER_COMMAND_UPDATE ) )) + return -1; + + list(,$updated) = unpack ( "N*", substr ( $response, 0, 4 ) ); + return $updated; + } + + + function Open() + { + if ( $this->_socket !== false ) + { + $this->_error = 'already connected'; + return false; + } + if ( !$fp = $this->_Connect() ) + return false; + + $req = pack ( "nnNN", SEARCHD_COMMAND_PERSIST, 0, 4, 1 ); + if ( !$this->_Send ( $fp, $req, 12 ) ) + return false; + + $this->_socket = $fp; + return true; + } + + function Close() + { + if ( $this->_socket === false ) + { + $this->_error = 'not connected'; + return false; + } + + fclose ( $this->_socket ); + $this->_socket = false; + + return true; + } + + + function Status () + { + $this->_MBPush (); + if (!( $fp = $this->_Connect() )) + { + $this->_MBPop(); + return false; + } + + $req = pack ( "nnNN", SEARCHD_COMMAND_STATUS, VER_COMMAND_STATUS, 4, 1 ); // len=4, body=1 + if ( !( $this->_Send ( $fp, $req, 12 ) ) || + !( $response = $this->_GetResponse ( $fp, VER_COMMAND_STATUS ) ) ) + { + $this->_MBPop (); + return false; + } + + $res = substr ( $response, 4 ); // just ignore length, error handling, etc + $p = 0; + list ( $rows, $cols ) = array_values ( unpack ( "N*N*", substr ( $response, $p, 8 ) ) ); $p += 8; + + $res = array(); + for ( $i=0; $i<$rows; $i++ ) + for ( $j=0; $j<$cols; $j++ ) + { + list(,$len) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + $res[$i][] = substr ( $response, $p, $len ); $p += $len; + } + + $this->_MBPop (); + return $res; + } +} \ No newline at end of file diff --git a/include/sql.func.php b/include/sql.func.php new file mode 100644 index 0000000..954fb01 --- /dev/null +++ b/include/sql.func.php @@ -0,0 +1,82 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +function sql_split($sql) { + global $CFG; + if($CFG['db_charset']) $sql = DB::version() > '4.1' ? preg_replace("/TYPE=(MyISAM|InnoDB|HEAP|MEMORY)( DEFAULT CHARSET=[^; ]+)?/", "ENGINE=\\1 DEFAULT CHARSET=".$CFG['db_charset'], $sql) : preg_replace("/( DEFAULT CHARSET=[^; ]+)?/", '', $sql); + if(DT_PRE != 'destoon_') $sql = str_replace('destoon_', DT_PRE, $sql); + $sql = str_replace("\r", "\n", $sql); + $sql = str_replace("; \n", ";\n", $sql); + $ret = array(); + $num = 0; + $queriesarray = explode(";\n", trim($sql)); + unset($sql); + foreach($queriesarray as $query) { + $ret[$num] = ''; + $queries = explode("\n", trim($query)); + $queries = array_filter($queries); + foreach($queries as $query) { + $str1 = substr($query, 0, 1); + if($str1 != '#' && $str1 != '-') $ret[$num] .= $query; + } + $num++; + } + return $ret; +} + +function sql_execute($sql) { + $sqls = sql_split($sql); + if(is_array($sqls)) { + foreach($sqls as $sql) { + if(trim($sql) != '') DB::query($sql); + } + } else { + DB::query($sqls); + } + return true; +} + +function sql_dumptable($table, $startfrom = 0, $currsize = 0) { + global $db, $sizelimit, $startrow, $sqlcompat, $sqlcharset, $dumpcharset, $CFG; + if(!isset($tabledump)) $tabledump = ''; + $offset = 100; + if(!$startfrom) { + $tabledump = "DROP TABLE IF EXISTS `$table`;\n"; + $createtable = $db->query("SHOW CREATE TABLE `$table`"); + $create = $db->fetch_row($createtable); + $tabledump .= $create[1].";\n\n"; + if($sqlcompat == 'MYSQL41' && $db->version() < '4.1') $tabledump = preg_replace("/TYPE\=([a-zA-Z0-9]+)/", "ENGINE=\\1 DEFAULT CHARSET=".$dumpcharset, $tabledump); + if($db->version() > '4.1' && $sqlcharset) $tabledump = preg_replace("/(DEFAULT)*\s*CHARSET=[a-zA-Z0-9]+/", "DEFAULT CHARSET=".$sqlcharset, $tabledump); + } + $tabledumped = 0; + $numrows = $offset; + while($currsize + strlen($tabledump) < $sizelimit * 1000 && $numrows == $offset) { + $tabledumped = 1; + $rows = $db->query("SELECT * FROM `$table` LIMIT $startfrom, $offset"); + $numfields = $db->num_fields($rows); + $numrows = $db->num_rows($rows); + while($row = $db->fetch_row($rows)) { + $comma = ""; + $tabledump .= "INSERT INTO `$table` VALUES("; + for($i = 0; $i < $numfields; $i++) { + if($CFG['database'] == 'mysql') { + $tabledump .= $comma."'".mysql_escape_string($row[$i])."'"; + } else if($CFG['database'] == 'mysqli') { + $tabledump .= $comma."'".mysqli_escape_string($db->connid, $row[$i])."'"; + } else { + $tabledump .= $comma."'".addslashes($row[$i])."'"; + } + $comma = ","; + } + $tabledump .= ");\n"; + } + $startfrom += $offset; + } + $startrow = $startfrom; + $tabledump .= "\n"; + return $tabledump; +} +?> \ No newline at end of file diff --git a/include/tag.func.php b/include/tag.func.php new file mode 100644 index 0000000..bf7cab0 --- /dev/null +++ b/include/tag.func.php @@ -0,0 +1,133 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +function tag($parameter, $expires = -1) { + global $CFG, $MODULE, $DT, $DT_PC; + $tag_expires = $expires > -1 ? $expires : $CFG['db_expires']; + $parameter = str_replace(array('&', '%'), array('', '##'), $parameter); + parse_str($parameter, $par); + if(!is_array($par)) return ''; + $par = dstripslashes($par); + extract($par, EXTR_SKIP); + isset($prefix) or $prefix = DT_PRE; + isset($moduleid) or $moduleid = 1; + if(!isset($MODULE[$moduleid])) return ''; + isset($fields) or $fields = '*'; + isset($catid) or $catid = 0; + isset($child) or $child = 1; + isset($areaid) or $areaid = 0; + isset($areachild) or $areachild = 1; + (isset($dir) && check_name($dir)) or $dir = 'tag'; + (isset($template) && check_name($template)) or $template = 'list'; + isset($condition) or $condition = '1'; + isset($group) or $group = ''; + isset($page) or $page = 1; + isset($offset) or $offset = 0; + isset($pagesize) or $pagesize = 10; + isset($order) or $order = ''; + isset($showpage) or $showpage = 0; + isset($showcat) or $showcat = 0; + isset($datetype) or $datetype = 0; + isset($target) or $target = ''; + isset($class) or $class = ''; + isset($length) or $length = 1; + isset($introduce) or $introduce = 0; + isset($debug) or $debug = 0; + isset($lazy) or $lazy = 0; + (isset($cols) && $cols) or $cols = 1; + if($catid) { + if($moduleid > 4) { + if(is_numeric($catid)) { + $CAT = DB::get_one("SELECT child,arrchildid,moduleid FROM ".DT_PRE."category WHERE catid=$catid"); + $condition .= ($child && $CAT['child'] && $CAT['moduleid'] == $moduleid) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid"; + } else { + if($child) { + $catids = ''; + $result = DB::query("SELECT arrchildid FROM ".DT_PRE."category WHERE catid IN ($catid)"); + while($r = DB::fetch_array($result)) { + $catids .= ','.$r['arrchildid']; + } + if($catids) $catid = substr($catids, 1); + } + $condition .= " AND catid IN ($catid)"; + } + } else if($moduleid == 4) { + $condition .= " AND catids LIKE '%,$catid,%'"; + } + } + if($areaid) { + if(is_numeric($areaid)) { + $ARE = DB::get_one("SELECT child,arrchildid FROM ".DT_PRE."area WHERE areaid=$areaid"); + $condition .= ($areachild && $ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid"; + } else { + if($areachild) { + $areaids = ''; + $result = DB::query("SELECT arrchildid FROM ".DT_PRE."area WHERE areaid IN ($areaid)"); + while($r = DB::fetch_array($result)) { + $areaids .= ','.$r['arrchildid']; + } + if($areaids) $areaid = substr($areaids, 1); + } + $condition .= " AND areaid IN ($areaid)"; + } + } + $table = isset($table) ? $prefix.$table : get_table($moduleid); + $offset or $offset = ($page-1)*$pagesize; + $percent = dround(100/$cols).'%'; + $num = 0; + $order = $order ? ' ORDER BY '.$order : ''; + $condition = stripslashes($condition); + $condition = str_replace('##', '%', $condition); + if($showpage) { + $num = DB::count($table, $condition, $tag_expires); + $pages = $catid ? listpages(get_cat($catid), $num, $page, $pagesize) : pages($num, $page, $pagesize); + } else { + if($group) $condition .= ' GROUP BY '.$group; + } + $query = "SELECT ".$fields." FROM ".$table." WHERE ".$condition.$order." LIMIT ".$offset.",".$pagesize; + if($debug) echo $parameter.'<br/>'.$query.'<br/>'; + $tags = $catids = $CATS = array(); + $result = DB::query($query, $tag_expires > 0 ? 'CACHE' : '', $tag_expires); + while($r = DB::fetch_array($result)) { + if($moduleid == 4 && isset($r['company'])) { + $r['alt'] = $r['title'] = $r['companyname'] = $r['company']; + if($length > 1) $r['company'] = dsubstr($r['company'], $length); + } + if(isset($r['title'])) { + $r['title'] = str_replace('"', '"', trim($r['title'])); + $r['alt'] = $r['title']; + if($length > 1) $r['title'] = dsubstr($r['title'], $length); + if(isset($r['style']) && $r['style']) $r['title'] = set_style($r['title'], $r['style']); + } + if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" class="lazy" original="'.$r['thumb']; + if(isset($r['thumb']) && isset($width) && $width > 100) $r['thumb'] = str_replace('.thumb.', '.middle.', $r['thumb']); + if(isset($r['introduce']) && $introduce) $r['introduce'] = dsubstr($r['introduce'], $introduce); + if(isset($r['linkurl']) && $r['linkurl'] && $moduleid > 4) { + if($DT_PC) { + if(strpos($r['linkurl'], '://') === false) $r['linkurl'] = $MODULE[$moduleid]['linkurl'].$r['linkurl']; + } else { + $r['linkurl'] = strpos($r['linkurl'], '://') === false ? $MODULE[$moduleid]['mobile'].$r['linkurl'] : moburl($r['linkurl']); + } + } + if($showcat && $moduleid > 4 && isset($r['catid'])) $catids[$r['catid']] = $r['catid']; + $tags[] = $r; + } + if($showcat && $moduleid > 4 && $catids) { + $result = DB::query("SELECT catid,catname,linkurl FROM ".DT_PRE."category WHERE catid IN (".implode(',', $catids).")"); + while($r = DB::fetch_array($result)) { + $CATS[$r['catid']] = $r; + } + if($CATS) { + foreach($tags as $k=>$v) { + $tags[$k]['catname'] = $v['catid'] ? $CATS[$v['catid']]['catname'] : ''; + $tags[$k]['caturl'] = $v['catid'] ? ($DT_PC ? $MODULE[$moduleid]['linkurl'] : $MODULE[$moduleid]['mobile']).$CATS[$v['catid']]['linkurl'] : ''; + } + } + } + if($template == 'null') return $tags; + include template($template, $dir); +} +?> \ No newline at end of file diff --git a/include/template.func.php b/include/template.func.php new file mode 100644 index 0000000..4f421dd --- /dev/null +++ b/include/template.func.php @@ -0,0 +1,43 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +function template_compile($from, $to) { + $content = template_parse(file_get($from)); + file_put($to, $content); +} + +function template_parse($str) { + $str = str_replace(array("\t", '{exit}'), array('', '<?php exit;?>'), $str); + $str = preg_replace("/\<\!\-\-\[(.+?)\]\-\-\>/", "", $str); + $str = preg_replace("/\<\!\-\-\{(.+?)\}\-\-\>/s", "{\\1}", $str); + $str = preg_replace("/\{template\s+([^\}]+)\}/", "<?php include template(\\1);?>", $str); + $str = preg_replace("/\{php\s+(.+)\}/", "<?php \\1?>", $str); + $str = preg_replace("/\{if\s+(.+?)\}/", "<?php if(\\1) { ?>", $str); + $str = preg_replace("/\{else\}/", "<?php } else { ?>", $str); + $str = preg_replace("/\{elseif\s+(.+?)\}/", "<?php } else if(\\1) { ?>", $str); + $str = preg_replace("/\{\/if\}/", "<?php } ?>", $str); + $str = preg_replace("/\{loop\s+(\S+)\s+(\S+)\}/", "<?php if(is_array(\\1)) { foreach(\\1 as \\2) { ?>", $str); + $str = preg_replace("/\{loop\s+(\S+)\s+(\S+)\s+(\S+)\}/", "<?php if(is_array(\\1)) { foreach(\\1 as \\2 => \\3) { ?>", $str); + $str = preg_replace("/\{\/loop\}/", "<?php } } ?>", $str); + $str = preg_replace("/\{([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\:\x7f-\xff]*\(([^{}]*)\))\}/", "<?php echo \\1;?>", $str); + $str = preg_replace_callback("/<\?php([^\?]+)\?>/s", "template_addquote1", $str); + $str = preg_replace("/\{(\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\+\-\x7f-\xff]*)\}/", "<?php echo \\1;?>", $str); + $str = preg_replace_callback("/\{(\\$[a-zA-Z0-9_\[\]\'\"\$\+\-\x7f-\xff]+)\}/s", "template_addquote2", $str); + $str = preg_replace("/\{([A-Z_\x7f-\xff][A-Z0-9_\x7f-\xff]*)\}/s", "<?php echo \\1;?>", $str); + $str = preg_replace("/\'([A-Za-z]+)\[\'([A-Za-z\.]+)\'\](.?)\'/s", "'\\1[\\2]\\3'", $str); + $str = preg_replace("/(\r?\n)\\1+/", "\\1", $str); + $str = "<?php defined('IN_DESTOON') or exit('Access Denied');?>".trim($str); + return $str; +} + +function template_addquote1($matches) { + return str_replace("\\\"", "\"", preg_replace("/\[([a-zA-Z0-9_\-\.\x7f-\xff]+)\]/s", "['\\1']", $matches[0])); +} + +function template_addquote2($matches) { + return '<?php echo '.str_replace("\\\"", "\"", preg_replace("/\[([a-zA-Z0-9_\-\.\x7f-\xff]+)\]/s", "['\\1']", $matches[1])).';?>'; +} +?> \ No newline at end of file diff --git a/include/tree.class.php b/include/tree.class.php new file mode 100644 index 0000000..c181c32 --- /dev/null +++ b/include/tree.class.php @@ -0,0 +1,86 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class tree { + var $arr; + var $icon; + var $ret; + + function __construct($arr = array()) { + $this->arr = $arr; + $this->icon = array('│', '├', '└'); + $this->ret = ''; + return is_array($arr); + } + + function tree($arr = array()) { + $this->__construct($arr); + } + + function get_parent($myid) { + $newarr = array(); + if(!isset($this->arr[$myid])) return false; + $pid = $this->arr[$myid]['parentid']; + $pid = $this->arr[$pid]['parentid']; + if(is_array($this->arr)) { + foreach($this->arr as $id => $a) { + if($a['parentid'] == $pid) $newarr[$id] = $a; + } + } + return $newarr; + } + + function get_child($myid) { + $a = $newarr = array(); + if(is_array($this->arr)) { + foreach($this->arr as $id => $a) { + if($a['parentid'] == $myid) $newarr[$id] = $a; + } + } + return $newarr ? $newarr : false; + } + + function get_pos($myid, &$newarr) { + $a = array(); + if(!isset($this->arr[$myid])) return false; + $newarr[] = $this->arr[$myid]; + $pid = $this->arr[$myid]['parentid']; + if(isset($this->arr[$pid])) $this->get_pos($pid,$newarr); + if(is_array($newarr)) { + krsort($newarr); + foreach($newarr as $v) { + $a[$v['id']] = $v; + } + } + return $a; + } + + function get_tree($myid, $str, $sid = 0, $adds = '') { + $number=1; + $child = $this->get_child($myid); + if(is_array($child)) { + $total = count($child); + foreach($child as $id=>$a) { + $j = $k = ''; + if($number == $total) { + $j .= $this->icon[2]; + }else{ + $j .= $this->icon[1]; + $k = $adds ? $this->icon[0] : ''; + } + $spacer = $adds ? $adds.$j : ''; + $selected = $id == $sid ? 'selected' : ''; + extract($a); + eval("\$nstr = \"$str\";"); + $this->ret .= $nstr; + $this->get_tree($id, $str, $sid, $adds.$k.' '); + $number++; + } + } + return $this->ret; + } +} +?> \ No newline at end of file diff --git a/include/type.class.php b/include/type.class.php new file mode 100644 index 0000000..c54a1dc --- /dev/null +++ b/include/type.class.php @@ -0,0 +1,85 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class dtype { + var $item; + var $table; + var $cache = 0; + + function __construct() { + $this->table = DT_PRE.'type'; + } + + function dtype() { + $this->__construct(); + } + + function get_list() { + $lists = array(); + $result = DB::query("SELECT * FROM {$this->table} WHERE item='$this->item' ORDER BY listorder ASC,typeid DESC "); + while($r = DB::fetch_array($result)) { + $lists[$r['typeid']] = $r; + } + return $lists; + } + + function update($post) { + $this->add($post[0]); + unset($post[0]); + foreach($post as $k=>$v) { + if(isset($v['delete'])) { + $this->delete($k); + unset($post[$k]); + } + } + $this->edit($post); + if($this->cache) cache_type($this->item); + return true; + } + + function add($post) { + global $TYPE; + $post['typename'] = dhtmlspecialchars(trim(strip_tags($post['typename']))); + if(strlen($post['typename']) < 2) return false; + $post['listorder'] = intval($post['listorder']); + $post['parentid'] = intval($post['parentid']); + if($post['parentid'] && !isset($TYPE[$post['parentid']])) $post['parentid'] = 0; + $post['style'] = dhtmlspecialchars($post['style']); + DB::query("INSERT INTO {$this->table} (listorder,typename,style,parentid,item,cache) VALUES('$post[listorder]','$post[typename]','$post[style]','$post[parentid]','$this->item','$this->cache')"); + } + + function edit($post) { + global $TYPE; + foreach($post as $k=>$v) { + $v['typename'] = dhtmlspecialchars(trim(strip_tags($v['typename']))); + if(strlen($v['typename']) < 2) continue; + $v['listorder'] = intval($v['listorder']); + $v['parentid'] = intval($v['parentid']); + if($v['parentid'] == $k) continue; + if($v['parentid'] && !isset($TYPE[$v['parentid']])) continue; + $v['style'] = dhtmlspecialchars($v['style']); + $k = intval($k); + DB::query("UPDATE {$this->table} SET listorder='$v[listorder]',typename='$v[typename]',style='$v[style]',parentid='$v[parentid]' WHERE typeid='$k' AND item='$this->item'"); + } + } + + function delete($typeid) { + $typeid = intval($typeid); + if($typeid < 1) return; + DB::query("DELETE FROM {$this->table} WHERE typeid=$typeid AND item='$this->item'"); + DB::query("DELETE FROM {$this->table} WHERE parentid=$typeid AND item='$this->item'"); + if($this->cache) cache_type($this->item); + } + + function parent_option($TYPE) { + $s = ''; + foreach($TYPE as $v) { + if($v['parentid'] == 0) $s .= '<option value="'.$v['typeid'].'">'.$v['typename'].'</option>'; + } + return $s; + } +} +?> \ No newline at end of file diff --git a/include/update.inc.php b/include/update.inc.php new file mode 100644 index 0000000..7594d8a --- /dev/null +++ b/include/update.inc.php @@ -0,0 +1,16 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +if($DT_BOT) return; +if($page == 1 && $MOD['hits']) { + if($DT['cache_hits']) { + cache_hits($moduleid, $itemid); + } else { + $update .= ',hits=hits+1'; + } +} +if($update) $db->query("UPDATE LOW_PRIORITY {$table} SET ".substr($update, 1)." WHERE itemid=$itemid", 'UNBUFFERED'); +?> \ No newline at end of file diff --git a/include/upload.class.php b/include/upload.class.php new file mode 100644 index 0000000..8b4723e --- /dev/null +++ b/include/upload.class.php @@ -0,0 +1,112 @@ +<?php +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +defined('IN_DESTOON') or exit('Access Denied'); +class upload { + var $file; + var $file_name; + var $file_size; + var $file_type; + var $file_error; + var $savename; + var $savepath; + var $saveto; + var $fileformat = ''; + var $overwrite = false; + var $maxsize; + var $ext; + var $errmsg = errmsg; + var $userid; + var $image; + var $adduserid = true; + + function __construct($_file, $savepath, $savename = '', $fileformat = '') { + global $DT, $_userid; + foreach($_file as $file) { + $this->file = $file['tmp_name']; + $this->file_name = $file['name']; + $this->file_size = $file['size']; + $this->file_type = $file['type']; + $this->file_error = $file['error']; + break; + } + $this->userid = $_userid; + $this->ext = file_ext($this->file_name); + $this->fileformat = $fileformat ? $fileformat : $DT['uploadtype']; + $this->maxsize = $DT['uploadsize'] ? $DT['uploadsize']*1024 : 2048*1024; + $this->savepath = $savepath; + $this->savename = $savename; + } + + function upload($_file, $savepath, $savename = '', $fileformat = '') { + $this->__construct($_file, $savepath, $savename, $fileformat); + } + + function save() { + include load('include.lang'); + if($this->file_error) return $this->_('Error(21)'.$L['upload_failed'].' ('.$L['upload_error_'.$this->file_error].')'); + if($this->maxsize > 0 && $this->file_size > $this->maxsize) return $this->_('Error(22)'.$L['upload_size_limit'].' ('.intval($this->maxsize/1024).'Kb)'); + if(!$this->is_allow()) return $this->_('Error(23)'.$L['upload_not_allow']); + $this->set_savepath($this->savepath); + $this->set_savename($this->savename); + if(!is_writable(DT_ROOT.'/'.$this->savepath)) return $this->_('Error(24)'.$L['upload_unwritable']); + if(!is_uploaded_file($this->file)) return $this->_('Error(25)'.$L['upload_failed']); + if(!move_uploaded_file($this->file, DT_ROOT.'/'.$this->saveto)) return $this->_('Error(26)'.$L['upload_failed']); + $this->image = $this->is_image(); + if(DT_CHMOD) @chmod(DT_ROOT.'/'.$this->saveto, DT_CHMOD); + return true; + } + + function is_allow() { + if(!$this->fileformat) return false; + if(!preg_match("/^(".$this->fileformat.")$/i", $this->ext)) return false; + if(preg_match("/^(php|phtml|php3|php4|jsp|exe|dll|cer|shtml|shtm|asp|asa|aspx|asax|ashx|cgi|fcgi|pl)$/i", $this->ext)) return false; + if($this->savename) { + $ext = file_ext($this->savename); + if(!preg_match("/^(".$this->fileformat.")$/i", $ext)) return false; + if(preg_match("/^(php|phtml|php3|php4|jsp|exe|dll|cer|shtml|shtm|asp|asa|aspx|asax|ashx|cgi|fcgi|pl)$/i", $ext)) return false; + } + return true; + } + + function is_image() { + return preg_match("/^(jpg|jpeg|gif|png|bmp)$/i", $this->ext); + } + + function set_savepath($savepath) { + $savepath = str_replace("\\", "/", $savepath); + $savepath = substr($savepath, -1) == "/" ? $savepath : $savepath."/"; + $this->savepath = $savepath; + } + + function set_savename($savename) { + if($savename) { + $this->savename = $this->adduserid ? str_replace('.'.$this->ext, $this->userid.'.'.$this->ext, $savename) : $savename; + } else { + $name = date('His', DT_TIME).mt_rand(10, 99); + $this->savename = $this->adduserid ? $name.$this->userid.'.'.$this->ext : $name.'.'.$this->ext; + } + $this->saveto = $this->savepath.$this->savename; + if(!$this->overwrite && is_file(DT_ROOT.'/'.$this->saveto)) { + $i = 1; + while($i) { + $saveto = str_replace('.'.$this->ext, '('.$i.').'.$this->ext, $this->saveto); + if(is_file(DT_ROOT.'/'.$saveto)) { + $i++; + continue; + } else { + $this->saveto = $saveto; + break; + } + } + } + } + + function _($e) { + $this->errmsg = $e; + return false; + } +} +?> \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..eb64149 --- /dev/null +++ b/index.html @@ -0,0 +1,700 @@ +<!doctype html> +<html> +<head> +<meta charset="UTF-8"/> +<title>找标牌网-数字标牌,广告牌,标识标牌行业门户网站 + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    找标牌网 + +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + + +
    +
    + +
    +
      +
    • +
    • +
    +
    +
    +
    +
    +
    精品企业战略合作伙伴 让采购更安心
    + +
    +
    +
    + +
    + +
    + +
    +
    +
    + +
    + +
    + +
    +
    +
    + +
    + +
    + +
    +
    +
    + +
    + +
    + +
    +
    +
    + +
    + +
    + +
    +
    +
    + + + + + + +
    + +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + +
    + + +
    + + + + \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..cb8cba4 --- /dev/null +++ b/index.php @@ -0,0 +1,78 @@ +get_one("SELECT userid FROM {$DT_PRE}company WHERE domain='$w3'"); + if($c) d301('http://'.$w3); + } + $c = $db->get_one("SELECT username,domain FROM {$DT_PRE}company WHERE domain='$whost'".($host == $whost ? '' : " OR domain='$host'"), 'CACHE'); + if($c) { + $username = $homepage = $c['username']; + $domain = $c['domain']; + } + } + } +} +if($username) { + $moduleid = 4; + $module = 'company'; + $MOD = cache_read('module-'.$moduleid.'.php'); + include load('company.lang'); + require DT_ROOT.'/module/'.$module.'/common.inc.php'; + include DT_ROOT.'/module/'.$module.'/init.inc.php'; +} else { + if($DT['safe_domain']) { + $safe_domain = explode('|', $DT['safe_domain']); + $pass_domain = false; + foreach($safe_domain as $v) { + if(strpos($DT_URL, $v) !== false) { $pass_domain = true; break; } + } + $pass_domain or dhttp(404); + } + if($DT['index_html']) { + $html_file = $CFG['com_dir'] ? DT_ROOT.'/'.$DT['index'].'.'.$DT['file_ext'] : DT_CACHE.'/index.inc.html'; + if(!is_file($html_file)) tohtml('index'); + if(is_file($html_file)) exit(include($html_file)); + } + $AREA or $AREA = cache_read('area.php'); + if($EXT['mobile_enable']) $head_mobile = DT_MOB; + $index = 1; + $seo_title = $DT['seo_title']; + $head_keywords = $DT['seo_keywords']; + $head_description = $DT['seo_description']; + $CSS = array('index'); + if($city_template) { + include template($city_template, 'city'); + } else { + include template('index'); + } +} +?> \ No newline at end of file diff --git a/invest/ajax.php b/invest/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/invest/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/invest/config.inc.php b/invest/config.inc.php new file mode 100644 index 0000000..3d08c75 --- /dev/null +++ b/invest/config.inc.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/invest/index.php b/invest/index.php new file mode 100644 index 0000000..bc1e764 --- /dev/null +++ b/invest/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/invest/list.php b/invest/list.php new file mode 100644 index 0000000..ec13ccd --- /dev/null +++ b/invest/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/invest/message.php b/invest/message.php new file mode 100644 index 0000000..e14a71b --- /dev/null +++ b/invest/message.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/invest/search.php b/invest/search.php new file mode 100644 index 0000000..61329a1 --- /dev/null +++ b/invest/search.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/invest/show.php b/invest/show.php new file mode 100644 index 0000000..9b1762b --- /dev/null +++ b/invest/show.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/job/ajax.php b/job/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/job/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/job/apply.php b/job/apply.php new file mode 100644 index 0000000..5918101 --- /dev/null +++ b/job/apply.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/job/config.inc.php b/job/config.inc.php new file mode 100644 index 0000000..ed13ddc --- /dev/null +++ b/job/config.inc.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/job/index.php b/job/index.php new file mode 100644 index 0000000..a51a7e9 --- /dev/null +++ b/job/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/job/list.php b/job/list.php new file mode 100644 index 0000000..045835f --- /dev/null +++ b/job/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/job/resume.php b/job/resume.php new file mode 100644 index 0000000..c7e13ed --- /dev/null +++ b/job/resume.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/job/search.php b/job/search.php new file mode 100644 index 0000000..7a514e3 --- /dev/null +++ b/job/search.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/job/show.php b/job/show.php new file mode 100644 index 0000000..8291290 --- /dev/null +++ b/job/show.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/job/talent.php b/job/talent.php new file mode 100644 index 0000000..a2ab5a4 --- /dev/null +++ b/job/talent.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/know/ajax.php b/know/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/know/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/know/answer.php b/know/answer.php new file mode 100644 index 0000000..10b5015 --- /dev/null +++ b/know/answer.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/know/config.inc.php b/know/config.inc.php new file mode 100644 index 0000000..0c41dc1 --- /dev/null +++ b/know/config.inc.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/know/expert.php b/know/expert.php new file mode 100644 index 0000000..1071f4a --- /dev/null +++ b/know/expert.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/know/faq.php b/know/faq.php new file mode 100644 index 0000000..c701591 --- /dev/null +++ b/know/faq.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/know/index.php b/know/index.php new file mode 100644 index 0000000..f761885 --- /dev/null +++ b/know/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/know/list.php b/know/list.php new file mode 100644 index 0000000..3c8d19b --- /dev/null +++ b/know/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/know/search.php b/know/search.php new file mode 100644 index 0000000..87f470d --- /dev/null +++ b/know/search.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/know/show.php b/know/show.php new file mode 100644 index 0000000..685816d --- /dev/null +++ b/know/show.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/lang/index.html b/lang/index.html new file mode 100644 index 0000000..c1e1f00 --- /dev/null +++ b/lang/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lang/these.name.php b/lang/these.name.php new file mode 100644 index 0000000..23a0c23 --- /dev/null +++ b/lang/these.name.php @@ -0,0 +1,5 @@ + '简体中文', +); +?> \ No newline at end of file diff --git a/lang/zh-cn/article.inc.php b/lang/zh-cn/article.inc.php new file mode 100644 index 0000000..cd591bb --- /dev/null +++ b/lang/zh-cn/article.inc.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/lang/zh-cn/brand.inc.php b/lang/zh-cn/brand.inc.php new file mode 100644 index 0000000..55b71cb --- /dev/null +++ b/lang/zh-cn/brand.inc.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/lang/zh-cn/buy.inc.php b/lang/zh-cn/buy.inc.php new file mode 100644 index 0000000..55b71cb --- /dev/null +++ b/lang/zh-cn/buy.inc.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/lang/zh-cn/club.inc.php b/lang/zh-cn/club.inc.php new file mode 100644 index 0000000..a3aeff3 --- /dev/null +++ b/lang/zh-cn/club.inc.php @@ -0,0 +1,84 @@ +'红色', '0000FF'=>'蓝色', 'FF6600'=>'橙色'); +$MANAGE = array('类型', '删除', '修改', '加精', '置顶', '高亮'); +$L['chat_title'] = '圈子群聊'; +$L['fans_title'] = '圈子成员'; +$L['join_pass_reason'] = '请填写加入理由'; +$L['join_pass_max_reason'] = '加入原因最多500字'; +$L['manage_has_del'] = '已经删除,无法查看'; +$L['manage_cancel'] = '取消'; +$L['manage_level'] = '精华'; +$L['manage_ontop_1'] = '本圈'; +$L['manage_ontop_2'] = '全局'; +$L['group_pass_title'] = '请填写商圈名称'; +$L['group_pass_thumb'] = '请上传商圈LOGO'; +$L['group_pass_username'] = '请填写创建者'; +$L['manage_msg_title'] = '您的{V0}“{V1}”被执行{V2}操作'; +$L['manage_msg_content'] = '原文地址:{V0}
    操作原因:{V1}
    操作人:{V2}
    如果您对此操作有异议,请及时与网站联系。'; +$L['my_not_admin'] = '您没有此商圈管理权限'; +$L['my_choose_group'] = '请选择商圈'; +$L['my_choose_fans'] = '请选择粉丝'; +$L['my_choose_post'] = '请选择帖子'; +$L['my_choose_reply'] = '请选择回复'; +$L['my_not_group'] = '商圈不存在'; +$L['my_not_post'] = '帖子不存在'; +$L['my_not_reply'] = '回复不存在'; +$L['my_baned'] = '您已被禁言'; +$L['my_title'] = '我的帖子'; +$L['my_fans_title'] = '粉丝管理'; +$L['success_checked'] = '审核成功'; +$L['success_cancel'] = '取消成功'; +$L['success_reject'] = '拒绝成功'; +$L['my_fans_fields'] = array('会员名', '申请理由'); +$L['my_group_title'] = '我的商圈'; +$L['my_join_title'] = '加入商圈'; +$L['my_join_repeat'] = '您已经是该圈成员了'; +$L['my_join_check'] = '您已经申请加入该圈了,请等待圈主审核'; +$L['my_reply_title'] = '我的回复'; +$L['my_reply_at'] = ' 发表于 '; +$L['my_manage_title'] = '商圈管理'; +$L['my_manage_reason'] = '操作原因'; +$L['my_manage_input_reason'] = '请填写操作原因'; +$L['my_manage_not_level'] = '精华类型不存在'; +$L['my_manage_post'] = '帖子管理'; +$L['my_manage_reply'] = '回复管理'; +$L['my_manage_type_post'] = '帖子'; +$L['my_manage_type_reply'] = '回复'; +$L['my_manage_type_edit'] = '修改'; +$L['my_manage_type_del'] = '删除'; +$L['my_manage_type_style'] = '高亮'; +$L['my_manage_type_style_cancel'] = '取消高亮'; +$L['my_manage_type_ontop'] = '置顶'; +$L['my_manage_type_ontop_cancel'] = '取消置顶'; +$L['my_manage_type_level'] = '加入精华'; +$L['my_manage_type_level_cancel'] = '取消精华'; +$L['post_title'] = '发表帖子'; +$L['post_no_rights'] = '无发帖权限'; +$L['post_too_many'] = '发帖数量超出限制'; +$L['post_too_many_today'] = '今日发帖数量超出限制'; +$L['post_msg_fee'] = '发帖需要收费,请切换到'; +$L['post_msg_advance'] = '高级模式'; +$L['post_success_edit'] = '帖子修改成功'; +$L['post_success_del'] = '帖子删除成功'; +$L['post_success_style'] = '高亮设置成功'; +$L['post_cancel_style'] = '高亮取消成功'; +$L['post_success_ontop'] = '置顶设置成功'; +$L['post_cancel_ontop'] = '置顶取消成功'; +$L['post_success_level'] = '精华设置成功'; +$L['post_cancel_level'] = '精华取消成功'; +$L['reply_success_edit'] = '回复修改成功'; +$L['reply_success_del'] = '回复删除成功'; +$L['reply_no_rights'] = '无回复权限'; +$L['reply_too_many'] = '回复数量超出限制'; +$L['reply_title'] = '发表回复'; +$L['my_fields_post'] = array('模糊', '标题', '会员名'); +$L['my_fields_reply'] = array('内容', '会员名'); +$L['my_fields_manage'] = array('主题/回复', '操作原因', '操作内容'); +$L['msg_not_fans'] = '请先加入商圈'; +?> \ No newline at end of file diff --git a/lang/zh-cn/company.inc.php b/lang/zh-cn/company.inc.php new file mode 100644 index 0000000..c65f8d8 --- /dev/null +++ b/lang/zh-cn/company.inc.php @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/lang/zh-cn/down.inc.php b/lang/zh-cn/down.inc.php new file mode 100644 index 0000000..1dcdce7 --- /dev/null +++ b/lang/zh-cn/down.inc.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/lang/zh-cn/exhibit.inc.php b/lang/zh-cn/exhibit.inc.php new file mode 100644 index 0000000..5b764d7 --- /dev/null +++ b/lang/zh-cn/exhibit.inc.php @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/lang/zh-cn/extend.inc.php b/lang/zh-cn/extend.inc.php new file mode 100644 index 0000000..1e8a594 --- /dev/null +++ b/lang/zh-cn/extend.inc.php @@ -0,0 +1,144 @@ +已过期'; +$L['status_not_start'] = '未开始'; +$L['status_displaying'] = '投放中'; +$L['timeless'] = '不限'; +$L['spread_title'] = '排名推广'; +$L['spread_pass_word'] = '请填写关键词'; +$L['spread_pass_price'] = '请填写出价'; +$L['spread_pass_period'] = '请填写投放时段'; +$L['spread_pass_tid'] = '请填写信息ID'; +$L['spread_pass_username'] = '请填写会员名称'; +$L['spread_msg_buy'] = '您已经购买过此关键字了'; +$L['spread_msg_over'] = '{V0}本轮竞价已经结束'; +$L['spread_msg_price_min'] = '出价不能低于起价'; +$L['spread_msg_step'] = '请按加价幅度加价'; +$L['spread_msg_month'] = '请选择正确的月份'; +$L['spread_msg_itemid'] = '请填写信息ID'; +$L['spread_msg_yours'] = '信息不是您发布的,请核实'; +$L['spread_msg_success'] = '购买成功'; +$L['ad_type'] = array('广告类型', '代码广告', '文字链接', '图片广告', '视频广告', '幻灯片广告', '排名广告', '赞助商链接'); +$L['ad_title'] = '广告中心'; +$L['preview_close'] = '系统未开启广告位预览功能'; +$L['not_ad_place'] = '广告位不存在'; +$L['view_ad_place'] = '广告位 [{V0}] 预览'; +$L['not_ad'] = '广告不存在'; +$L['view_ad'] = '广告 [{V0}] 预览'; +$L['pass_place_name'] = '请填写广告位名称'; +$L['pass_place_width'] = '请填写宽度'; +$L['pass_place_height'] = '请填写高度'; +$L['pass_place_module'] = '请选择模块'; +$L['pass_place_repeat'] = '同一模块只能添加一个此类广告位'; +$L['pass_ad_title'] = '请填写广告名称'; +$L['pass_ad_month'] = '请选择购买时长'; +$L['pass_ad_from'] = '请选择广告开始日期'; +$L['pass_ad_end'] = '请选择广告结束日期'; +$L['pass_ad_bad_date'] = '开始日期必须在结束日期之前'; +$L['pass_ad_code'] = '请填写广告代码'; +$L['pass_ad_text_name'] = '请填写链接文字'; +$L['pass_ad_text_url'] = '请填写链接地址'; +$L['pass_ad_image_src'] = '请填写图片地址'; +$L['pass_ad_video_src'] = '请填写视频地址'; +$L['pass_ad_infoid'] = '请选择信息'; +$L['ad_buy_success'] = '广告订购成功,请等待工作人员处理'; +$L['ad_buy_title'] = '广告预定'; +$L['ad_buy_note'] = '会员在线订购'; +$L['ad_buy_paid'] = '已支付'; +$L['announce_title'] = '公告中心'; +$L['announce_pass_type'] = '请选择公告分类'; +$L['announce_pass_title'] = '请填写公告标题'; +$L['announce_pass_url'] = '请填写链接地址'; +$L['announce_pass_content'] = '请填写公告内容'; +$L['webpage_pass_title'] = '请填写单页标题'; +$L['webpage_pass_linkurl'] = '请填写链接地址'; +$L['webpage_pass_path'] = '文件路径格式有误'; +$L['webpage_pass_name'] = '文件名格式有误'; +$L['webpage_pass_exist'] = '指定路径文件已存在'; +$L['link_title'] = '友情链接'; +$L['link_pass_type'] = '请选择链接分类'; +$L['link_pass_site'] = '请填写网站名称'; +$L['link_pass_url'] = '请填写网站地址'; +$L['link_reg_close'] = '系统未开启在线申请功能'; +$L['link_url_repeat'] = '您所申请的网址已经提交过了,请勿重复申请'; +$L['link_reg'] = '申请链接'; +$L['link_check'] = '申请已提交,请等待审核'; +$L['link_choose_type'] = '请选择分类'; +$L['comment_title'] = '评论列表'; +$L['comment_pass_content'] = '请填写评论内容'; +$L['comment_record_add'] = '评论发布'; +$L['comment_record_del'] = '评论删除'; +$L['comment_msg_del'] = '您无权删除此评论'; +$L['comment_msg_cid'] = '无效的评论ID'; +$L['comment_msg_del_success'] = '评论删除成功'; +$L['comment_msg_not_comment'] = '评论不存在'; +$L['comment_msg_permission'] = '没有权限发布评论'; +$L['comment_msg_self'] = '您不能对自己评论'; +$L['comment_msg_limit'] = '今日可评{V0}次 当前已评{V1}次'; +$L['comment_msg_time'] = '您的评论发表的太快了,请隔{V0}秒后再发'; +$L['comment_msg_min'] = '评论最少{V0}字'; +$L['comment_msg_max'] = '评论最多{V0}字'; +$L['comment_quote_or'] = '原贴:'; +$L['comment_quote_at'] = '于'; +$L['comment_check'] = '评论提交成功,请等待审核'; +$L['gbook_title'] = '网站留言'; +$L['gbook_report_title'] = '违规举报'; +$L['gbook_success'] = '留言提交成功 请等待工作员处理'; +$L['gbook_report_success'] = '举报提交成功 请等待工作员处理'; +$L['gbook_pass_content'] = '请填写留言内容'; +$L['gift_title'] = '积分换礼'; +$L['gift_pass_type'] = '请选择分类'; +$L['gift_pass_title'] = '请填写标题'; +$L['gift_pass_thumb'] = '请上传标题图片'; +$L['gift_pass_credit'] = '请填写单价'; +$L['gift_pass_amount'] = '请填写名额'; +$L['gift_pass_group'] = '请选择会员组'; +$L['gift_my_order'] = '我的订单'; +$L['gift_error_1'] = '抱歉,此兑换还没有开始'; +$L['gift_error_3'] = '抱歉,此兑换已经过期'; +$L['gift_error_4'] = '抱歉,此兑换名额用尽,已经结束'; +$L['gift_error_5'] = '抱歉,您的'.$DT['credit_name'].'不足'; +$L['gift_error_6'] = '抱歉,您的会员组没有兑换礼品的权限'; +$L['gift_error_7'] = '抱歉,您已经兑换过此礼品或超出最低兑换次数'; +$L['gift_error_8'] = '兑换频率过快,请改天再试'; +$L['gift_credit_reason'] = '积分换礼'; +$L['gift_status'] = '处理中'; +$L['vote_title'] = '投票调查'; +$L['vote_pass_type'] = '请选择投票分类'; +$L['vote_pass_title'] = '请填写投票标题'; +$L['vote_failed'] = '您已经投过或无权投票权限'; +$L['poll_title'] = '行业票选'; +$L['poll_pass_type'] = '请选择票选分类'; +$L['poll_pass_title'] = '请填写票选标题'; +$L['poll_failed'] = '您已经投过或无权投票权限'; +$L['poll_error_1'] = '抱歉,您没有投票权限'; +$L['poll_error_2'] = '请您先登录或注册'; +$L['poll_error_3'] = '缺少参数'; +$L['poll_error_4'] = '主题不存在'; +$L['poll_error_5'] = '票选不存在'; +$L['poll_error_6'] = '投票尚未开始'; +$L['poll_error_7'] = '投票已经结束'; +$L['poll_error_8'] = '您已经投过此票'; +$L['poll_error_9'] = '最多可投{V0}票'; +$L['form_title'] = '表单问卷'; +$L['form_other'] = '其他'; +$L['form_choose'] = '请选择{V0}'; +$L['form_min_word'] = '{V0}最少{V1}字'; +$L['form_max_word'] = '{V0}最多{V1}字'; +$L['form_min_choose'] = '{V0}最少选择{V1}项'; +$L['form_max_choose'] = '{V0}最多选择{V1}项'; +$L['form_failed'] = '提交失败'; +$L['rss_title'] = 'RSS订阅'; +$L['rss_area'] = '选择地区'; +$L['rss_close'] = '系统未开启RSS订阅'; +$L['share_title'] = '分享好友'; +$L['share_not_support'] = '此页面不支持分享'; +$L['sitemap_title'] = '网站地图'; +$L['view_title'] = '查看大图'; +$L['wx_title'] = '微信联系'; +$L['address_title'] = '查看地图'; +?> \ No newline at end of file diff --git a/lang/zh-cn/group.inc.php b/lang/zh-cn/group.inc.php new file mode 100644 index 0000000..e4ca05f --- /dev/null +++ b/lang/zh-cn/group.inc.php @@ -0,0 +1,15 @@ + \ No newline at end of file diff --git a/lang/zh-cn/homepage.inc.php b/lang/zh-cn/homepage.inc.php new file mode 100644 index 0000000..1404ad6 --- /dev/null +++ b/lang/zh-cn/homepage.inc.php @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/lang/zh-cn/include.inc.php b/lang/zh-cn/include.inc.php new file mode 100644 index 0000000..89348d9 --- /dev/null +++ b/lang/zh-cn/include.inc.php @@ -0,0 +1,50 @@ + \ No newline at end of file diff --git a/lang/zh-cn/index.html b/lang/zh-cn/index.html new file mode 100644 index 0000000..c1e1f00 --- /dev/null +++ b/lang/zh-cn/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lang/zh-cn/info.inc.php b/lang/zh-cn/info.inc.php new file mode 100644 index 0000000..55b71cb --- /dev/null +++ b/lang/zh-cn/info.inc.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/lang/zh-cn/job.inc.php b/lang/zh-cn/job.inc.php new file mode 100644 index 0000000..0ad097f --- /dev/null +++ b/lang/zh-cn/job.inc.php @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/lang/zh-cn/know.inc.php b/lang/zh-cn/know.inc.php new file mode 100644 index 0000000..19d7dd1 --- /dev/null +++ b/lang/zh-cn/know.inc.php @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/lang/zh-cn/lang.chat.js b/lang/zh-cn/lang.chat.js new file mode 100644 index 0000000..1a181e0 --- /dev/null +++ b/lang/zh-cn/lang.chat.js @@ -0,0 +1,16 @@ +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +L['chat_msg_ban'] = '您已被禁言'; +L['chat_msg_empty'] = '发送内容不能为空'; +L['chat_msg_fast'] = '您的发言过快,请稍后再发'; +L['chat_msg_long'] = '发送内容过长'; +L['chat_msg_fail'] = '发送失败,请重试'; +L['chat_msg_close'] = '确定要中断聊天吗?'; +L['chat_record'] = '更多记录'; +L['chat_len_p0'] = '最多输入'; +L['chat_len_p1'] = '字,当前已输入'; +L['chat_len_p2'] = '字'; +L['chat_new_p0'] = '【新消息('; +L['chat_new_p1'] = ')】'; diff --git a/lang/zh-cn/lang.inc.php b/lang/zh-cn/lang.inc.php new file mode 100644 index 0000000..a49b0db --- /dev/null +++ b/lang/zh-cn/lang.inc.php @@ -0,0 +1,42 @@ +{V1}页/共{V2}页'; +$L['info_page'] = '共{V0}条/{V1}页'; +$L['message_type'] = array('普通', '询价', '报价', '留言', '信使'); +$L['message_weixin'] = '[详见站内消息]'; +$L['star_type'] = array('评分', '非常差', '差', '一般', '好', '非常好'); +$L['robot'] = array('baidu' => '百度','google' => 'Google','yahoo' => 'Yahoo','bing' => 'Bing','360s' => '好搜','soso' => '搜搜','sogou' => '搜狗','bytespider' => '头条','other' => '其他'); +?> \ No newline at end of file diff --git a/lang/zh-cn/lang.js b/lang/zh-cn/lang.js new file mode 100644 index 0000000..0d352b4 --- /dev/null +++ b/lang/zh-cn/lang.js @@ -0,0 +1,102 @@ +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +var L = new Array(); +L['uploading'] = '上传中...'; +L['processing'] = '处理中...'; +/* panel.js */ +L['system_tips'] = '系统提示'; +L['ok'] = '确 定'; +L['cancel'] = '取 消'; +L['upload'] = '上 传'; +L['uploading'] = '上传中..'; +L['upload_file'] = '上传文件'; +L['upload_img'] = '上传图片'; +L['allow'] = '限制为:'; +L['preview_img'] = '图片预览'; +L['choose_img'] = '选择图片'; +L['width'] = '宽度'; +L['height'] = '高度'; +L['up_local'] = '本地图片'; +L['up_remote'] = '网络图片'; +L['type_imgurl'] = '请填写图片网址'; +L['choose_file'] = '请选择文件'; +L['choose_item'] = '选择信息'; +L['dialog_user'] = '会员{V0}资料'; +L['empty_img'] = '不可预览,图片地址为空'; +L['confirm_del'] = '确定要删除吗?此操作将不可撤销'; +L['type_category'] = '请输入分类名称或简称,例如:计算机'; +L['related_found'] = '为您找到以下相关分类,请选择:'; +L['related_not_found'] = '未找到相关分类,请调整名称'; +L['type_valid_filepath'] = '请输入正确的文件路径'; +L['wysiwyg_mode'] = '请切换到设计模式'; +L['dialog_close'] = '关闭[快捷键Esc]'; +L['tpl_add'] = '新建模板'; +L['tpl_edit'] = '修改模板'; +L['op_reason'] = '操作原因'; +L['op_reason_null'] = '请填写操作原因'; + +/* calendar.js */ +L['Sun'] = '日'; +L['Mon'] = '一'; +L['Tue'] = '二'; +L['Wed'] = '三'; +L['Thu'] = '四'; +L['Fri'] = '五'; +L['Sat'] = '六'; +L['prev_year'] = '前一年'; +L['next_year'] = '后一年'; +L['prev_month'] = '上一月'; +L['next_month'] = '下一月'; + +/* common.js */ +L['str_delete'] = '删除'; +L['str_clear'] = '清理'; + +/* draft.js */ +L['fck_zoom'] = '点击增加高度 右击缩小高度'; +L['data_recovery'] = '数据恢复'; +L['save_draft'] = '暂存草稿'; +L['if_cover_data'] = '发现 {V0} 保存的数据,是否覆盖当前数据?'; +L['no_data'] = '抱歉 未找到保存的数据'; +L['at_least_10_letters'] = '请至少输入10个字,当前已输入{V0}字'; +L['stop_auto_save'] = '系统会自动保存草稿,此操作将中止系统自动保存功能,确定要继续吗?'; +L['draft_auto_saved'] = '{V0}点{V1}分{V2}秒 系统自动保存了草稿'; +L['draft_saved'] = '草稿已保存'; +L['stop_save'] = '关闭保存'; +L['draft_save_stopped'] = '草稿保存已停止'; +L['start_save'] = '开启保存'; +L['upload_attach'] = '插入附件'; + +/* homepage.js & member.js */ +L['click_open'] = '点击打开原图'; +L['keyword_value'] = '输入关键词'; +L['keyword_message'] = '请输入关键词'; +L['Sunday'] = '星期日'; +L['Monday'] = '星期一'; +L['Tuesday'] = '星期二'; +L['Wednesday'] = '星期三'; +L['Thursday'] = '星期四'; +L['Friday'] = '星期五'; +L['Saturday'] = '星期六'; +L['show_date'] = '今天是 {V0}月{V1}日 {V2}'; + +/* index.js */ +L['close_letter'] = '收起'; +L['last_page'] = '已至最后一页'; + +/* page.js */ +L['popular_search_terms'] = '热门搜索:'; +L['search_tips_close'] = '关闭'; +L['chrome_fav_tip'] = '请按快捷键Ctrl+D收藏本页,谢谢'; +L['favorited'] = '已收藏'; +L['scan_open'] = '扫一扫,直接在手机上打开'; +L['scan_tool'] = '推荐微信、QQ扫一扫等扫码工具'; + +/* player.js */ +L['iso_tips_video'] = '暂不支持此视频,请在电脑上观看'; + +/*weibo.js*/ +L['sync_sina'] = '同步到新浪微博'; +L['sync_login_sina'] = '您还没有登录新浪微博或者登录已经失效,是否现在登录?'; \ No newline at end of file diff --git a/lang/zh-cn/lang.mobile.js b/lang/zh-cn/lang.mobile.js new file mode 100644 index 0000000..101170d --- /dev/null +++ b/lang/zh-cn/lang.mobile.js @@ -0,0 +1,23 @@ +/* + DESTOON Copyright (C)2008-2099 www.destoon.com + This is NOT a freeware,Use is subject to license.txt +*/ +var L = new Array(); +L['uploading'] = '上传中...'; +L['processing'] = '处理中...'; +/* common.js */ +L['delete_confirm'] = '确定要删除吗?此操作将不可撤销'; +L['favored'] = '已收藏'; +L['refresh_pull'] = '下拉刷新'; +L['refresh_release'] = '松开刷新'; +L['refreshing'] = '刷新中'; +L['loading'] = '正在加载'; +L['load_empty'] = '没有更多信息了'; +L['save_picture'] = '保存图片'; +L['save_success'] = '保存成功'; +L['save_failure'] = '保存失败'; +L['page_enter'] = '输入页码'; +L['page_sum'] = '共'; +L['page_info'] = '条信息'; +/* share.js */ +L['share_copy'] = '网址复制成功'; diff --git a/lang/zh-cn/mall.inc.php b/lang/zh-cn/mall.inc.php new file mode 100644 index 0000000..2de566a --- /dev/null +++ b/lang/zh-cn/mall.inc.php @@ -0,0 +1,24 @@ + \ No newline at end of file diff --git a/lang/zh-cn/member.inc.php b/lang/zh-cn/member.inc.php new file mode 100644 index 0000000..72c5907 --- /dev/null +++ b/lang/zh-cn/member.inc.php @@ -0,0 +1,601 @@ +已拒绝', '待处理', '已通过'); + +$L['address_title'] = '收货地址'; +$L['address_title_add'] = '添加地址'; +$L['address_title_edit'] = '修改地址'; +$L['address_msg_choose'] = '请选择地址'; + +$L['alert_pass'] = '您至少选择"关键字"或"所在行业"其中的一项'; +$L['alert_title'] = '贸易提醒'; +$L['alert_add_title'] = '添加提醒'; + +$L['ask_status'] = array('待受理', '受理中', '已解决', '未解决'); +$L['ask_title'] = '客服中心'; +$L['ask_title_show'] = '问题查看'; +$L['ask_title_edit'] = '修改问题'; +$L['ask_title_add'] = '提交问题'; +$L['ask_msg_edit'] = '此问题不可再修改'; +$L['ask_star_type'] = array('未评分', '不满意', '基本满意', '非常满意'); +$L['ask_star_success'] = '评分成功'; +$L['ask_add_success'] = '提交成功'; + +$L['avatar_title'] = '管理头像'; +$L['avatar_delete'] = '删除成功'; +$L['avatar_img_t'] = '图片格式错误'; +$L['avatar_img_w'] = '图片宽度小于128px'; +$L['avatar_img_h'] = '图片高度小于128px'; +$L['avatar_img_e'] = '上传失败,请重试'; + +$L['award_title'] = '我要打赏'; +$L['award_record_view'] = '信息打赏'; +$L['award_record_back'] = '打赏返利'; +$L['award_msg_self'] = '不能打赏自己发布的信息'; +$L['award_msg_fee'] = '打赏金额错误'; +$L['award_msg_success'] = '打赏成功,正在返回...'; + +$L['biz_title'] = '商户后台'; +$L['biz_day'] = '日'; +$L['biz_month'] = '月'; +$L['biz_title_month'] = '{V0}年{V1}月交易报表(单位:{V2})'; +$L['biz_title_year'] = '{V0}年交易报表(单位:{V1})'; + +$L['cash_status'] = array('等待受理', '拒绝申请', '支付失败', '付款成功'); +$L['cash_title_record'] = '提现记录'; +$L['cash_title_setting'] = '帐号设置'; +$L['cash_title_confirm'] = '提现确认'; +$L['cash_title'] = '申请提现'; +$L['cash_pass_bank'] = '请选择收款方式'; +$L['cash_pass_branch'] = '请填写开户网点'; +$L['cash_pass_account'] = '请填写收款帐号'; +$L['cash_pass_amount'] = '请填写提现金额'; +$L['cash_pass_amount_min'] = '单次提现最小金额为:'; +$L['cash_pass_amount_max'] = '单次提现最大金额为:'; +$L['cash_pass_amount_day'] = '24小时内最多可提现{V0}次,请稍候再操作'; +$L['cash_pass_amount_large'] = '提现金额大于可用余额'; +$L['cash_msg_success'] = '您的提现申请已经提交,请等待工作人员的处理
    在此期间,该笔'.$DT['money_name'].'将被冻结'; +$L['cash_msg_account'] = '请先设置收款帐号'; + +$L['charge'] = '支付'; +$L['charge_id'] = '流水号'; +$L['charge_online'] = '在线支付'; +$L['charge_card'] = '充值卡支付'; +$L['charge_reward'] = '支付奖励'; +$L['charge_card_name'] = '充值卡'; +$L['charge_card_number'] = '卡号'; +$L['charge_status'] = array('等待支付', '支付失败', '支付失败', '支付成功', '支付成功'); +$L['charge_title_record'] = '支付记录'; +$L['charge_title_confirm'] = '支付确认'; +$L['charge_title_card'] = '充值卡支付'; +$L['charge_title_pay'] = '在线支付'; +$L['charge_title'] = '完成支付'; +$L['charge_pass_card_number'] = '请填写正确的充值卡卡号'; +$L['charge_pass_card_password'] = '请填写正确的充值卡密码'; +$L['charge_pass_card_used'] = '充值卡无效'; +$L['charge_pass_card_expired'] = '充值卡已过有效期'; +$L['charge_pass_card_error_password'] = '充值卡密码错误'; +$L['charge_pass_card_error_number'] = '无效的充值卡卡号'; +$L['charge_pass_type_amount'] = '请填写支付金额'; +$L['charge_pass_choose_amount'] = '请选择支付金额'; +$L['charge_pass_amount_min'] = '支付金额最少:'; +$L['charge_pass_bank'] = '请选择支付平台'; +$L['charge_pass_bank_close'] = '此支付平台尚未启用'; +$L['charge_pass_stock'] = '库存不足'; +$L['charge_msg_card_success'] = '充值卡充值成功'; +$L['charge_msg_order_fail'] = '订单状态为失败,ID:'; +$L['charge_msg_order_cancel'] = '订单状态为作废,ID:'; +$L['charge_msg_not_order'] = '未找到支付纪录'; +$L['charge_reason_deposit'] = '保证金'; +$L['charge_reason_credit'] = '积分购买'; +$L['charge_reason_sms'] = '短信购买'; +$L['charge_reason_vip'] = VIP.'续费'; +$L['charge_reason_grade'] = '会员升级'; +$L['charge_reason_muti'] = '批量付款'; +$L['charge_reason_style'] = '模板购买'; +$L['charge_reason_spread'] = '排名购买'; +$L['charge_reason_ad'] = '广告购买'; +$L['charge_reason_pay'] = '信息支付'; +$L['charge_reason_award'] = '信息打赏'; + +$L['chat_title'] = '站内交谈'; +$L['chat_group'] = '我的群聊'; +$L['chat_add'] = '发起交谈'; +$L['chat_friend'] = '我的好友'; +$L['chat_setting'] = '交谈设置'; +$L['chat_online'] = '[在线]'; +$L['chat_offline'] = '[离线]'; +$L['chat_empty'] = '暂无对话'; +$L['chat_record'] = '与【{V0}】聊天记录'; +$L['chat_with'] = '与【{V0}】交谈中'; +$L['chat_msg_black'] = '未指定屏蔽对象'; +$L['chat_msg_black_success'] = '屏蔽成功'; +$L['chat_msg_self'] = '不能与自己对话'; +$L['chat_msg_no_rights'] = '您所在的会员组没有权限发起对话'; +$L['chat_msg_user'] = '会员不存在'; +$L['chat_msg_refuse'] = '对方拒绝与您对话'; + +$L['child_title'] = '子账号'; +$L['child_title_add'] = '添加子账号'; +$L['child_title_edit'] = '修改子账号'; +$L['child_permission'] = '请选择权限'; + +$L['credit_exchange_title'] = $DT['credit_name'].'兑换'; +$L['credit_buy_title'] = $DT['credit_name'].'购买'; +$L['credit_title'] = $DT['credit_name'].'记录'; +$L['credit_pass_ex_min'] = '兑换额度不足'; +$L['credit_pass_ex_max'] = '最多可兑换:'; +$L['credit_msg_amount'] = '兑换成功'; +$L['credit_msg_active'] = '您的帐号未在论坛激活'; +$L['credit_msg_less'] = '积分不足,无法进行此操作'; +$L['credit_msg_buy_amount'] = '请选择购买额度'; +$L['credit_msg_buy_success'] = '购买成功'; +$L['credit_fields'] = array($L['search_by'], '金额', '事由', $L['search_by_note']); + + +$L['coupon_title'] = '我的优惠券'; +$L['coupon_promo_title'] = '领券中心'; +$L['coupon_msg_got'] = '该优惠券已经领取过'; +$L['coupon_msg_exists'] = '优惠活动不存在'; +$L['coupon_msg_self'] = '不能领取自己的店铺优惠券'; +$L['coupon_msg_none'] = '该优惠券已抢光,看看其他优惠券吧'; +$L['coupon_msg_time'] = '该优惠还没有开始,看看其他优惠券吧'; +$L['coupon_msg_timeout'] = '该优惠已经结束,看看其他优惠券吧'; +$L['coupon_msg_success'] = '优惠券领取成功'; +$L['coupon_msg_choose'] = '未指定优惠券'; + +$L['deposit_title'] = '保证金记录'; +$L['deposit_title_add'] = '保证金增资'; + +$L['edit_title'] = '修改资料'; +$L['edit_invite'] = '会员推广'; +$L['edit_profile'] = '完善资料'; +$L['edit_msg_success'] = '资料保存成功'; +$L['edit_msg_password'] = ',您修改了登录密码,请重新登录...'; + +$L['express_title'] = '运费模板'; +$L['express_msg_choose'] = '请选择运费模板'; + +$L['favorite_title_add'] = '添加收藏'; +$L['favorite_title_edit'] = '修改收藏'; +$L['favorite_title'] = '我的收藏'; +$L['favorite_msg_choose'] = '请选择收藏'; +$L['favorite_sfields'] = array($L['search_by'], $L['search_by_title'], '网址', $L['search_by_note']); + +$L['friend_title_add'] = '添加商友'; +$L['friend_title_edit'] = '修改商友'; +$L['friend_title_show'] = '商友详情'; +$L['friend_title'] = '我的商友'; +$L['friend_pass_truename'] = '请填写真实姓名'; +$L['friend_msg_add_again'] = '该会员已经是您的商友了'; +$L['friend_msg_add_self'] = '不能添加自己为商友'; +$L['friend_msg_choose'] = '请选择商友'; +$L['friend_sfields'] = array($L['search_by'], '姓名', '公司', '职位', '电话', '手机', '主页', 'Email', 'QQ', '微信', '阿里旺旺', 'Skype', '会员', $L['search_by_note']); + +$L['grade_title'] = '会员升级'; +$L['grade_fail'] = '您的会员组升级({V0})失败'; +$L['grade_success'] = '您的会员组升级({V0})成功'; +$L['grade_return'] = '升级失败返款'; +$L['grade_upto'] = '升级为:'; +$L['grade_pass_balance'] = '会员余额不足'; +$L['grade_pass_company'] = '请填写公司名'; +$L['grade_pass_truename'] = '请填写联系人'; +$L['grade_pass_telephone'] = '请填写电话号码'; +$L['grade_msg_bad_promo'] = '无效的优惠码'; +$L['grade_msg_time_promo'] = '可获有效期:{V0}天'; +$L['grade_msg_money_promo'] = '可充抵金额:{V0}'.$DT['money_unit']; +$L['grade_msg_success'] = '您的申请已经成功提交,请等待工作人员处理'; + +$L['home_title'] = '商铺设置'; +$L['home_msg_reset'] = '恢复成功'; +$L['home_msg_save'] = '保存成功'; + +$L['honor_title_add'] = '添加证书'; +$L['honor_title_edit'] = '修改证书'; +$L['honor_title'] = '荣誉资质'; +$L['honor_pass_title'] = '请填写证书名称'; +$L['honor_pass_authority'] = '请填写发证机构'; +$L['honor_pass_thumb'] = '请上传证书图片'; +$L['honor_pass_fromdate'] = '请选择证书发证时间'; +$L['honor_pass_fromdate_error'] = '证书发证时间必须在当前时间之前'; +$L['honor_pass_todate'] = '请选择证书到期时间'; +$L['honor_pass_todate_error'] = '证书到期时间必须在当前时间之后'; +$L['honor_reward_reason'] = '证书上传'; +$L['honor_punish_reason'] = '证书删除'; +$L['honor_msg_choose'] = '请选择证书'; + +$L['index_msg_logout'] = '注销成功'; +$L['index_msg_note_limit'] = '便笺限1000字'; + +$L['invite_title'] = $DT['credit_name'].'推广'; + +$L['link_title'] = '友情链接'; +$L['link_title_add'] = '添加链接'; +$L['link_title_edit'] = '修改链接'; +$L['link_pass_username'] = '会员名不能为空'; +$L['link_pass_title'] = '请填写网站名称'; +$L['link_pass_linkurl'] = '请填写网站地址'; +$L['link_msg_choose'] = '请选择链接'; + +$L['login_title'] = '会员登录'; +$L['login_title_reg'] = '注册成功,请登录'; +$L['login_title_sms'] = '短信登录'; +$L['login_title_scan'] = '扫码登录'; +$L['login_title_weixin'] = '微信扫码'; +$L['login_title_child'] = '子账号登录'; +$L['login_msg_username'] = '请输入登录名称'; +$L['login_msg_password'] = '请输入密码'; +$L['login_msg_not_member'] = '登录名称不存在'; +$L['login_msg_success'] = '登录成功'; +$L['login_msg_bad_mobile'] = '手机号不存在或未通过验证'; +$L['login_msg_bad_code'] = '短信验证失败'; + +$L['logout_msg_success'] = '退出成功'; + +$L['mail_title'] = '我的订阅'; +$L['mail_title_list'] = '邮件列表'; +$L['mail_msg_not_add'] = '您尚未订阅任何商机'; +$L['mail_msg_cancel'] = '退订成功'; +$L['mail_msg_update'] = '订阅更新成功'; +$L['mail_msg_choose'] = '请选择商机分类,如果要取消订阅,请直接点击退订按钮'; +$L['mail_msg_not_item'] = '邮件列表不存在'; + +$L['member_username_match'] = '会员名格式错误'; +$L['member_username_len'] = '会员登录名长度应在{V0}-{V1}之间'; +$L['member_username_ban'] = '此登录名已经被禁止注册'; +$L['member_username_reg'] = '会员登录名已经被注册'; +$L['member_passport_len'] = '昵称长度应在{V0}-{V1}之间'; +$L['member_passport_char'] = '昵称不能含有特殊符号'; +$L['member_passport_ban'] = '此昵称已经被禁止注册'; +$L['member_passport_reg'] = '昵称已经被注册'; +$L['member_password_null'] = '会员登录密码不能为空'; +$L['member_password_match'] = '两次输入的密码不一致'; +$L['member_password_len'] = '登录密码长度应在{V0}-{V1}之间'; +$L['member_password_1'] = '密码必须包含数字'; +$L['member_password_2'] = '密码必须包含小写字母'; +$L['member_password_3'] = '密码必须包含大写字母'; +$L['member_password_4'] = '密码必须包含标点符号'; +$L['member_payword_null'] = '支付密码不能为空'; +$L['member_payword_match'] = '两次输入的密码不一致'; +$L['member_payword_len'] = '支付密码长度应在{V0}-{V1}之间'; +$L['member_groupid_null'] = '请选择会员组'; +$L['member_truename_null'] = '请填写真实姓名'; +$L['member_email_null'] = '邮件格式不正确'; +$L['member_email_ban'] = '此邮件域名已经被禁止注册'; +$L['member_email_reg'] = '邮件地址已经被注册'; +$L['member_mobile_null'] = '手机号码格式不正确'; +$L['member_mobile_reg'] = '手机号码已经被注册'; +$L['member_areaid_null'] = '请选择所在地区'; +$L['member_company_null'] = '请填写公司名称'; +$L['member_company_bad'] = '无效的公司名称'; +$L['member_company_reg'] = '公司名称已经存在'; +$L['member_company_ban'] = '此公司名已经被禁止注册'; +$L['member_shop_reg'] = '商铺名称已经存在'; +$L['member_type_null'] = '请选择公司类型'; +$L['member_telephone_null'] = '请填写公司电话'; +$L['member_regyear_null'] = '请填写公司注册年份'; +$L['member_address_null'] = '请填写公司地址'; +$L['member_introduce_null'] = '公司介绍不能少于5字'; +$L['member_business_null'] = '请填写公司主要经营范围'; +$L['member_catid_null'] = '请选择公司主营行业'; +$L['member_login_username_bad'] = '用户名格式错误'; +$L['member_login_password_bad'] = '密码错误,请重试'; +$L['member_login_not_member'] = '会员不存在'; +$L['member_login_ban'] = '累计{V0}次错误尝试 您在{V1}小时内不能登录系统'; +$L['member_login_member_ban'] = '该帐号已被禁止访问'; +$L['member_login_ok'] = '成功'; +$L['member_founder_del'] = '创始人不可删除'; +$L['member_founder_move'] = '创始人不可移动'; +$L['member_rename_not_member'] = '当前会员名不存在'; +$L['member_record_reg'] = '注册奖励'; +$L['member_record_login'] = '登录奖励'; + +$L['message_title'] = '站内消息'; +$L['message_title_black'] = '黑名单'; +$L['message_title_inbox'] = '收件箱'; +$L['message_title_outbox'] = '已发送'; +$L['message_title_draft'] = '草稿箱'; +$L['message_title_recycle'] = '回收站'; +$L['message_limit'] = '今日可发送{V0}次 当前已发送{V1}次'; +$L['message_send_max'] = '最多同时给{V0}个人发送信件'; +$L['message_list_date'] = 'Y年m月d日 H:i'; +$L['message_from_system'] = '系统'; +$L['message_from_notice'] = '广播'; +$L['message_names'] = array(1=>'草稿箱', 2=>'已发送', 3=>'收件箱', 4=>'回收站'); +$L['message_feedback_title'] = '您的来信 [{V0}] 已经阅读'; +$L['message_feedback_content'] = '{V0} 于 {V1} 阅读了您发送的信件
    标题:{V2}
    时间:{V3}
    原文:
    {V4}
    '; +$L['message_msg_edit'] = '信件不存在或无权修改'; +$L['message_msg_null'] = '指定范围暂无信件'; +$L['message_msg_save_draft'] = '草稿保存成功'; +$L['message_msg_edit_draft'] = '草稿修改成功'; +$L['message_msg_send'] = '信件发送成功'; +$L['message_msg_choose'] = '请选择信件'; +$L['message_msg_deny'] = '信件不存在或无权限'; +$L['message_msg_clear'] = '成功清空'; +$L['message_msg_mark'] = '已标记为已读'; +$L['message_msg_restore'] = '成功还原'; +$L['message_msg_empty'] = '清理成功'; +$L['message_msg_inbox_limit'] = '收件箱已满,请清理信件'; +$L['message_black_username'] = '请指定要加入黑名单的会员'; +$L['message_black_not_member'] = '会员不存在,请检查'; +$L['message_black_exist'] = '会员已经位于黑名单'; +$L['message_black_update'] = '黑名单更新成功'; +$L['message_pass_groupid'] = '请选择会员组'; +$L['message_pass_touser'] = '收件人不能为空'; +$L['message_pass_title'] = '标题或内容不能为空'; + +$L['news_title'] = '公司新闻'; +$L['news_title_add'] = '添加新闻'; +$L['news_title_edit'] = '修改新闻'; +$L['news_record_add'] = '新闻发布'; +$L['news_record_del'] = '新闻删除'; +$L['news_msg_choose'] = '请选择新闻'; + +$L['oauth_title'] = '一键登录'; +$L['oauth_quit'] = '解除成功'; +$L['oauth_bind'] = '帐号绑定'; + +$L['page_title'] = '公司单页'; +$L['page_title_add'] = '添加单页'; +$L['page_title_edit'] = '修改单页'; +$L['page_record_add'] = '单页发布'; +$L['page_record_del'] = '单页删除'; +$L['page_msg_choose'] = '请选择单页'; + +$L['pay_title'] = '站内支付'; +$L['pay_record_view'] = '信息查看'; +$L['pay_record_back'] = '信息返利'; +$L['pay_msg_self'] = '不能支付自己发布的信息'; +$L['pay_msg_fee'] = '支付金额错误'; +$L['pay_msg_success'] = '支付成功,正在返回...'; + +$L['promo_title'] = '优惠促销'; +$L['promo_coupon_title'] = '领券记录'; +$L['promo_title_add'] = '添加促销'; +$L['promo_title_edit'] = '修改促销'; +$L['promo_msg_title'] = '请填写优惠名称'; +$L['promo_msg_price'] = '请填写优惠金额'; +$L['promo_msg_cost'] = '最低消费必须大于优惠金额'; +$L['promo_msg_amount'] = '请填写数量限制'; +$L['promo_msg_date'] = '有效时间设置错误'; + +$L['record_title'] = $DT['money_name'].'流水'; +$L['record_title_pay'] = '信息查看记录'; +$L['record_title_award'] = '打赏记录'; +$L['record_sfields'] = array($L['search_by'], '金额', '银行', '事由', $L['search_by_note']); + +$L['register_title'] = '会员注册'; +$L['register_msg_error'] = '错误请求'; +$L['register_msg_close'] = '管理员关闭了用户注册'; +$L['register_msg_agent'] = '您的客户端信息已经被网站屏蔽
    如有疑问,请与我们联系'; +$L['register_msg_ip'] = '同一IP{V0}小时内只能注册一次'; +$L['register_msg_passport'] = '昵称已经存在\n\n如果此会员是您注册的,请填写正确的密码\n\n如果不是您注册的,请更换昵称再试'; +$L['register_msg_activate'] = $DT['sitename'].'用户注册激活信'; +$L['register_msg_welcome'] = '欢迎加入'.$DT['sitename']; +$L['register_pass_groupid'] = '请选择会员组'; +$L['register_msg_emailcode'] = $DT['sitename'].'用户邮件验证码'; +$L['register_pass_emailcode'] = '邮件验证码错误'; +$L['register_pass_mobilecode'] = '手机验证码错误'; +$L['register_proxy'] = '请不要使用代理访问本站注册'; + +$L['send_mail_close'] = '系统未开启邮件发送'; +$L['send_sms_close'] = '系统未开启短信发送'; +$L['send_check_success'] = '您的帐号激活成功'; +$L['send_check_email_bad'] = '请填写正确的邮件地址'; +$L['send_check_email_repeat'] = '您填写的邮件地址已经被使用,请更换'; +$L['send_check_username_bad'] = '您的会员名输入错误'; +$L['send_check_password_bad'] = '您的会员名和密码不匹配'; +$L['send_check_deny'] = '您的帐号无需发送验证信'; +$L['send_check_mail'] = $DT['sitename'].'用户注册激活信'; +$L['send_check_username_null'] = '您输入会员名不存在'; +$L['send_check_title'] = '重发验证信'; +$L['send_payword_success'] = '支付密码修改成功'; +$L['send_payword_mail'] = $DT['sitename'].'用户修改支付密码'; +$L['send_payword_title'] = '支付密码'; +$L['send_email_empty'] = '个人资料未填写电子邮件'; +$L['send_email_exist'] = '邮件地址已经被注册,请更换'; +$L['send_email_success'] = '邮件修改成功'; +$L['send_email_mail'] = $DT['sitename'].'用户修改邮件'; +$L['send_email_title'] = '修改邮件'; +$L['send_mobile_empty'] = '个人资料未填写手机号码'; +$L['send_mobile_exist'] = '手机号码已经被注册,请更换'; +$L['send_mobile_fail'] = '短信发送失败,请重试'; +$L['send_mobile_success'] = '手机修改成功'; +$L['send_mobile_code_error'] = '验证码错误'; +$L['send_mobile_bad'] = '手机号码格式不正确'; +$L['send_mobile_record'] = '修改手机'; +$L['send_mobile_title'] = '修改手机'; +$L['send_password_success'] = '登录密码重设成功'; +$L['send_password_checking'] = '您的帐号尚未通过审核'; +$L['send_password_error'] = '提供的信息不匹配'; +$L['send_password_mail'] = $DT['sitename'].'用户找回密码'; +$L['send_password_title'] = '找回密码'; + +$L['sendmail_title'] = '发送电子邮件'; +$L['sendmail_content'] = '您的好友 {V1} 向您推荐如下信息:

    {V2}
    {V3}

    附言:'; +$L['sendmail_title_new'] = '推荐《{V0}》'; +$L['sendmail_pass_mailto'] = '请填写正确的收件人地址'; +$L['sendmail_success'] = '邮件已发送至{V0}'; +$L['sendmail_fail'] = '邮件发送失败,请重试'; + +$L['sms_code'] = '验证码'; +$L['sms_msg_max'] = '今日已达发送上限,请明日再试'; +$L['sms_msg_validate'] = '请先认证您的手机号码'; +$L['sms_msg_buy'] = '请先购买短信'; +$L['sms_msg_mobile'] = '请填写正确的手机号码'; +$L['sms_msg_content'] = '请填写短信内容'; +$L['sms_add_record'] = '手动'; +$L['sms_add_success'] = '成功发送{V0}条短信'; +$L['sms_add_title'] = '发送短信'; +$L['sms_msg_no_price'] = '系统未设置单价,无法购买'; +$L['sms_msg_buy_num'] = '请填写购买数量'; +$L['sms_buy_note'] = '购买短信'; +$L['sms_buy_record'] = '在线购买'; +$L['sms_buy_success'] = '购买成功'; +$L['sms_buy_title'] = '短信购买'; +$L['sms_record_title'] = '接收记录'; +$L['sms_send_title'] = '发送记录'; +$L['sms_title'] = '短信记录'; +$L['sms_sfields'] = array($L['search_by'], '金额', '事由', $L['search_by_note']); + +$L['stats_title'] = '流量统计'; +$L['stats_title_record'] = '浏览记录'; +$L['stats_title_report'] = '统计报表'; +$L['stats_weeks'] = array('天', '一', '二', '三', '四', '五', '六'); +$L['stats_week'] = '星期'; +$L['stats_msg_update'] = '正在更新数据'; +$L['stats_record_sfields'] = array($L['search_by'], '网址', '来源', '来源域名', '搜索引擎', '会员', '所属商家', 'IP'); +$L['stats_sorder'] = array($L['order_by'], '总IP降序', '总IP升序', '电脑IP降序', '电脑IP升序', '手机IP降序', '手机IP升序', '总PV降序', '总PV升序', '电脑PV降序', '电脑PV升序', '手机PV降序', '手机PV升序', '爬虫PV降序', '爬虫PV升序', '电脑爬虫PV降序', '电脑爬虫PV升序', '手机爬虫PV降序', '手机爬虫PV升序', '日期降序', '日期升序'); + +$L['stock_title'] = '商品库存'; +$L['stock_title_open'] = '公用数据'; +$L['stock_title_in'] = '商品入库'; +$L['stock_title_out'] = '商品出库'; +$L['stock_title_add'] = '添加商品'; +$L['stock_title_edit'] = '修改商品'; +$L['stock_title_update'] = '库存管理'; +$L['stock_title_record'] = '库存记录'; +$L['stock_msg_skuid'] = '请填写条形编码'; +$L['stock_msg_barcode'] = '条形编码不存在对应商品'; +$L['stock_msg_amount'] = '请填写数量'; +$L['stock_record_sfields'] = array($L['search_by'], '商品名称', '条形编码', '操作事由', '备注信息', '操作人'); +$L['stock_record_sorder'] = array($L['order_by'], '数量降序', '数量升序', '库存降序', '库存升序', '时间降序', '时间升序'); +$L['stock_open_sfields'] = array($L['search_by'], '商品名称', '条形编码', '仓储货位', '商品品牌', '计量单位', '属性名1', '属性名2', '属性名3', '属性值1', '属性值2', '属性值3', '备注', '操作人'); +$L['stock_open_sorder'] = array($L['order_by'], '复制次数降序', '复制次数升序', '商品售价降序', '商品售价升序', '商品进价降序', '商品进价升序', '添加时间降序', '添加时间升序', '更新时间降序', '更新时间升序'); +$L['stock_sfields'] = array($L['search_by'], '商品名称', '条形编码', '仓储货位', '商品品牌', '计量单位', '属性名1', '属性名2', '属性名3', '属性值1', '属性值2', '属性值3', '备注', '操作人'); +$L['stock_sorder'] = array($L['order_by'], '库存数量降序', '库存数量升序', '商品售价降序', '商品售价升序', '商品进价降序', '商品进价升序', '添加时间降序', '添加时间升序', '更新时间降序', '更新时间升序'); + +$L['style_title'] = '模板设置'; +$L['style_title_buy'] = '模板购买'; +$L['style_title_order'] = '我的模板'; +$L['style_sfields'] = array($L['search_by'], '名称', '作者'); +$L['style_sorder'] = array($L['order_by'], '价格降序', '价格升序', '人气降序', '人气升序'); +$L['style_record_buy'] = '{V0}模板购买{V1}月'; +$L['style_msg_not_exist'] = '模板不存在'; +$L['style_msg_group'] = '抱歉!此模板未对您所在的会员组开放'; +$L['style_msg_month'] = '请选择购买时长'; +$L['style_msg_expired'] = '模板已过期,请续费'; +$L['style_msg_buy_success'] = '模板购买成功'; +$L['style_msg_use_success'] = '模板启用成功'; +$L['style_pass_title'] = '请填写模板名称'; +$L['style_pass_skin'] = '请填写风格目录'; +$L['style_pass_skin_match'] = '只能使用字母(A-Z,a-z)、数字(0-9)、中划线(-)、下划线(_)作为风格目录名称'; +$L['style_pass_css'] = 'CSS文件不存在'; +$L['style_pass_template'] = '请填写模板目录'; +$L['style_pass_template_match'] = '只能使用字母(A-Z,a-z)、数字(0-9)、中划线(-)、下划线(_)作为模板目录名称'; +$L['style_pass_dir'] = '模板目录不存在'; +$L['style_pass_mdir'] = '手机版目录不存在'; +$L['style_pass_groupid'] = '请选择会员组'; + +$L['support_title'] = '客服专员'; +$L['support_error_1'] = '系统暂未为您分配客服专员'; +$L['support_error_2'] = '客服专员不存在,请与网站联系'; + +$L['type_title'] = '{V0}分类管理'; +$L['type_names'] = array('friend'=>'商友', 'favorite'=>'收藏', 'sell'=>'供应', 'mall'=>'商品', 'news'=>'新闻', 'stock'=>'库存'); +$L['type_msg_limit'] = '最多可添加{V0}个分类'; +$L['type_parent'] = '上级分类'; + + +$L['validate_title'] = '身份认证'; +$L['validate_email_exist'] = '邮件地址已经被使用,请更换'; +$L['validate_email_success'] = '您的邮件认证成功'; +$L['validate_email_bad'] = '邮箱格式不正确'; +$L['validate_email_mail'] = $DT['sitename'].'用户邮件认证'; +$L['validate_email_title'] = '邮件认证'; +$L['validate_mobile_exist'] = '手机号码已经被占用,请更换'; +$L['validate_mobile_title'] = '手机认证'; +$L['validate_mobile_success'] = '您的手机认证成功'; +$L['validate_mobile_fail'] = '短信发送失败,请重试'; +$L['validate_mobile_code_error'] = '验证码错误'; +$L['validate_mobile_bad'] = '手机号码格式不正确'; +$L['validate_mobile_record'] = '手机认证'; +$L['validate_truename_title'] = '实名认证'; +$L['validate_truename_name'] = '请填写真实姓名'; +$L['validate_truename_image'] = '请上传证件图片'; +$L['validate_truename_success'] = '提交成功'; +$L['validate_company_title'] = '公司认证'; +$L['validate_company_name'] = '请填写公司名'; +$L['validate_company_image'] = '请上传证件图片'; +$L['validate_company_success'] = '提交成功'; +$L['validate_shop_title'] = '商铺认证'; +$L['validate_shop_name'] = '请填写商铺名称'; +$L['validate_shop_image'] = '请上传证件图片'; +$L['validate_shop_success'] = '提交成功'; +$L['validate_bank_title'] = '银行帐号认证'; + +$L['vip_title'] = VIP.'信息'; +$L['vip_renew'] = VIP.'续费'; +$L['vip_msg_fee'] = '支付金额错误'; +$L['vip_msg_success'] = '续费成功'; +$L['vip_record'] = '{V0}年,{V1}到期'; + +$L['weixin_title'] = '微信关注'; +$L['weixin_push_open'] = '开启成功'; +$L['weixin_push_close'] = '关闭成功'; + +$L['send_too_many'] = '尝试次数过多,请稍后再试'; +$L['send_too_quick'] = '发送频率过快,请稍后再试'; +$L['send_bad_email'] = '邮件地址不存在'; +$L['send_bad_mobile'] = '认证手机号码不存在'; +?> \ No newline at end of file diff --git a/lang/zh-cn/message.inc.php b/lang/zh-cn/message.inc.php new file mode 100644 index 0000000..909f4fd --- /dev/null +++ b/lang/zh-cn/message.inc.php @@ -0,0 +1,85 @@ + \ No newline at end of file diff --git a/lang/zh-cn/misc.inc.php b/lang/zh-cn/misc.inc.php new file mode 100644 index 0000000..62376b6 --- /dev/null +++ b/lang/zh-cn/misc.inc.php @@ -0,0 +1,124 @@ +{V0}'; +$L['apply_success'] = '简历投递成功'; +$L['make_resume'] = '请先创建简历'; +$L['not_resume'] = '简历不存在'; +/* konw/answer.inc.php */ +$L['vote_end'] = '投票已经结束'; +$L['vote_answer'] = '问题投票'; +$L['vote_reject'] = '您已经投过票或无权投票'; +$L['min_answer'] = '至少需要保留两个答案'; +$L['record_reward'] = '[{V0}]最佳答案悬赏'; +$L['record_best'] = '[{V0}]最佳答案奖励'; +$L['record_thank'] = '[{V0}]最佳答案感谢'; +$L['record_addto'] = '[{V0}]追加悬赏'; +$L['record_expired'] = '[{V0}]问题过期'; +$L['select_credit'] = '请选择'.$DT['credit_name']; +$L['lack_credit'] = $DT['credit_name'].'不足'; +$L['type_answer'] = '请填写答案'; +$L['answer_title'] = '我来回答'; +$L['answer_question'] = '回答问题'; +$L['answer_msg_title'] = '您的提问[{V0}]收到新的回答'; +$L['answer_msg_content'] = ':{V0}
    :{V1}
    详见:{V2}
    如果回答没有显示出来,可能需要系统审核后显示'; +$L['answer_success'] = '回答成功,感谢参与'; +$L['answer_check'] = '回答成功,请等待审核'; +$L['expired_msg_title'] = '您的提问[{V0}]即将到期,请及时处理'; +$L['expired_msg_content'] = '详见:{V0}'; +$L['sms_inquiry'] = '询盘'; +$L['sms_price'] = '报价'; +$L['sms_message'] = '留言'; +/* mall/cart.inc.php */ +$L['cart_title'] = '购物车'; +/* mall|group/buy.inc.php */ +$L['buy_title'] = '提交订单'; +$L['post_free'] = '包邮'; +$L['msg_buy_success'] = '订单提交成功'; +/* group/buy.inc.php*/ +$L['group_expired'] = '团购已结束'; +/* exhibit/sign.inc.php*/ +$L['sign_title'] = '在线报名'; +$L['sign_again'] = '您已经报过名了,不能重复提交'; +$L['has_started'] = '展会已经开始'; +$L['msg_sign_success'] = '报名提交成功,请等待工作人员与您联系'; +?> \ No newline at end of file diff --git a/lang/zh-cn/mobile.inc.php b/lang/zh-cn/mobile.inc.php new file mode 100644 index 0000000..53adf8d --- /dev/null +++ b/lang/zh-cn/mobile.inc.php @@ -0,0 +1,32 @@ + \ No newline at end of file diff --git a/lang/zh-cn/my.inc.php b/lang/zh-cn/my.inc.php new file mode 100644 index 0000000..3a82336 --- /dev/null +++ b/lang/zh-cn/my.inc.php @@ -0,0 +1,60 @@ +成团中', '团购中', '已结束'); +$L['group_orderby'] = array('结果排序方式', '订单数量降序', '订单数量升序', '销售量降序', '销售量升序', '团购价降序', '团购价升序', '市场价降序', '市场价升序', '节省费用降序', '节省费用升序', '享受折扣降序', '享受折扣升序', '最多人数降序', '最多人数升序', '最低人数降序', '最低人数升序', '浏览人次降序', '浏览人次升序'); +$L['mall_orderby'] = array('结果排序方式', '更新时间降序', '更新时间升序', '添加时间降序', '添加时间升序', '商品单价降序', '商品单价升序', '订单数量降序', '订单数量升序', '销售数量降序', '销售数量升序', '库存总量降序', '库存总量升序', '评论次数降序', '评论次数升序', '浏览人气降序', '浏览人气升序'); +?> \ No newline at end of file diff --git a/lang/zh-cn/order.inc.php b/lang/zh-cn/order.inc.php new file mode 100644 index 0000000..485630a --- /dev/null +++ b/lang/zh-cn/order.inc.php @@ -0,0 +1,217 @@ +未知', + '在途', + '派送中', + '已签收', + '退回', + '其他', + '无记录', +); +$L['send_dstatus'] = array( + '未知', + '在途', + '派送中', + '已签收', + '退回', + '其他', + '无记录', +); + +$L['group_status'] = array( + '已付款', + '已发货', + '已消费', + '交易成功', + '申请退款', + '已退款', + '待付款', +); +$L['group_dstatus'] = array( + '已付款', + '已发货', + '已消费', + '交易成功', + '申请退款', + '已退款', + '待付款', +); +$L['group_order_credit'] = '团购订单'; +$L['group_msg_deny'] = '您无权进行此操作'; +$L['group_msg_null'] = '订单不存在'; +$L['group_success'] = '恭喜!此订单交易成功'; +$L['group_detail_title'] = '订单详情'; +$L['group_express_title'] = '物流追踪'; +$L['group_title'] = '订单管理'; +$L['group_sfields'] = array('按条件', '商品', '金额', '密码', '买家', '买家姓名', '买家地址', '买家邮编', '买家手机', '买家电话', '发货方式', '物流号码', '备注'); +$L['group_order_title'] = '团购订单'; +$L['group_order_sfields'] = array('按条件', '商品', '金额', '密码', '卖家', '发货方式', '物流号码', '备注'); +$L['group_order_id'] = '团购单号'; +$L['group_send_title'] = '商家发货'; +$L['group_addtime_null'] = '请填写延长的时间'; +$L['group_addtime_success'] = '买家确认时间延长成功'; +$L['group_addtime_title'] = '延长买家确认时间'; +$L['group_record_pay'] = '交易成功'; +$L['group_order_id'] = '团购单号:'; +$L['group_buyer_timeout'] = '团购单号:{V0}[买家超时]'; +$L['group_pay_order_success'] = '订单支付成功'; +$L['group_pay_order_title'] = '订单支付'; + +$L['trade_status'] = array( + '待确认', + '待付款', + '待发货', + '已发货', + '交易成功', + '申请退款', + '已退款', + '货到付款', + '买家关闭', + '卖家关闭', +); +$L['trade_dstatus'] = array( + '待确认', + '待付款', + '待发货', + '已发货', + '交易成功', + '申请退款', + '已退款', + '货到付款', + '买家关闭', + '卖家关闭', +); +$L['trade_msg_deny'] = '您无权进行此操作'; +$L['trade_msg_null'] = '订单不存在'; +$L['trade_msg_pay_bind'] = '系统采用了{V0}担保交易,请先绑定您的{V0}帐号'; +$L['trade_msg_less_fee'] = '附加金额不能小于{V0}'; +$L['trade_msg_confirm'] = '此订单需要卖家确认'; +$L['trade_msg_deny_comment'] = '此订单不支持评价'; +$L['trade_msg_comment_again'] = '您已经评价过此交易'; +$L['trade_msg_comment_success'] = '评价提交成功'; +$L['trade_msg_empty_explain'] = '解释内容不能为空'; +$L['trade_msg_explain_again'] = '您已经解释过此评价'; +$L['trade_msg_explain_success'] = '解释成功'; +$L['trade_msg_secured_close'] = '系统未开启担保交易接口'; +$L['trade_msg_bind_edit'] = '您的帐号已经绑定,不可再修改
    如果需要修改,请与网站联系'; +$L['trade_msg_bind_exists'] = '帐号绑定已经存在,请检查您的帐号'; +$L['trade_msg_bind_success'] = '更新成功'; +$L['trade_msg_muti_choose'] = '请选择需要支付的订单'; +$L['trade_msg_muti_empty'] = '暂无符合条件的订单'; +$L['trade_msg_svae_note'] = '保存成功'; +$L['trade_bind_title'] = '绑定{V0}帐号'; +$L['trade_bind_error'] = '{V0}帐号格式不正确'; +$L['trade_muti_title'] = '批量付款'; +$L['trade_muti_send_title'] = '批量发货'; +$L['trade_comment_title'] = '交易评价'; +$L['trade_comment_show_title'] = '交易详情'; + +$L['trade_price_fee_null'] = '请填写附加金额'; +$L['trade_price_fee_name'] = '请填写附加金额名称'; +$L['trade_price_edit_success'] = '订单修改成功'; +$L['trade_price_title'] = '修改订单'; +$L['trade_detail_title'] = '订单详情'; +$L['trade_exprss_title'] = '物流追踪'; +$L['trade_confirm_success'] = '订单已确认,请等待买家付款'; +$L['trade_pay_order_success'] = '订单支付成功,请等待卖家发货'; +$L['trade_pay_order_title'] = '订单支付'; +$L['trade_refund_reason'] = '请填写退款原因'; +$L['trade_refund_success'] = '您的退款申请已经提交,请等待网站处理'; +$L['trade_refund_title'] = '申请退款'; +$L['trade_send_success'] = '已经确认发货,请等待买家确认收货'; +$L['trade_send_title'] = '确认发货'; +$L['trade_receive_title'] = '确认到货'; +$L['trade_addtime_null'] = '请填写延长的时间'; +$L['trade_addtime_success'] = '买家确认时间延长成功'; +$L['trade_addtime_title'] = '延长买家确认时间'; +$L['trade_success'] = '恭喜!此订单交易成功'; +$L['trade_close_success'] = '交易已关闭'; +$L['trade_delete_success'] = '订单删除成功'; +$L['trade_pay_seller'] = '请填写收款会员名'; +$L['trade_pay_self'] = '收款人不能是自己'; +$L['trade_pay_seller_bad'] = '收款会员名不存在,请确认'; +$L['trade_pay_amount'] = '请填写付款金额'; +$L['trade_pay_note'] = '请填写付款说明'; +$L['trade_pay_goods'] = '请填写商品或服务名称'; +$L['trade_pay_title'] = '我要付款'; +$L['trade_pay1_success'] = '直接付款成功,会员[{V0}]将直接收到您的付款'; +$L['trade_pay0_success'] = '订单已经发出,请等待卖家确认'; +$L['trade_order_sfields'] = array('按条件', '商品', '金额', '附加金额', '附加名称', '卖家', '发货方式', '物流号码', '备注'); +$L['trade_order_title'] = '我的订单'; +$L['trade_sfields'] = array('按条件', '商品', '金额', '附加金额', '附加名称', '买家', '买家姓名', '买家地址', '买家邮编', '买家手机', '买家电话', '发货方式', '物流号码', '买家备注', '商家备注'); +$L['trade_title'] = '订单管理'; +$L['trade_record_pay'] = '交易成功'; +$L['trade_record_payfor'] = '站内付款'; +$L['trade_record_receive'] = '站内收款'; +$L['trade_record_new'] = '通知卖家确认订单'; +$L['trade_refund'] = '订单退款'; +$L['trade_refund_reason'] = '请填写退款原因'; +$L['trade_refund_success'] = '您的退款申请已经提交,请等待网站处理'; +$L['trade_refund_title'] = '申请退款'; +$L['trade_refund_agree_title'] = '同意退款'; +$L['trade_refund_agree_success'] = '订单退款成功'; +$L['trade_refund_by_seller'] = '[卖家]'; +$L['trade_order_id'] = '订单号:'; +$L['trade_fee'] = '网站服务费'; +$L['trade_buyer_timeout'] = '单号:{V0}[买家超时]'; +$L['trade_sms_confirm'] = '通知买家付款'; +$L['trade_sms_pay'] = '通知卖家发货'; +$L['trade_sms_send'] = '通知买家已发货'; +$L['trade_sms_income'] = '站内付款通知'; +$L['trade_sms_receive'] = '通知卖家已收货'; +$L['trade_message_t1'] = '站内交易提醒,您有一笔交易需要付款(T{V0})'; +$L['trade_message_c1'] = '卖家 {V1}{V2} 更新了您的订单
    » 请点这里立即处理或查看详情'; +$L['trade_message_t2'] = '站内交易提醒,您有一笔交易需要发货(T{V0})'; +$L['trade_message_c2'] = '买家 {V1}{V2} 支付了您的订单
    » 请点这里立即处理或查看详情'; +$L['trade_message_t3'] = '站内交易提醒,您有一笔交易需要收货(T{V0})'; +$L['trade_message_c3'] = '卖家 {V1}{V2} 已经发货
    » 请点这里立即处理或查看详情'; +$L['trade_message_t4'] = '站内交易提醒,您有一笔交易已经成功(T{V0})'; +$L['trade_message_c4'] = '买家 {V1}{V2} 确认收货,交易完成
    » 请点这里立即处理或查看详情'; +$L['trade_message_t5'] = '站内收入提醒,您收到一笔付款'; +$L['trade_message_c5'] = '{V1}{V2} 向您支付了 {V3}'.$DT['money_unit'].' 的站内付款
    备注:{V4}'; +$L['trade_message_t6'] = '站内交易提醒,您有一笔交易需要确认(T{V0})'; +$L['trade_message_c6'] = '{V1}{V2} 向您订购了:
    {V3}
    订单编号:T{V4}  订单金额为:{V5}'.$DT['money_unit'].'
    » 请点这里立即处理或查看详情'; + +$L['purchase_title'] = '确认订单'; +$L['purchase_msg_address'] = '请先创建收货地址'; +$L['purchase_msg_goods'] = '商品不存在'; +$L['purchase_msg_self'] = '不能购买自己的商品'; +$L['purchase_msg_group_finish'] = '团购已结束'; +$L['purchase_msg_online_buy'] = '此商品不支持在线购买'; +$L['post_free'] = '包邮'; +$L['msg_express_no'] = '请填写快递单号'; +$L['msg_express_type'] = '请填写快递类型'; +$L['msg_express_no_error'] = '快递单号格式错误'; +$L['msg_express_date_error'] = '发货时间格式错误'; + +$L['express_sfields'] = array('按条件', '商品名称', '快递公司', '快递单号'); +$L['express_title'] = '我的快递'; + +$L['log_buy'] = '买家下单'; +$L['log_pay'] = '买家付款'; +$L['log_get'] = '买家收货'; +$L['log_use'] = '买家消费'; +$L['log_success'] = '交易成功'; +$L['log_refund'] = '申请退款'; +$L['log_remind'] = '提醒发货'; +$L['log_addtime'] = '延长收货'; +$L['log_buyer_coment'] = '买家评价'; +$L['log_buyer_close'] = '买家关闭'; +$L['log_seller_coment'] = '卖家评价'; +$L['log_seller_close'] = '卖家关闭'; +$L['log_send'] = '卖家发货'; +$L['log_getpay'] = '卖家收款'; +$L['log_agree'] = '卖家退款'; +$L['log_edit'] = '修改订单'; + +$L['stock_pay'] = '订单支付'; +$L['stock_refund'] = '订单退款'; +$L['stock_no'] = '单号:'; +$L['stock_less'] = '库存不足'; + +?> \ No newline at end of file diff --git a/lang/zh-cn/photo.inc.php b/lang/zh-cn/photo.inc.php new file mode 100644 index 0000000..b505f0e --- /dev/null +++ b/lang/zh-cn/photo.inc.php @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/lang/zh-cn/quote.inc.php b/lang/zh-cn/quote.inc.php new file mode 100644 index 0000000..e764eed --- /dev/null +++ b/lang/zh-cn/quote.inc.php @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/lang/zh-cn/search.inc.php b/lang/zh-cn/search.inc.php new file mode 100644 index 0000000..b8ca068 --- /dev/null +++ b/lang/zh-cn/search.inc.php @@ -0,0 +1,48 @@ + \ No newline at end of file diff --git a/lang/zh-cn/sell.inc.php b/lang/zh-cn/sell.inc.php new file mode 100644 index 0000000..a0e6681 --- /dev/null +++ b/lang/zh-cn/sell.inc.php @@ -0,0 +1,19 @@ + \ No newline at end of file diff --git a/lang/zh-cn/sms.inc.php b/lang/zh-cn/sms.inc.php new file mode 100644 index 0000000..ebf9dc7 --- /dev/null +++ b/lang/zh-cn/sms.inc.php @@ -0,0 +1,19 @@ + \ No newline at end of file diff --git a/lang/zh-cn/special.inc.php b/lang/zh-cn/special.inc.php new file mode 100644 index 0000000..55b71cb --- /dev/null +++ b/lang/zh-cn/special.inc.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/lang/zh-cn/video.inc.php b/lang/zh-cn/video.inc.php new file mode 100644 index 0000000..55b71cb --- /dev/null +++ b/lang/zh-cn/video.inc.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/license.txt b/license.txt new file mode 100644 index 0000000..c5dfb7e --- /dev/null +++ b/license.txt @@ -0,0 +1,36 @@ +版权所有(c)2008-2099,西安嘉客信息科技有限责任公司保留所有权利。 + +感谢您选择 DESTOON网站管理系统(以下简称DESTOON)。 + +希望我们的产品能为您提供一个高效、稳定和强大的开源建站系统解决方案。 + +西安嘉客信息科技有限责任公司为DESTOON产品的开发商,依法独立拥有DESTOON产品著作权(中国国家版权局计算机软件著作权登记号:2009SR037570)。西安嘉客信息科技有限责任公司网址为:https://www.destoon.com。 + +DESTOON著作权已在中华人民共和国国家版权局注册,著作权受到法律和国际公约保护。使用者:无论个人或组织、盈利与否、用途如何(包括以学习和研究为目的),均需仔细阅读本协议,在理解、同意、并遵守本协议的全部条款后,方可开始使用DESTOON软件。 + +I 协议许可的权利 + + 1. 企业用户(泛指非自然人的团体,如企业、协会等组织机构)必须购买软件授权后方可正式建站使用,个人用户、教育行业(限edu.cn域名)、政务部门(限gov.cn域名)可根据自己的实际情况选择是否购买授权及必要的技术支持。 + 2. 您可以在协议规定的约束和限制范围内修改DESTOON源代码或界面风格以适应您的网站要求。 + 3. 您拥有使用本软件构建的网站中全部会员资料及相关信息的所有权,并独立承担其内容的相关法律义务。 + 4. 获得商业授权之后,您可以依据所购买的授权类型中确定的技术支持期限、技术支持方式和技术支持内容,自购买时刻起,在技术支持期限内拥有通过指定的方式获得指定范围内的技术支持服务。 + +II 协议规定的约束和限制 + + 1. 未获商业授权之前,企业用户不得将本软件用于正式建站。购买商业授权请登录 https://www.destoon.com/buy/ 参考相关说明。 + 2. 不得对本软件或与之关联的商业授权进行出租、出售、抵押或发放子许可证。 + 3. 无论如何,即无论用途如何、是否经过修改或美化、修改程度如何,只要使用DESTOON的整体或任何部分,未经书面许可,网站页面页脚处的DESTOON名称和 https://www.destoon.com 的链接都必须保留,而不能清除或修改,除非您获得西安嘉客信息科技有限责任公司授权许可。 + 4. 禁止在DESTOON的整体或任何部分基础上以发展任何派生版本、修改版本或第三方版本用于重新分发。 + 5. 如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回,并承担相应法律责任。 + +III 有限担保和免责声明 + + 1. 本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的。 + 2. 用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未购买产品授权和技术服务之前,我们不承诺提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任。 + 3. 西安嘉客信息科技有限责任公司不对使用本软件构建的网站中的信息承担责任。 + +有关DESTOON最终用户授权协议、商业授权与技术服务的详细内容,均由DESTOON官方网站独家提供。西安嘉客信息科技有限责任公司拥有在不事先通知的情况下,修改授权协议和服务价目表的权力,修改后的协议或价目表对自改变之日起的新授权用户生效。 + +电子文本形式的授权协议如同双方书面签署的协议一样,具有完全的和等同的法律效力。您一旦开始安装DESTOON,即被视为完全理解并接受本协议的各项条款,在享有上述条款授予的权力的同时,受到相关的约束和限制。协议许可范围以外的行为,将直接违反本授权协议并构成侵权,我们有权随时终止授权,责令停止损害,并保留追究相关责任的权力。 + +西安嘉客信息科技有限责任公司拥有对本授权协议的最终解释权。 \ No newline at end of file diff --git a/link/ajax.php b/link/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/link/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/link/index.php b/link/index.php new file mode 100644 index 0000000..f59c9af --- /dev/null +++ b/link/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/link/list.php b/link/list.php new file mode 100644 index 0000000..f59c9af --- /dev/null +++ b/link/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/mall/ajax.php b/mall/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/mall/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/mall/compare.php b/mall/compare.php new file mode 100644 index 0000000..7613a63 --- /dev/null +++ b/mall/compare.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/mall/config.inc.php b/mall/config.inc.php new file mode 100644 index 0000000..6dcc05e --- /dev/null +++ b/mall/config.inc.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/mall/index.php b/mall/index.php new file mode 100644 index 0000000..fabb0a8 --- /dev/null +++ b/mall/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/mall/list.php b/mall/list.php new file mode 100644 index 0000000..380d60a --- /dev/null +++ b/mall/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/mall/search.php b/mall/search.php new file mode 100644 index 0000000..7d7928e --- /dev/null +++ b/mall/search.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/mall/show.php b/mall/show.php new file mode 100644 index 0000000..ff7a46a --- /dev/null +++ b/mall/show.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/mall/view.php b/mall/view.php new file mode 100644 index 0000000..859f72f --- /dev/null +++ b/mall/view.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/nginx.htaccess b/nginx.htaccess new file mode 100644 index 0000000..ef20bda --- /dev/null +++ b/nginx.htaccess @@ -0,0 +1,11 @@ +location / { + rewrite ^(.*)-htm-(.*)$ $1.php?$2 last; + rewrite ^(.*)/show-([0-9]+)([\-])?([0-9]+)?\.html$ $1/show.php?itemid=$2&page=$4 last; + rewrite ^(.*)/list-([0-9]+)([\-])?([0-9]+)?\.html$ $1/list.php?catid=$2&page=$4 last; + rewrite ^(.*)/([A-Za-z0-9_\-]+)-c([0-9]+)-([0-9]+)\.html$ $1/list.php?catid=$3&catdir=$2&page=$4 last; + rewrite ^(.*)/show/([0-9]+)/([0-9]+)?([/])?$ $1/show.php?itemid=$2&page=$3 last; + rewrite ^(.*)/list/([0-9]+)/([0-9]+)?([/])?$ $1/list.php?catid=$2&page=$3 last; + rewrite ^(com)/([a-z0-9_\-]+)/([a-z]+)/(.*)\.html$ index.php?homepage=$2&file=$3&rewrite=$4 last; + rewrite ^(com)/([a-z0-9_\-]+)/([a-z]+)([/])?$ index.php?homepage=$2&file=$3 last; + rewrite ^(com)/([a-z0-9_\-]+)([/])?$ index.php?homepage=$2 last; +} \ No newline at end of file diff --git a/photo/ajax.php b/photo/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/photo/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/photo/config.inc.php b/photo/config.inc.php new file mode 100644 index 0000000..401442e --- /dev/null +++ b/photo/config.inc.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/photo/index.php b/photo/index.php new file mode 100644 index 0000000..0d19da6 --- /dev/null +++ b/photo/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/photo/list.php b/photo/list.php new file mode 100644 index 0000000..e2622cf --- /dev/null +++ b/photo/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/photo/private.php b/photo/private.php new file mode 100644 index 0000000..b31d17b --- /dev/null +++ b/photo/private.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/photo/search.php b/photo/search.php new file mode 100644 index 0000000..8d3964c --- /dev/null +++ b/photo/search.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/photo/show.php b/photo/show.php new file mode 100644 index 0000000..96bda1c --- /dev/null +++ b/photo/show.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/photo/view.php b/photo/view.php new file mode 100644 index 0000000..59faf4a --- /dev/null +++ b/photo/view.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/poll/ajax.php b/poll/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/poll/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/poll/index.php b/poll/index.php new file mode 100644 index 0000000..784f56e --- /dev/null +++ b/poll/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/poll/list.php b/poll/list.php new file mode 100644 index 0000000..784f56e --- /dev/null +++ b/poll/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/poll/show.php b/poll/show.php new file mode 100644 index 0000000..784f56e --- /dev/null +++ b/poll/show.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/quote/ajax.php b/quote/ajax.php new file mode 100644 index 0000000..2f5f7a1 --- /dev/null +++ b/quote/ajax.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/quote/config.inc.php b/quote/config.inc.php new file mode 100644 index 0000000..dae924d --- /dev/null +++ b/quote/config.inc.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/quote/index.php b/quote/index.php new file mode 100644 index 0000000..c61aba7 --- /dev/null +++ b/quote/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/quote/list.php b/quote/list.php new file mode 100644 index 0000000..a3c1880 --- /dev/null +++ b/quote/list.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/quote/price.php b/quote/price.php new file mode 100644 index 0000000..1056d3a --- /dev/null +++ b/quote/price.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/quote/product.php b/quote/product.php new file mode 100644 index 0000000..429c735 --- /dev/null +++ b/quote/product.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/quote/search.php b/quote/search.php new file mode 100644 index 0000000..c4373f3 --- /dev/null +++ b/quote/search.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/quote/show.php b/quote/show.php new file mode 100644 index 0000000..90016e3 --- /dev/null +++ b/quote/show.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..ac73dbe --- /dev/null +++ b/robots.txt @@ -0,0 +1,11 @@ +# Robots For DESTOON B2B +User-agent: * +Disallow: /api/ +Disallow: /install/ +Disallow: /member/ +Disallow: /skin/ +Disallow: /template/ +Disallow: /upgrade/ + +User-agent: GPTBot +Disallow: / \ No newline at end of file diff --git a/sitemaps.xml b/sitemaps.xml new file mode 100644 index 0000000..37ba0f5 --- /dev/null +++ b/sitemaps.xml @@ -0,0 +1,9693 @@ + + + +http://www.zhaobiaopai.com/ +2026-01-28 +always +1.0 + + +http://www.zhaobiaopai.com/sell/ +2026-01-28 +hourly +0.9 + + +http://www.zhaobiaopai.com/exhibit/ +2026-01-28 +hourly +0.9 + + +http://www.zhaobiaopai.com/news/ +2026-01-28 +hourly +0.9 + + +http://www.zhaobiaopai.com/jishu/ +2026-01-28 +hourly +0.9 + + +http://www.zhaobiaopai.com/sell/s375.html +2026-01-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s371.html +2025-12-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s369.html +2025-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s368.html +2025-12-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s361.html +2025-12-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s351.html +2025-10-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s346.html +2025-10-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s343.html +2025-10-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s342.html +2025-10-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s341.html +2025-10-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s340.html +2025-10-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s339.html +2025-10-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s338.html +2025-10-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s331.html +2025-10-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s330.html +2025-10-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s329.html +2025-09-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s324.html +2025-09-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s321.html +2025-08-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s314.html +2025-08-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s291.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s273.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s272.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s271.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s252.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s251.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s249.html +2025-04-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s248.html +2025-04-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s247.html +2025-07-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s246.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s245.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s244.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s242.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s241.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s223.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s222.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s221.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s220.html +2025-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s218.html +2025-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s202.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s201.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s180.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s179.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s178.html +2025-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s177.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s176.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s175.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s173.html +2025-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s172.html +2025-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s171.html +2025-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s170.html +2025-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s169.html +2025-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s167.html +2025-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s166.html +2025-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s164.html +2025-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s163.html +2025-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s162.html +2025-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s161.html +2025-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s160.html +2025-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s159.html +2025-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s158.html +2025-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s155.html +2024-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s154.html +2024-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s153.html +2024-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s151.html +2024-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s150.html +2024-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s149.html +2024-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s148.html +2024-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s145.html +2023-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s144.html +2025-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s143.html +2025-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s142.html +2025-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s141.html +2025-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s131.html +2024-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s130.html +2024-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s129.html +2024-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s128.html +2024-03-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s127.html +2024-03-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s126.html +2024-03-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s125.html +2024-03-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s124.html +2024-03-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s123.html +2024-03-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s122.html +2024-03-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s121.html +2024-03-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s120.html +2024-03-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s119.html +2024-03-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s117.html +2022-06-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s116.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s115.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s114.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s113.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s112.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s111.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s110.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s109.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s108.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s107.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s106.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s105.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s104.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s103.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s102.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s101.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s100.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s99.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s98.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s97.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s96.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s95.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s94.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s93.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s92.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s91.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s90.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s89.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s88.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s87.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s86.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s85.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s84.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s83.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s82.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s81.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s80.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s79.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s78.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s77.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s76.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s75.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s74.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s73.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s72.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s71.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s70.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s69.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s68.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s67.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s66.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s65.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s64.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s63.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s62.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s61.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s60.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s59.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s58.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s57.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s56.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s55.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s54.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s53.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s52.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s51.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s50.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s49.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s48.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s47.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s46.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s45.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s44.html +2022-05-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s43.html +2022-05-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s42.html +2022-05-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s41.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s40.html +2022-05-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s39.html +2022-05-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s38.html +2022-05-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s37.html +2022-05-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s36.html +2022-05-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s35.html +2022-05-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s34.html +2022-05-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s33.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s32.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s31.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s30.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s29.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s28.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s27.html +2022-04-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s26.html +2022-04-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s25.html +2022-04-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s24.html +2022-04-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s23.html +2022-04-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s22.html +2022-04-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s21.html +2022-04-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s20.html +2022-04-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s19.html +2022-04-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s18.html +2022-04-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s17.html +2022-04-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s16.html +2022-04-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s15.html +2022-04-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s14.html +2022-04-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s13.html +2022-04-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s12.html +2022-04-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s11.html +2022-04-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s10.html +2022-04-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s9.html +2022-04-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s8.html +2022-04-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s7.html +2022-04-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s6.html +2022-04-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s5.html +2022-04-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s4.html +2022-04-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s3.html +2022-04-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s2.html +2022-04-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/sell/s1.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/exhibit/s43.html +2026-01-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/exhibit/s42.html +2025-12-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/exhibit/s40.html +2025-07-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/exhibit/s39.html +2025-07-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/exhibit/s38.html +2025-07-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/exhibit/s15.html +2023-08-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/exhibit/s14.html +2023-07-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/exhibit/s10.html +2022-05-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/exhibit/s9.html +2022-05-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/exhibit/s8.html +2022-05-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/exhibit/s7.html +2022-05-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/exhibit/s6.html +2022-06-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/exhibit/s5.html +2022-05-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/exhibit/s4.html +2022-05-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/exhibit/s3.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/exhibit/s2.html +2022-04-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/321.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/320.html +2024-02-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/319.html +2024-02-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/318.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/317.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/316.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/315.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/314.html +2024-01-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/313.html +2024-01-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/312.html +2024-01-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/311.html +2024-01-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/310.html +2024-01-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/309.html +2024-01-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/308.html +2024-01-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/307.html +2023-12-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/306.html +2023-12-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/305.html +2023-12-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/304.html +2023-12-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/303.html +2023-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/302.html +2023-12-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/301.html +2023-12-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/300.html +2023-12-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/299.html +2023-12-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/298.html +2023-12-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/297.html +2023-12-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/296.html +2023-12-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/295.html +2023-12-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/294.html +2023-12-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/293.html +2023-12-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/292.html +2023-12-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/291.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/290.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/289.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/288.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/287.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/286.html +2023-12-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/285.html +2023-12-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/284.html +2023-12-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/283.html +2023-12-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/282.html +2023-12-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/281.html +2023-12-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/280.html +2023-12-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/279.html +2023-12-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/278.html +2023-12-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/277.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/276.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/275.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/274.html +2023-10-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/273.html +2023-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/272.html +2023-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/271.html +2023-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/270.html +2023-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/269.html +2023-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/268.html +2023-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/267.html +2023-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/266.html +2023-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/265.html +2023-04-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/264.html +2023-04-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/263.html +2023-04-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/262.html +2023-04-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/261.html +2023-04-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/260.html +2023-04-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/259.html +2023-04-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/258.html +2023-04-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/257.html +2023-04-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/256.html +2023-04-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/255.html +2023-04-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/254.html +2023-04-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/253.html +2023-04-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/252.html +2023-04-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/251.html +2023-04-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/250.html +2023-04-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/249.html +2023-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/248.html +2023-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/247.html +2023-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/246.html +2023-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/245.html +2023-03-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/244.html +2023-03-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/243.html +2023-03-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/242.html +2023-03-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/241.html +2023-03-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/240.html +2023-03-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/239.html +2023-03-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/238.html +2023-03-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/237.html +2023-03-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/236.html +2023-03-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/235.html +2023-03-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/234.html +2023-03-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/233.html +2023-03-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/232.html +2023-03-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/231.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/230.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/229.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/228.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/227.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/226.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/225.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/224.html +2023-03-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/223.html +2023-03-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/222.html +2023-03-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/221.html +2023-03-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/220.html +2023-03-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/219.html +2023-03-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/218.html +2023-03-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/217.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/216.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/215.html +2023-02-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/214.html +2023-02-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/213.html +2023-02-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/212.html +2023-02-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/211.html +2023-02-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/210.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/209.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/208.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/207.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/206.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/205.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/204.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/203.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/202.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/201.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/200.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/199.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/198.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/197.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/196.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/195.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/194.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/193.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/192.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/191.html +2023-02-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/190.html +2023-02-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/189.html +2023-02-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/188.html +2023-02-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/187.html +2023-02-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/186.html +2023-02-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/185.html +2023-02-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/184.html +2023-02-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/183.html +2023-02-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/182.html +2023-02-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/181.html +2023-02-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/180.html +2023-02-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/179.html +2023-02-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/178.html +2023-02-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/177.html +2023-02-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/176.html +2023-02-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/175.html +2023-02-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/174.html +2023-02-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/173.html +2023-02-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/172.html +2023-02-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/171.html +2023-02-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/170.html +2023-02-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/169.html +2023-02-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/168.html +2023-02-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/167.html +2023-02-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/166.html +2023-02-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/165.html +2023-02-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/164.html +2023-02-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/163.html +2023-02-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/162.html +2023-01-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/161.html +2023-01-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/160.html +2023-01-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/159.html +2023-01-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/158.html +2023-01-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/157.html +2023-01-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/156.html +2023-01-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/155.html +2023-01-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/154.html +2023-01-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/153.html +2023-01-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/152.html +2023-01-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/151.html +2023-01-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/150.html +2023-01-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/149.html +2023-01-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/148.html +2023-01-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/147.html +2023-01-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/146.html +2023-01-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/145.html +2023-01-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/144.html +2023-01-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/143.html +2023-01-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/142.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/141.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/140.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/139.html +2022-12-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/138.html +2022-12-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/137.html +2022-11-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/136.html +2022-11-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/135.html +2022-11-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/134.html +2022-11-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/133.html +2022-11-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/132.html +2022-11-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/131.html +2022-11-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/130.html +2022-11-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/129.html +2022-11-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/128.html +2022-11-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/127.html +2022-11-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/126.html +2022-11-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/125.html +2022-11-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/124.html +2022-11-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/123.html +2022-11-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/122.html +2022-11-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/121.html +2022-11-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/120.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/119.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/118.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/117.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/116.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/115.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/114.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/113.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/112.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/111.html +2022-10-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/110.html +2022-10-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/109.html +2022-10-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/108.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/107.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/106.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/105.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/104.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/103.html +2022-09-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/102.html +2022-09-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/101.html +2022-09-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/100.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/99.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/98.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/97.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/96.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/95.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/94.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/93.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/92.html +2022-08-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/91.html +2022-08-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/90.html +2022-08-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/89.html +2022-08-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/88.html +2022-07-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/87.html +2022-07-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/86.html +2022-07-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/85.html +2022-07-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/84.html +2022-07-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/83.html +2022-07-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/82.html +2022-07-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/81.html +2022-07-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/80.html +2022-07-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/79.html +2022-07-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/78.html +2022-06-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/77.html +2022-06-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/76.html +2022-06-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/75.html +2022-06-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/74.html +2022-06-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/73.html +2022-06-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/72.html +2022-06-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/71.html +2022-06-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/70.html +2022-06-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/69.html +2022-06-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/68.html +2022-06-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/67.html +2022-06-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/66.html +2022-06-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/65.html +2022-06-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/64.html +2022-06-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/63.html +2022-06-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/62.html +2022-06-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/61.html +2022-06-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/60.html +2022-06-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/59.html +2022-06-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/58.html +2022-05-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/57.html +2022-05-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/56.html +2022-05-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/55.html +2022-05-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/54.html +2022-05-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/53.html +2022-05-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/52.html +2022-05-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/51.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/50.html +2022-05-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/49.html +2022-05-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/48.html +2022-05-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/47.html +2022-05-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/46.html +2022-05-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/45.html +2022-05-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/44.html +2022-05-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/43.html +2022-05-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/42.html +2022-05-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/41.html +2022-05-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/40.html +2022-05-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/39.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/38.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/37.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/36.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/35.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/34.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/33.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/32.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/31.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/30.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/29.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/28.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/27.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/26.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/25.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/24.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/23.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/22.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/21.html +2022-05-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/20.html +2022-05-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/19.html +2022-05-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/18.html +2022-05-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/17.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/16.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/15.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/14.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/13.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/12.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/11.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/10.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/9.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/8.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/7.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/6.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/5.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/4.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/3.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/2.html +2022-04-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/news/1.html +2022-04-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4283.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4282.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4281.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4280.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4279.html +2024-01-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4278.html +2024-01-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4277.html +2023-12-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4276.html +2023-06-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4275.html +2023-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4274.html +2023-03-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4273.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4272.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4271.html +2023-02-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4270.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4269.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4268.html +2023-02-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4267.html +2023-02-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4266.html +2022-11-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4265.html +2022-11-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4264.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4263.html +2022-10-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4262.html +2022-10-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4261.html +2022-05-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4260.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4259.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4258.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4231.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4230.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4228.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4218.html +2023-02-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4177.html +2023-02-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4174.html +2023-02-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4175.html +2023-02-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4171.html +2023-02-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4193.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4161.html +2023-02-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4169.html +2023-02-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4180.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4179.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4178.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4182.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4107.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4136.html +2023-02-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4103.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4122.html +2023-02-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4121.html +2023-02-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4101.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4120.html +2023-02-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4109.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4081.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4093.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4089.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4017.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4007.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4037.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4031.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/4038.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3951.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3906.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3904.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3915.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3925.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3934.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3914.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3910.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3909.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3912.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3919.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3900.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3938.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3931.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3884.html +2023-02-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3881.html +2023-02-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3889.html +2023-02-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3869.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3892.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3868.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3891.html +2023-02-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3890.html +2023-02-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3817.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3816.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3807.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3815.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3812.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3814.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3804.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3806.html +2024-04-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3805.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3811.html +2024-04-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3803.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3802.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3808.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3810.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3798.html +2024-01-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3800.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3809.html +2024-04-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3822.html +2024-04-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3799.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3818.html +2024-04-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3785.html +2024-01-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3753.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3793.html +2024-01-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3751.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3769.html +2024-04-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3760.html +2024-04-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3788.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3770.html +2024-04-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3746.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3707.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3706.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3717.html +2023-12-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3743.html +2023-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3722.html +2024-01-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3721.html +2023-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3733.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3713.html +2023-12-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3735.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3712.html +2023-12-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3725.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3703.html +2023-11-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3724.html +2024-01-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3740.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3699.html +2023-12-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3700.html +2023-12-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3731.html +2023-12-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3741.html +2023-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3701.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3711.html +2023-12-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3720.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3728.html +2024-01-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3709.html +2023-12-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3719.html +2023-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3698.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3677.html +2023-11-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3695.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3657.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3676.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3656.html +2023-09-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3686.html +2023-11-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3652.html +2023-09-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3666.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3684.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3655.html +2023-09-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3665.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3672.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3671.html +2023-04-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3683.html +2023-11-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3694.html +2023-11-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3663.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3653.html +2023-09-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3692.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3650.html +2023-07-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3680.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3668.html +2023-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3681.html +2023-11-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3691.html +2023-11-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3659.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3670.html +2023-09-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3669.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3688.html +2023-11-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3649.html +2023-07-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3690.html +2023-11-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3661.html +2023-04-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3678.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3648.html +2023-07-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3651.html +2023-07-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3658.html +2023-09-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3660.html +2023-09-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3647.html +2023-07-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3617.html +2023-03-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3637.html +2023-07-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3627.html +2023-06-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3616.html +2023-03-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3626.html +2023-06-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3625.html +2023-06-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3636.html +2023-07-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3646.html +2023-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3604.html +2023-04-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3615.html +2023-03-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3635.html +2023-07-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3607.html +2023-03-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3643.html +2023-07-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3614.html +2023-04-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3642.html +2023-07-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3613.html +2023-03-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3623.html +2023-03-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3641.html +2023-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3633.html +2023-03-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3606.html +2023-03-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3632.html +2023-07-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3644.html +2023-07-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3603.html +2023-04-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3624.html +2023-06-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3602.html +2023-04-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3605.html +2023-04-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3620.html +2023-04-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3631.html +2023-07-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3599.html +2023-04-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3611.html +2023-03-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3628.html +2023-06-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3601.html +2023-04-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3629.html +2023-06-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3608.html +2023-04-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3610.html +2023-03-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3619.html +2023-03-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3622.html +2023-06-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3618.html +2023-03-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3640.html +2023-07-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3639.html +2023-07-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3638.html +2023-04-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3597.html +2023-04-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3557.html +2023-03-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3555.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3554.html +2023-03-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3594.html +2023-04-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3577.html +2023-03-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3565.html +2023-03-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3593.html +2023-03-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3553.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3550.html +2023-03-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3592.html +2023-03-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3549.html +2023-03-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3552.html +2023-03-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3586.html +2023-03-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3591.html +2023-03-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3563.html +2023-03-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3585.html +2023-03-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3575.html +2023-03-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3566.html +2023-03-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3574.html +2023-03-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3571.html +2023-03-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3582.html +2023-03-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3570.html +2023-03-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3573.html +2023-03-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3548.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3562.html +2023-03-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3569.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3561.html +2023-03-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3568.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3560.html +2023-03-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3590.html +2023-03-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3558.html +2023-03-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3559.html +2023-03-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3580.html +2023-03-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3581.html +2023-03-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3578.html +2023-03-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3589.html +2023-03-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3547.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3507.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3527.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3546.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3537.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3506.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3505.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3517.html +2023-03-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3535.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3536.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3526.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3543.html +2023-03-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3525.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3534.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3504.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3533.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3524.html +2023-03-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3541.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3502.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3515.html +2023-03-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3532.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3545.html +2023-03-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3513.html +2023-03-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3514.html +2023-03-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3503.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3523.html +2023-03-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3522.html +2023-03-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3544.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3500.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3499.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3501.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3498.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3512.html +2023-03-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3531.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3510.html +2023-03-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3538.html +2023-03-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3509.html +2023-03-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3540.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3519.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3530.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3518.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3529.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3508.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3520.html +2023-03-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3528.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3539.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3497.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3487.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3489.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3490.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3488.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/3494.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2957.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2967.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2937.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2956.html +2023-07-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2966.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2955.html +2023-07-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2936.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2965.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2934.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2953.html +2023-07-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2973.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2961.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2964.html +2023-11-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2932.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2975.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2935.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2945.html +2023-03-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2944.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2963.html +2023-11-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2962.html +2023-11-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2972.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2931.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2943.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2946.html +2023-03-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2974.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2939.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2942.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2960.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2952.html +2023-07-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2969.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2959.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2971.html +2023-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2930.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2929.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2941.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2948.html +2023-03-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2940.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2958.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2970.html +2023-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2938.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2951.html +2023-07-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2927.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2887.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2895.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2926.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2886.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2917.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2907.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2906.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2884.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2905.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2924.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2902.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2915.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2894.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2912.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2893.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2904.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2914.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2923.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2922.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2901.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2903.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2913.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2883.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2911.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2921.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2879.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2882.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2881.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2899.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2880.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2889.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2892.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2888.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2910.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2918.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2920.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2900.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2878.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2909.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2891.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2898.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2877.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2857.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2876.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2837.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2864.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2846.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2835.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2834.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2852.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2872.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2832.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2854.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2830.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2859.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2860.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2869.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2838.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2850.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2829.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2827.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2796.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2826.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2795.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2816.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2794.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2814.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2785.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2786.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2803.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2783.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2806.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2784.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2821.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2820.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2782.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2805.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2781.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2822.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2823.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2790.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2812.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2778.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2811.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2780.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2809.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2792.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2798.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2819.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2800.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2808.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2789.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2791.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2779.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2788.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2777.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2767.html +2023-02-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2766.html +2023-02-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2765.html +2023-02-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2775.html +2023-02-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2762.html +2023-02-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2772.html +2023-02-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2770.html +2023-02-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2769.html +2023-02-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/2768.html +2023-02-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1777.html +2022-04-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1121.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1111.html +2023-12-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1131.html +2024-04-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1120.html +2024-01-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1110.html +2023-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1119.html +2024-01-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1117.html +2024-01-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1127.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1135.html +2024-04-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1136.html +2024-04-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1126.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1130.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1116.html +2024-01-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1108.html +2023-12-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1129.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1134.html +2024-04-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1107.html +2023-12-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1128.html +2024-03-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1109.html +2023-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1123.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1104.html +2023-12-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1124.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1105.html +2023-12-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1132.html +2024-04-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1103.html +2023-12-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1115.html +2024-01-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1114.html +2024-01-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1122.html +2024-01-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1113.html +2023-12-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1075.html +2023-11-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1074.html +2023-11-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1095.html +2023-12-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1085.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1094.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1084.html +2023-11-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1061.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1060.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1080.html +2023-11-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1099.html +2023-12-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1090.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1059.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1098.html +2023-12-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1058.html +2023-09-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1079.html +2023-11-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1057.html +2023-09-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1078.html +2023-11-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1088.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1069.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1068.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1056.html +2023-09-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1097.html +2023-12-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1096.html +2023-12-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1077.html +2023-11-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1055.html +2023-07-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1066.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1087.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1092.html +2023-12-15 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1054.html +2023-07-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1072.html +2023-11-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1083.html +2023-11-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1064.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1082.html +2023-11-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1063.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1062.html +2023-11-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1052.html +2023-07-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1053.html +2023-07-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1051.html +2023-07-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1031.html +2023-05-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1041.html +2023-06-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1021.html +2023-04-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1050.html +2023-07-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1049.html +2023-07-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1011.html +2023-04-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1030.html +2023-05-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1040.html +2023-06-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1020.html +2023-04-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1046.html +2023-07-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1037.html +2023-05-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1048.html +2023-07-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1045.html +2023-07-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1009.html +2023-04-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1010.html +2023-04-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1028.html +2023-05-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1018.html +2023-04-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1047.html +2023-07-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1008.html +2023-04-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1039.html +2023-05-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1027.html +2023-05-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1044.html +2023-06-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1017.html +2023-04-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1026.html +2023-04-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1019.html +2023-04-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1036.html +2023-05-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1025.html +2023-04-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1038.html +2023-05-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1024.html +2023-04-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1007.html +2023-04-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1014.html +2023-04-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1006.html +2023-04-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1016.html +2023-04-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1042.html +2023-06-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1004.html +2023-03-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1003.html +2023-03-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1043.html +2023-06-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1034.html +2023-05-25 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1005.html +2023-03-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1032.html +2023-05-19 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1012.html +2023-04-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1022.html +2023-04-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/997.html +2023-03-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1001.html +2023-03-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1000.html +2023-03-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/971.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/991.html +2023-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/980.html +2023-03-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/961.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/960.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/970.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/990.html +2023-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/979.html +2023-03-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/976.html +2023-03-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/978.html +2023-03-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/975.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/999.html +2023-03-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/959.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/988.html +2023-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/989.html +2023-03-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/958.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/996.html +2023-03-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/998.html +2023-03-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/957.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/968.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/974.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/977.html +2023-03-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/955.html +2023-03-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/984.html +2023-03-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/995.html +2023-03-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/963.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/987.html +2023-03-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/973.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/986.html +2023-03-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/983.html +2023-03-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/994.html +2023-03-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/985.html +2023-03-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/993.html +2023-03-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/966.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/992.html +2023-03-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/954.html +2023-03-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/982.html +2023-03-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/962.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/965.html +2023-03-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/964.html +2023-03-05 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/972.html +2023-03-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/940.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/949.html +2023-03-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/921.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/952.html +2023-03-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/932.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/951.html +2023-03-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/950.html +2023-03-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/912.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/931.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/930.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/942.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/941.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/906.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/905.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/915.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/929.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/939.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/928.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/910.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/948.html +2023-03-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/938.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/919.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/947.html +2023-03-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/918.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/927.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/909.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/908.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/946.html +2023-03-02 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/937.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/945.html +2023-03-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/907.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/936.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/944.html +2023-03-01 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/917.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/926.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/904.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/925.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/935.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/914.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/924.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/903.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/916.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/933.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/913.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/943.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/902.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/882.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/862.html +2023-01-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/892.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/901.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/881.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/860.html +2023-01-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/900.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/899.html +2023-02-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/872.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/890.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/857.html +2023-01-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/869.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/878.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/856.html +2023-01-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/880.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/877.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/891.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/879.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/897.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/871.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/889.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/898.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/854.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/888.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/866.html +2023-01-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/868.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/885.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/887.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/865.html +2023-01-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/876.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/894.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/864.html +2023-01-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/853.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/873.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/893.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/896.html +2023-02-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/867.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/884.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/883.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/863.html +2023-01-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/895.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/852.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/813.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/823.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/833.html +2022-08-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/821.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/830.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/819.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/818.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/810.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/842.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/829.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/841.html +2022-11-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/816.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/826.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/836.html +2022-11-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/805.html +2022-05-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/824.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/827.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/837.html +2022-11-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/815.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/759.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/797.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/774.html +2022-04-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/793.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/780.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/769.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/800.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/789.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/798.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/767.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/795.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/775.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/723.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/711.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/753.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/744.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/743.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/727.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/737.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/747.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/736.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/705.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/675.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/674.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/702.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/685.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/666.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/672.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/692.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/664.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/681.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/661.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/677.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/687.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/699.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/660.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/698.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/656.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/655.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/654.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/645.html +2022-05-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/636.html +2022-05-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/644.html +2022-05-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/615.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/614.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/613.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/642.html +2022-05-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/624.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/653.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/641.html +2022-05-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/652.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/610.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/626.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/625.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/611.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/621.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/620.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/634.html +2022-05-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/619.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/647.html +2022-05-06 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/638.html +2022-05-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/618.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/630.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/617.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/606.html +2022-04-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/601.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/600.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/591.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/570.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/599.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/590.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/586.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/605.html +2022-04-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/604.html +2023-02-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/566.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/584.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/577.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/583.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/563.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/593.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/565.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/576.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/575.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/602.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/520.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/521.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/531.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/551.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/541.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/519.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/518.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/556.html +2022-08-03 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/517.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/540.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/515.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/530.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/537.html +2023-02-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/527.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/528.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/526.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/536.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/545.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/552.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/553.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/525.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/532.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/548.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/535.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/513.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/546.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/524.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/522.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/533.html +2023-02-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/542.html +2023-02-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/471.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/501.html +2023-01-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/510.html +2023-02-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/490.html +2023-01-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/509.html +2023-01-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/479.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/499.html +2023-01-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/498.html +2023-01-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/508.html +2023-01-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/489.html +2023-01-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/497.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/469.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/506.html +2022-09-22 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/487.html +2022-08-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/468.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/477.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/505.html +2023-01-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/476.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/484.html +2023-01-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/502.html +2023-01-31 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/464.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/483.html +2023-01-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/463.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/493.html +2023-01-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/472.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/485.html +2023-01-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/461.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/451.html +2022-11-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/450.html +2022-11-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/441.html +2022-11-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/421.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/430.html +2022-11-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/440.html +2022-11-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/439.html +2022-11-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/420.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/427.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/459.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/419.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/460.html +2022-12-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/429.html +2022-05-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/444.html +2022-11-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/448.html +2022-05-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/443.html +2022-11-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/447.html +2022-11-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/426.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/428.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/417.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/437.html +2022-11-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/425.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/442.html +2022-05-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/416.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/455.html +2022-12-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/415.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/435.html +2022-11-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/433.html +2022-11-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/423.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/432.html +2022-11-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/453.html +2022-11-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/413.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/414.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/452.html +2022-11-16 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/412.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/456.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/401.html +2022-10-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/411.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/410.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/381.html +2022-10-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/409.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/369.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/408.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/407.html +2022-10-28 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/397.html +2022-10-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/399.html +2022-10-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/380.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/394.html +2022-10-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/393.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/389.html +2022-10-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/378.html +2022-08-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/388.html +2022-10-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/373.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/365.html +2022-08-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/377.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/384.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/385.html +2022-10-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/376.html +2022-10-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/404.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/403.html +2022-10-21 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/406.html +2022-11-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/374.html +2022-10-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/375.html +2022-10-27 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/405.html +2022-11-11 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/382.html +2022-08-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/361.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/341.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/321.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/340.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/351.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/339.html +2022-05-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/350.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/338.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/346.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/319.html +2022-05-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/327.html +2022-05-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/335.html +2022-05-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/317.html +2022-05-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/316.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/326.html +2022-05-24 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/353.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/334.html +2022-05-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/325.html +2022-05-23 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/324.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/343.html +2022-05-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/345.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/310.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/271.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/289.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/280.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/285.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/267.html +2022-05-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/278.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/269.html +2022-05-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/308.html +2022-05-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/268.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/297.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/306.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/296.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/274.html +2022-05-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/294.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/302.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/293.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/292.html +2022-05-20 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/263.html +2022-05-18 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/238.html +2022-05-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/237.html +2022-05-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/244.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/257.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/227.html +2022-05-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/234.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/216.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/226.html +2022-05-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/222.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/232.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/213.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/223.html +2022-05-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/243.html +2022-05-17 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/252.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/212.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/211.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/191.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/171.html +2022-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/190.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/168.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/200.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/189.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/166.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/180.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/188.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/205.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/208.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/178.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/165.html +2022-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/163.html +2022-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/177.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/182.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/202.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/172.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/203.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/131.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/121.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/120.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/119.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/159.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/147.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/127.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/149.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/158.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/115.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/148.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/126.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/146.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/113.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/123.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/124.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/142.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/154.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/134.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/133.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/136.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/114.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/112.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/144.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/153.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/155.html +2022-05-14 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/111.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/70.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/81.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/69.html +2022-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/68.html +2022-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/88.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/91.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/107.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/65.html +2022-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/66.html +2022-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/89.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/108.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/100.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/97.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/96.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/105.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/62.html +2022-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/95.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/73.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/83.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/104.html +2022-05-13 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/72.html +2022-05-10 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/75.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/82.html +2022-05-12 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/31.html +2022-05-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/60.html +2022-05-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/50.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/59.html +2022-05-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/48.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/41.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/30.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/21.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/20.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/28.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/29.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/47.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/58.html +2022-05-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/27.html +2022-05-04 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/40.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/36.html +2022-05-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/18.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/39.html +2022-05-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/46.html +2022-05-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/56.html +2022-05-09 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/24.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/15.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/44.html +2022-05-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/25.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/33.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/12.html +2022-04-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/14.html +2022-04-30 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/43.html +2022-05-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/22.html +2022-04-29 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/53.html +2022-05-08 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/13.html +2022-04-26 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/32.html +2022-05-07 +monthly +0.8 + + +http://www.zhaobiaopai.com/jishu/1.html +2022-04-26 +monthly +0.8 + + \ No newline at end of file diff --git a/upload.php b/upload.php new file mode 100644 index 0000000..38d6c6f --- /dev/null +++ b/upload.php @@ -0,0 +1,238 @@ + $errmsg)); + if(isset($_GET['callback'])) { + if(preg_match("/^[\w_]+$/", $_GET['callback'])) { + exit(htmlspecialchars($_GET['callback']).'('.$result.')'); + } else { + exit(json_encode(array('state'=> 'Error callback'))); + } + } + exit($result); + } + if($errjs) dalert($errmsg, '', $errjs); + dalert($errmsg); +} +$upload_table = $DT_PRE.'upload_'.($_userid%10); +if(!in_array($from, array('thumb', 'album', 'photo', 'editor', 'attach', 'file'))) uperr('Error(1)'.'Access Denied'); +if(!$MG['upload']) uperr('Error(2)'.lang('message->upload_refuse')); +if($MG['uploadcredit'] > 0 && $_credit < $MG['uploadcredit']) uperr('Error(3)'.lang('message->upload_credit', array($MG['uploadcredit'], $_credit))); +$remote = isset($remote) ? trim($remote) : ''; +if(!$_FILES && !$remote) uperr('Error(4)'.lang('message->upload_fail')); +if($DT['uploadlog'] && $MG['uploadday']) { + $condition = 'addtime>'.($DT_TIME - 86400); + $condition .= $_username ? " AND username='$_username'" : " AND ip='$DT_IP'"; + $r = $db->get_one("SELECT COUNT(*) AS num FROM {$upload_table} WHERE $condition"); + if($r['num'] >= $MG['uploadday']) uperr('Error(5)'.lang('message->upload_limit_day', array($MG['uploadday'], $r['num']))); +} +require DT_ROOT.'/include/post.func.php'; +$uploaddir = 'file/upload/'.timetodate($DT_TIME, $DT['uploaddir']).'/'; +is_dir(DT_ROOT.'/'.$uploaddir) or dir_create(DT_ROOT.'/'.$uploaddir); +if($MG['uploadtype']) $DT['uploadtype'] = $MG['uploadtype']; +if($MG['uploadsize']) $DT['uploadsize'] = $MG['uploadsize']; +if($remote && strlen($remote) > 17 && strpos($remote, '://') !== false) { + require DT_ROOT.'/include/remote.class.php'; + $do = new remote($remote, $uploaddir); +} else { + require DT_ROOT.'/include/upload.class.php'; + $do = new upload($_FILES, $uploaddir); +} +$js = $errjs = ''; +if($from == 'thumb' || $from == 'album' || $from == 'photo' || $from == 'file') { + $errjs .= 'window.parent.cDialog();'; +} else if($from == 'editor' || $from == 'attach') { + if(DT_EDITOR == 'fckditor') $errjs .= 'window.parent.GetE("frmUpload").reset();'; +} +if($do->save()) { + $session = new dsession(); + $limit = intval($MG['uploadlimit']); + $total = isset($_SESSION['uploads']) ? count($_SESSION['uploads']) : 0; + if($limit && $total > $limit - 1) { + file_del(DT_ROOT.'/'.$do->saveto); + uperr('Error(6)'.lang('message->upload_limit', array($limit)), $errjs); + } + $img_info = @getimagesize(DT_ROOT.'/'.$do->saveto); + if(in_array($do->ext, array('jpg', 'jpeg', 'gif', 'png', 'bmp', 'swf'))) { + $upload_bad = 0; + if($img_info) { + $upload_mime = array('jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'gif' => 'image/gif', 'png' => 'image/png', 'bmp' => 'image/bmp', 'swf' => 'application/x-shockwave-flash'); + if($img_info['mime'] != $upload_mime[$do->ext]) $upload_bad = 1; + } else { + $upload_bad = 1; + } + if($upload_bad) { + file_del(DT_ROOT.'/'.$do->saveto); + uperr('Error(7)'.lang('message->upload_bad'), $errjs); + } + } + if(in_array($do->ext, array('jpg', 'jpeg')) && $img_info['channels'] == 4) { + file_del(DT_ROOT.'/'.$do->saveto); + uperr('Error(8)'.lang('message->upload_cmyk'), $errjs); + } + $img_w = $img_h = 0; + if($do->image) { + require DT_ROOT.'/include/image.class.php'; + if($do->ext == 'gif' && in_array($from, array('thumb', 'album', 'photo'))) { + if(!function_exists('imagegif') || !function_exists('imagecreatefromgif')) { + file_del(DT_ROOT.'/'.$do->saveto); + uperr('Error(9)'.lang('message->upload_jpg'), $errjs); + } + } + if($DT['gif_ani'] && $do->ext == 'gif') { + if(strpos(file_get(DT_ROOT.'/'.$do->saveto), chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0') !== false) { + $DT['max_image'] = $DT['water_type'] = $width = $height = 0; + } + } + if($DT['bmp_jpg'] && $do->ext == 'bmp') { + require DT_ROOT.'/include/bmp.func.php'; + $bmp_src = DT_ROOT.'/'.$do->saveto; + $bmp = imagecreatefrombmp($bmp_src); + if($bmp) { + $do->saveto = str_replace('.bmp', '.jpg', $do->saveto); + $do->ext = 'jpg'; + imagejpeg($bmp, DT_ROOT.'/'.$do->saveto); + file_del($bmp_src); + if(DT_CHMOD) @chmod(DT_ROOT.'/'.$do->saveto, DT_CHMOD); + } + } + $img_w = $img_info[0]; + $img_h = $img_info[1]; + if($DT['max_image'] && $img_w > $DT['max_image']) { + $img_h = intval($DT['max_image']*$img_h/$img_w); + $img_w = $DT['max_image']; + $image = new image(DT_ROOT.'/'.$do->saveto); + $image->thumb($img_w, $img_h); + } + if($from == 'thumb') { + if($width && $height) { + $image = new image(DT_ROOT.'/'.$do->saveto); + $image->thumb($width, $height, $DT['thumb_title']); + $img_w = $width; + $img_h = $height; + $do->file_size = filesize(DT_ROOT.'/'.$do->saveto); + } + } else if($from == 'album' || $from == 'photo') { + $saveto = $do->saveto; + $do->saveto = $do->saveto.'.thumb.'.$do->ext; + file_copy(DT_ROOT.'/'.$saveto, DT_ROOT.'/'.$do->saveto); + $middle = $saveto.'.middle.'.$do->ext; + file_copy(DT_ROOT.'/'.$saveto, DT_ROOT.'/'.$middle); + if($DT['water_type'] == 2) { + $image = new image(DT_ROOT.'/'.$saveto); + $image->waterimage(); + } else if($DT['water_type'] == 1) { + $image = new image(DT_ROOT.'/'.$saveto); + $image->watertext(); + } + if($DT['water_type'] && $DT['water_com'] && $MG['type']) { + $image = new image(DT_ROOT.'/'.$saveto); + $image->text = $_company; + $image->pos = 5; + $image->watertext(); + } + if($from == 'photo') $DT['thumb_album'] = 0; + $image = new image(DT_ROOT.'/'.$do->saveto); + $image->thumb($width, $height, $DT['thumb_album']); + $image = new image(DT_ROOT.'/'.$middle); + $image->thumb($DT['middle_w'], $DT['middle_h'], $DT['thumb_album']); + if($DT['water_middle'] && $DT['water_type']) { + if($DT['water_type'] == 2) { + $image = new image(DT_ROOT.'/'.$middle); + $image->waterimage(); + } else if($DT['water_type'] == 1) { + $image = new image(DT_ROOT.'/'.$middle); + $image->watertext(); + } + } + } else if($from == 'editor') { + if($_groupid == 1 && DT_EDITOR == 'fckeditor' && !isset($watermark)) $DT['water_type'] = 0; + if($DT['water_type']) { + $image = new image(DT_ROOT.'/'.$do->saveto); + if($DT['water_type'] == 2) { + $image->waterimage(); + } else if($DT['water_type'] == 1) { + $image->watertext(); + } + } + } + } + $saveto = linkurl($do->saveto); + if($DT['ftp_remote'] && $DT['remote_url']) { + require DT_ROOT.'/include/ftp.class.php'; + $ftp = new dftp($DT['ftp_host'], $DT['ftp_user'], $DT['ftp_pass'], $DT['ftp_port'], $DT['ftp_path'], $DT['ftp_pasv'], $DT['ftp_ssl']); + if($ftp->connected) { + $exp = explode("file/upload/", $saveto); + $remote = $exp[1]; + if($ftp->dftp_put($do->saveto, $remote)) { + $saveto = $DT['remote_url'].$remote; + $DT['ftp_save'] or file_del(DT_ROOT.'/'.$do->saveto); + if(strpos($do->saveto, '.thumb.') !== false) { + $local = str_replace('.thumb.'.$do->ext, '', $do->saveto); + $remote = str_replace('.thumb.'.$do->ext, '', $exp[1]); + $ftp->dftp_put($local, $remote); + $DT['ftp_save'] or file_del(DT_ROOT.'/'.$local); + $local = str_replace('.thumb.'.$do->ext, '.middle.'.$do->ext, $do->saveto); + $remote = str_replace('.thumb.'.$do->ext, '.middle.'.$do->ext, $exp[1]); + $ftp->dftp_put($local, $remote); + $DT['ftp_save'] or file_del(DT_ROOT.'/'.$local); + } + } + } + } + $fid = isset($fid) ? $fid : ''; + if(isset($old) && $old && in_array($from, array('thumb', 'photo'))) delete_upload($old, $_userid); + $_SESSION['uploads'][] = $saveto; + if($DT['uploadlog']) $db->query("INSERT INTO {$upload_table} (item,fileurl,filesize,fileext,upfrom,width,height,moduleid,username,ip,addtime,itemid) VALUES ('".md5($saveto)."','$saveto','$do->file_size','$do->ext','$from','$img_w','$img_h','$moduleid','$_username','$DT_IP','$DT_TIME','$itemid')"); + if($MG['uploadcredit'] > 0) { + require DT_ROOT.'/include/module.func.php'; + credit_add($_username, -$MG['uploadcredit']); + credit_record($_username, -$MG['uploadcredit'], 'system', $L['upload'], $from); + } + $pr = 'parent.document.getElementById'; + if($from == 'thumb') { + if($action == 'webuploader') exit('{"error":0,"url":"'.str_replace('/', '\/', $saveto).'"}'); + $js .= 'try{'.$pr.'("d'.$fid.'").src="'.$saveto.'";}catch(e){}'; + $js .= $pr.'("'.$fid.'").value="'.$saveto.'";'; + $js .= 'window.parent.cDialog();'; + } else if($from == 'album' || $from == 'photo') { + if($action == 'webuploader') exit('{"error":0,"url":"'.str_replace('/', '\/', $saveto).'"}'); + $js .= 'window.parent.getAlbum("'.$saveto.'", "'.$fid.'");'; + $js .= $from == 'photo' ? $pr.'("dform").submit();' : 'window.parent.cDialog();'; + } else if($from == 'editor') { + if($action == 'kindeditor' || $action == 'webuploader') exit('{"error":0,"url":"'.str_replace('/', '\/', $saveto).'"}'); + if(DT_EDITOR == 'ueditor' || DT_EDITOR == 'umeditor') exit('{"state":"SUCCESS","url":"'.str_replace('/', '\/', $saveto).'"}'); + $js .= 'window.parent.SetUrl("'.$saveto.'");'; + $js .= 'window.parent.GetE("frmUpload").reset();'; + } else if($from == 'attach') { + $js .= 'window.parent.GetE("txtUrl").value="'.$saveto.'";'; + $js .= 'window.parent.window.parent.Ok();'; + } else if($from == 'file') { + if($moduleid == 2 && $fid == 'chat') { + $js .= 'window.parent.chat_send("'.$saveto.'");'; + } else { + if($action == 'webuploader') exit('{"error":0,"url":"'.str_replace('/', '\/', $saveto).'","size":'.dround($do->file_size/1024/1024, 2).'}'); + $js .= $pr.'("'.$fid.'").value="'.$saveto.'";'; + if($module == 'down') $js .= 'window.parent.initd('.dround($do->file_size/1024/1024, 2).');'; + } + $js .= 'window.parent.cDialog();'; + } + dalert('', '', $js); +} else { + uperr('Error(10)'.$do->errmsg, $errjs); +} +?> \ No newline at end of file diff --git a/version.inc.php b/version.inc.php new file mode 100644 index 0000000..3aae6bf --- /dev/null +++ b/version.inc.php @@ -0,0 +1,5 @@ + \ No newline at end of file