<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>trylife</title>
	<atom:link href="http://www.trylife.cn/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.trylife.cn</link>
	<description>life&#039;s short , try more...</description>
	<lastBuildDate>Sat, 03 Dec 2011 21:04:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>开发使用并出售</title>
		<link>http://www.trylife.cn/dev-use-and-sale/</link>
		<comments>http://www.trylife.cn/dev-use-and-sale/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 21:03:25 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[帝国CMS二次开发]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1744</guid>
		<description><![CDATA[插件写的越来越多，自己用的很少很少。。木有正正经经的自己的站。。。 下面自己的站计划中了，并且有一个插件自行开发，并且自己使用，而且同时出售的模式。 前几个插件会有：聚会插件->短信插件（需要一个好的SP）->商家->订餐->团购&#8230;.. 另外最近帝国CMS7.0已经开始了，希望大家能给王猛王大人 多提一些有利于二次开发和插件开发方面的建议（个人想法）。]]></description>
			<content:encoded><![CDATA[<p>插件写的越来越多，自己用的很少很少。。木有正正经经的自己的站。。。<br />
下面自己的站计划中了，并且有一个插件自行开发，并且自己使用，而且同时出售的模式。<br />
前几个插件会有：聚会插件->短信插件（需要一个好的SP）->商家->订餐->团购&#8230;..<br />
另外最近帝国CMS7.0已经开始了，希望大家能给王猛王大人 多提一些有利于二次开发和插件开发方面的建议（个人想法）。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/dev-use-and-sale/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>trylife帝国CMS插件开发笔记(1)</title>
		<link>http://www.trylife.cn/trylifes-ecms-plugin-dev-notes-1/</link>
		<comments>http://www.trylife.cn/trylifes-ecms-plugin-dev-notes-1/#comments</comments>
		<pubDate>Thu, 11 Aug 2011 08:08:54 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[帝国CMS二次开发]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1733</guid>
		<description><![CDATA[先动手，别被麻烦吓到 总可能认为会有多麻烦，想的太多想到的问题可能也会很多，这样的情况不如先动手，做好哪些已经知道的，熟悉的；即使是只想好了一半，那也在动手过程中让大脑自己思考，大脑有非意识下思考的能力，这个不懂担心，习惯了这种方式非意识思会把结果给你。先迈出第一步不要停滞不前，这不是人生，错了可以回头再来。 别力求完美，有阶段有计划进行 追求完美本身是好事，不过完美是不存在的，也不可能一口吃个胖子，有阶段有计划的进行，这样可以不让思维太膨胀，BUG也不会一拥而上打击你！像凤姐这样拿美国绿卡，是有计划有预谋，我们也要有计划，有步骤； 将功能分开做 插件不是CMS，况且现在的CMS也有块状结构，可以舍弃不需要的安装。将功能分开制作，可以分开更新修正，可以分开产生更大的利益，1+1>2;]]></description>
			<content:encoded><![CDATA[<h3>先动手，别被麻烦吓到</h3>
<p>总可能认为会有多麻烦，想的太多想到的问题可能也会很多，这样的情况不如先动手，做好哪些已经知道的，熟悉的；即使是只想好了一半，那也在动手过程中让大脑自己思考，大脑有非意识下思考的能力，这个不懂担心，习惯了这种方式非意识思会把结果给你。先迈出第一步不要停滞不前，这不是人生，错了可以回头再来。</p>
<h3>别力求完美，有阶段有计划进行</h3>
<p>追求完美本身是好事，不过完美是不存在的，也不可能一口吃个胖子，有阶段有计划的进行，这样可以不让思维太膨胀，BUG也不会一拥而上打击你！像凤姐这样拿美国绿卡，是有计划有预谋，我们也要有计划，有步骤；</p>
<h3>将功能分开做</h3>
<p>插件不是CMS，况且现在的CMS也有块状结构，可以舍弃不需要的安装。将功能分开制作，可以分开更新修正，可以分开产生更大的利益，1+1>2;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/trylifes-ecms-plugin-dev-notes-1/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>更换了猪蹄</title>
		<link>http://www.trylife.cn/new-blog-theme-20110606/</link>
		<comments>http://www.trylife.cn/new-blog-theme-20110606/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 15:42:13 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[猪蹄]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1721</guid>
		<description><![CDATA[番薯、鸟蛋、你个茄子的总是说我的博客很丑很丑，奶奶个球蛋白的那个伴随我4年的猪蹄今天换掉了，老猪蹄4年前还是很风流清爽的。现用的猪蹄是从http://immmmm.com买的。本来是要套用自己设计的那个，不过设计进度实在是太慢了。现在用的那个LOGO就是要设计的那个，想起个名字叫trylife-color,要是弄出来估计要半年后了 &#8211; -！ trylife正好7个字母 用红橙黄绿青蓝紫7种颜色，嘎嘎 是不是很有味道！]]></description>
			<content:encoded><![CDATA[<p>番薯、鸟蛋、你个茄子的总是说我的博客很丑很丑，奶奶个球蛋白的那个伴随我4年的猪蹄今天换掉了，老猪蹄4年前还是很风流清爽的。现用的猪蹄是从http://immmmm.com买的。本来是要套用自己设计的那个，不过设计进度实在是太慢了。现在用的那个LOGO就是要设计的那个，想起个名字叫trylife-color,要是弄出来估计要半年后了 &#8211; -！</p>
<p>trylife正好7个字母 用红橙黄绿青蓝紫7种颜色，嘎嘎 是不是很有味道！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/new-blog-theme-20110606/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>帝国CMS ping插件完成</title>
		<link>http://www.trylife.cn/ecms-ping-plugin-finish/</link>
		<comments>http://www.trylife.cn/ecms-ping-plugin-finish/#comments</comments>
		<pubDate>Thu, 26 May 2011 18:58:19 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[帝国CMS]]></category>
		<category><![CDATA[帝国CMS二次开发]]></category>
		<category><![CDATA[帝国CMS插件]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1673</guid>
		<description><![CDATA[完成之后测试了下,因为我们都没有开放RSS，也没有在任何网页提供RSS地址，所以根据蜘蛛是不是来爬RSS判断蜘蛛是不是通过ping来的，ping插件作用就是只能引来蜘蛛，关于收录与否就不是ping插件能做到的了； 之所以ping大多用于博客，是因为博客更新不是那么频繁，不想im286这样的牛坛子N万水军蜘蛛从来不舍得离开；ping插件对于更新缓慢的站效果十分明显！ 测试发现google真奶奶的喜欢RSS 测试人 测试网站 测试结果 trylife http://plugin.trylife.cn 来了google和一些不知名的蜘蛛 baidu一直没来，木有收录最新网页 sa http://www.wlshw.com 一群蜘蛛，baidu google都来了，，还收录了最新的网页]]></description>
			<content:encoded><![CDATA[<p>完成之后测试了下,因为我们都没有开放RSS，也没有在任何网页提供RSS地址，所以根据蜘蛛是不是来爬RSS判断蜘蛛是不是通过ping来的，ping插件作用就是只能引来蜘蛛，关于收录与否就不是ping插件能做到的了；</p>
<p>之所以ping大多用于博客，是因为博客更新不是那么频繁，不想im286这样的牛坛子N万水军蜘蛛从来不舍得离开；ping插件对于更新缓慢的站效果十分明显！</p>
<p>测试发现google真奶奶的喜欢RSS</p>
<p><img src="http://www.trylife.cn/wp-content/uploads/2011/05/google-spider-rss.jpg" alt="" title="google-spider-rss" width="660" height="292" class="alignnone size-full wp-image-1681" /></p>
<style>
.date_table {text-align:left; color:#093E56;font-size:12px; width:600px;} 
.date_table .header {background:#D3DCE3; font-weight:normal; color:#ffffff; }  
.date_table tr{background:#E5E5E5;}
.date_table tr .red{color:red;}
.date_table .odd{background:#ffffff}
.date_table .even{background:#D5E6F2}
.date_table .header{background:#1D507D;color:ffffff;}
.date_table td,th{padding:3px 6px;}
.date_table .same {color:gray;font-weight:normal;}
.date_table .resizestyle{color:red;}
.date_table .newfile{background:green;color:#ffffff}
.date_table .footerinfo {padding:5px;color:gray; font-size:9px;}
.footerinfo h2 {line-height:8px;}
.footerinfo a{color:#666666; text-decoration:none;}
</style>
<table  class="date_table">
<tr class="header">
<td><b>测试人</td>
<td>测试网站</td>
<td>测试结果</td>
</tr>
<tr class="odd">
<td>trylife</td>
<td>http://plugin.trylife.cn</td>
<td>来了google和一些不知名的蜘蛛 baidu一直没来，木有收录最新网页</td>
</tr>
<tr class="even">
<td>sa</td>
<td>http://www.wlshw.com</td>
<td>一群蜘蛛，baidu google都来了，，还收录了最新的网页</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/ecms-ping-plugin-finish/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>openid怎么登陆到帝国CMS</title>
		<link>http://www.trylife.cn/openid-connect-ecms/</link>
		<comments>http://www.trylife.cn/openid-connect-ecms/#comments</comments>
		<pubDate>Tue, 24 May 2011 03:29:18 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[帝国CMS]]></category>
		<category><![CDATA[帝国CMS二次开发]]></category>
		<category><![CDATA[帝国CMS插件]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1656</guid>
		<description><![CDATA[帝国CMS会员数据主表： http://www.phome.net/doc/dbdoc/66/page/phome_enewsmember.html 字段名 类型 解释 附加说明 userid int(11) 用户ID username varchar(30) 用户名 password varchar(32) 用户密码 rnd varchar(30) 随机认证码 email varchar(50) 联系邮箱 registertime datetime 注册时间 groupid smallint(6) 会员组ID userfen int(11) 点数 userdate int(11) 有效期 money float(11,2) 金额 zgroupid smallint(6) 到期后转向会员组ID havemsg tinyint(1) 是否有短信息 1为提示有短信息，0为不提示 checked tinyint(1) 是否审核 1为已审核，0为未审核 salt varchar(8) salt密码加密随机码 相关字段说明 涉及登陆的字段有username,password,rnd,salt,checked username: 就是用户名不用说 rnd:是randomize的缩写，取得随机数的意思，记录中会员每登陆一次变一次，用这个随机数来判断当前登陆是否有效，用两个非IE内核浏览器登陆同一个会员，第一个登陆的被挤掉就是RND的效果。 [...]]]></description>
			<content:encoded><![CDATA[<h3>帝国CMS会员数据主表：</h3>
<p>http://www.phome.net/doc/dbdoc/66/page/phome_enewsmember.html</p>
<table class="tableborder" border="0" cellspacing="1" cellpadding="3" width="100%">
<tbody>
<tr class="header">
<td width="20%" height="30">字段名</td>
<td width="15%">类型</td>
<td width="20%">解释</td>
<td width="45%">附加说明</td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>userid</strong></td>
<td bgcolor="#FFFFFF">int(11)</td>
<td bgcolor="#FFFFFF">用户ID</td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><span style="color: #ff0000;"><strong>username</strong></span></td>
<td bgcolor="#FFFFFF"><span style="color: #ff0000;">varchar(30)</span></td>
<td bgcolor="#FFFFFF"><span style="color: #ff0000;">用户名</span></td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><span style="color: #ff0000;"><strong>password</strong></span></td>
<td bgcolor="#FFFFFF"><span style="color: #ff0000;">varchar(32)</span></td>
<td bgcolor="#FFFFFF"><span style="color: #ff0000;">用户密码</span></td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><span style="color: #ff0000;"><strong>rnd</strong></span></td>
<td bgcolor="#FFFFFF"><span style="color: #ff0000;">varchar(30)</span></td>
<td bgcolor="#FFFFFF"><span style="color: #ff0000;">随机认证码</span></td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>email</strong></td>
<td bgcolor="#FFFFFF">varchar(50)</td>
<td bgcolor="#FFFFFF">联系邮箱</td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>registertime</strong></td>
<td bgcolor="#FFFFFF">datetime</td>
<td bgcolor="#FFFFFF">注册时间</td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>groupid</strong></td>
<td bgcolor="#FFFFFF">smallint(6)</td>
<td bgcolor="#FFFFFF">会员组ID</td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>userfen</strong></td>
<td bgcolor="#FFFFFF">int(11)</td>
<td bgcolor="#FFFFFF">点数</td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>userdate</strong></td>
<td bgcolor="#FFFFFF">int(11)</td>
<td bgcolor="#FFFFFF">有效期</td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>money</strong></td>
<td bgcolor="#FFFFFF">float(11,2)</td>
<td bgcolor="#FFFFFF">金额</td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>zgroupid</strong></td>
<td bgcolor="#FFFFFF">smallint(6)</td>
<td bgcolor="#FFFFFF">到期后转向会员组ID</td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>havemsg</strong></td>
<td bgcolor="#FFFFFF">tinyint(1)</td>
<td bgcolor="#FFFFFF">是否有短信息</td>
<td bgcolor="#FFFFFF">1为提示有短信息，0为不提示</td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>checked</strong></td>
<td bgcolor="#FFFFFF">tinyint(1)</td>
<td bgcolor="#FFFFFF">是否审核</td>
<td bgcolor="#FFFFFF">1为已审核，0为未审核</td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><span style="color: #ff0000;"><strong>salt</strong></span></td>
<td bgcolor="#FFFFFF"><span style="color: #ff0000;">varchar(8)</span></td>
<td bgcolor="#FFFFFF"><span style="color: #ff0000;">salt密码加密随机码</span></td>
<td bgcolor="#FFFFFF"></td>
</tr>
</tbody>
</table>
<h3>相关字段说明</h3>
<p>涉及登陆的字段有username,password,rnd,salt,checked<br />
<strong>username:</strong> 就是用户名不用说<br />
<strong>rnd:</strong>是randomize的缩写，取得随机数的意思，记录中会员每登陆一次变一次，用这个随机数来判断当前登陆是否有效，用两个非IE内核浏览器登陆同一个会员，第一个登陆的被挤掉就是RND的效果。<br />
<strong>checked:</strong>会员是否被审核<br />
<strong>password,salt:</strong>共同用于密码会员密码验证</p>
<h3>openid第一次连接帝国CMS 或者绑定帝国CMS账号</h3>
<p>新浪微博，腾讯微博，QQ空间等等都会给一个openid,比如新浪微博的是weiboid,腾讯微博的是nickname,QQ空间给的是openid，无论第一次连接注册还是绑定原有帝国CMS账号都是绑定一个openid而已，所以在一般在帝国CMS主表新建一个字段用于储存openid；</p>
<h3>以后的连接</h3>
<p>以后的连接就简单了，获得返回的OPENID后搜索帝国CMS会员主表，如果有存在的OPENID就执行登陆，没有就执行注册或绑定，trylife用的登陆函数如下：openid已经是绑定的，所以函数更新下RND之后写COOKIE就可以；买过trylife插件的童鞋可以看下这个函数在，e\trylife/common/Dev/ecms-rd-common-functions.php</p>
<pre name="code" class="php">
function ecms_memberlogin($userid)
{
	global $empire,$user_tablename,$public_r,$user_groupid,$user_username,$user_userid,$user_email,$user_password,$user_dopass,$user_rnd,$user_registertime,$user_register,$user_group,$user_saltnum,$user_salt,$user_seting,$forumgroupid,$registerurl,$dbtbpre,$user_regcookietime,$user_userfen,$user_checked,$level_r;
	$r=$empire->fetch1("select * from ".$user_tablename." where ".$user_userid."='$userid' limit 1");
	$rnd=make_password(12);
	$sql=$empire->query("update ".$user_tablename." set ".$user_rnd."='$rnd' where ".$user_userid."='$userid' ");
	$logincookie=0;
	$set1=esetcookie("mlusername",$r[$user_username],$logincookie);
	$set2=esetcookie("mluserid",$r[$user_userid],$logincookie);
	$set3=esetcookie("mlgroupid",$r[$user_group],$logincookie);
	$set4=esetcookie("mlrnd",$rnd,$logincookie);

	if( $set1 &#038;&#038; $set2 &#038;&#038; $set3 &#038;&#038; $set4 )
	{
		$re=1;
	}
	else
	{
		$re=0;
	}

	return $re;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/openid-connect-ecms/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>帝国CMS sitemap插件（截图）</title>
		<link>http://www.trylife.cn/ecms-sitemap-plugin/</link>
		<comments>http://www.trylife.cn/ecms-sitemap-plugin/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 09:32:30 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[帝国CMS]]></category>
		<category><![CDATA[帝国CMS二次开发]]></category>
		<category><![CDATA[帝国CMS插件]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1640</guid>
		<description><![CDATA[百度即将开发符合标准的sitemap规范，以后sitemap可以百度,GOOGLE通用了！ 功能简介： 1.可自行设置地图索引模板，种地地图模板 2.可设置终极地图每页链接数 3.可设置地图目录，及其首页地图文件名 4.自定义列表，自定义页面，可加入地图 5.自定义地图内容~ 等等~~]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-1641" title="帝国CMS sitemap插件,帝国CMS网站地图" src="http://www.trylife.cn/wp-content/uploads/2011/02/emcs-sitemap-1.jpg" alt="" width="660" /><br />
<span style="color: #ff0000;">百度即将开发符合标准的sitemap规范，以后sitemap可以百度,GOOGLE通用了！</span><br />
<strong>功能简介：</strong><br />
1.可自行设置地图索引模板，种地地图模板<br />
2.可设置终极地图每页链接数<br />
3.可设置地图目录，及其首页地图文件名<br />
4.自定义列表，自定义页面，可加入地图<br />
5.自定义地图内容~<br />
等等~~</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/ecms-sitemap-plugin/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>帝国CMS 欢迎邮件插件 （分享下载）</title>
		<link>http://www.trylife.cn/ecms-plugin-welcome-email/</link>
		<comments>http://www.trylife.cn/ecms-plugin-welcome-email/#comments</comments>
		<pubDate>Sun, 16 Jan 2011 06:40:09 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[帝国CMS]]></category>
		<category><![CDATA[帝国CMS二次开发]]></category>
		<category><![CDATA[帝国CMS插件]]></category>
		<category><![CDATA[邮件]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1609</guid>
		<description><![CDATA[版本：帝国CMS6.5 GBK/UTF8 （简） 功能：发送一份欢迎邮件给新注册会员 作者：trylife 主页：www.trylife.cn 下载：trylife-plugin-RegWelcomeEmail]]></description>
			<content:encoded><![CDATA[<p><strong>版本：</strong>帝国CMS6.5 GBK/UTF8 （简）<br />
<strong>功能：</strong>发送一份欢迎邮件给新注册会员<br />
<strong>作者：</strong>trylife<br />
<strong>主页：</strong><a href="http://www.trylife.cn/ecms-plugin-welcome-email/" target="_blank">www.trylife.cn</a><br />
<strong>下载：</strong><a href="http://www.trylife.cn/wp-content/uploads/2011/01/trylife-plugin-RegWelcomeEmail.zip">trylife-plugin-RegWelcomeEmail</a></p>
<p><img src="http://www.trylife.cn/wp-content/uploads/2011/01/ecms-reg-welcomeemail.jpg" alt="帝国CMS欢迎邮件" title="ecms-reg-welcomeemail" width="680" class="alignnone size-full wp-image-1610" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/ecms-plugin-welcome-email/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>帝国CMS二次开发 迅雷/快车批量下载插件 (截图)</title>
		<link>http://www.trylife.cn/ecms-plugin-of-thunder-and-flashget-batch-task/</link>
		<comments>http://www.trylife.cn/ecms-plugin-of-thunder-and-flashget-batch-task/#comments</comments>
		<pubDate>Sun, 16 Jan 2011 03:12:55 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[帝国CMS]]></category>
		<category><![CDATA[帝国CMS二次开发]]></category>
		<category><![CDATA[帝国CMS插件]]></category>
		<category><![CDATA[帝国CMS下载系统]]></category>
		<category><![CDATA[快车]]></category>
		<category><![CDATA[快车批量下载]]></category>
		<category><![CDATA[批量]]></category>
		<category><![CDATA[迅雷]]></category>
		<category><![CDATA[迅雷批量下载]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1591</guid>
		<description><![CDATA[文字 （图一）普通列表加入了对列表内容的检测，静态页面通过JQ版的AJAX获取了候选列表所有CLASSID,ID给静态页面上已经存在在候选列表的内容做了标记；还有提醒候选列表限量，候选列表现有数量；当然，使用迅雷/快车批量下载都是可以使用它们的联盟的； （图二）候选列表，一个动态的列表，可以提示会员是否为包月（年/季），和提示所选共需要多少点数，下载扣点都遵循帝国原有设置； （图三）迅雷批量下载迅雷批量下载很给力 （图四）快车？？下载快车就没那么给力了，网上翻了页没见快车的批量下载，虽然知道快车的批量下载可以参考快车安装目录下的GetAllUrl.htm,经多次测试里面给的“外部”对象都没给上力（没有开放这个？加快车技术问也没见回复）；所以只能在IE下连续弹出所选~ 截图 备注:商业定制不提供下载]]></description>
			<content:encoded><![CDATA[<h3>文字</h3>
<p><strong>（图一）普通列表</strong>加入了对列表内容的检测，静态页面通过JQ版的AJAX获取了候选列表所有CLASSID,ID给静态页面上已经存在在候选列表的内容做了标记；还有提醒候选列表限量，候选列表现有数量；当然，使用迅雷/快车批量下载都是可以使用它们的联盟的；</p>
<p><strong>（图二）候选列表</strong>，一个动态的列表，可以提示会员是否为包月（年/季），和提示所选共需要多少点数，下载扣点都遵循帝国原有设置；</p>
<p><strong>（图三）迅雷批量下载</strong>迅雷批量下载很给力</p>
<p><strong>（图四）快车？？下载</strong>快车就没那么给力了，网上翻了页没见快车的批量下载，虽然知道快车的批量下载可以参考快车安装目录下的GetAllUrl.htm,经多次测试里面给的“外部”对象都没给上力（没有开放这个？加快车技术问也没见回复）；所以只能在IE下连续弹出所选~</p>
<h3>截图</h3>
<p><img src="http://www.trylife.cn/wp-content/uploads/2011/01/ecms-batch-download-1.jpg" alt="" title="帝国CMS迅雷/快车批量下载插件" width="680" class="alignnone size-full wp-image-1595" /></p>
<p><img src="http://www.trylife.cn/wp-content/uploads/2011/01/ecms-batch-download-2.jpg" alt="" title="帝国CMS迅雷/快车批量下载插件" width="680" class="alignnone size-full wp-image-1595" /></p>
<p><img src="http://www.trylife.cn/wp-content/uploads/2011/01/ecms-batch-download-3.jpg" alt="" title="帝国CMS迅雷/快车批量下载插件" width="680" class="alignnone size-full wp-image-1595" /></p>
<p><img src="http://www.trylife.cn/wp-content/uploads/2011/01/ecms-batch-download-4.jpg" alt="" title="帝国CMS迅雷/快车批量下载插件" width="680" class="alignnone size-full wp-image-1595" /></p>
<p>备注:<font color="red">商业定制不提供下载</font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/ecms-plugin-of-thunder-and-flashget-batch-task/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>使用新浪微博登陆帝国CMS,同步投稿,同步评论</title>
		<link>http://www.trylife.cn/sinaweibo-plugins-for-ecms/</link>
		<comments>http://www.trylife.cn/sinaweibo-plugins-for-ecms/#comments</comments>
		<pubDate>Sat, 08 Jan 2011 19:56:00 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[帝国CMS]]></category>
		<category><![CDATA[帝国CMS二次开发]]></category>
		<category><![CDATA[帝国CMS插件]]></category>
		<category><![CDATA[t.sina.com.cn]]></category>
		<category><![CDATA[帝国CMS会员登陆]]></category>
		<category><![CDATA[新浪微博]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1558</guid>
		<description><![CDATA[帝国CMS登陆分析 版本：帝国CMS6.5 （未整合其他程序） 文件：e/class/user.php 函数：login1() 1.每次登陆向会员数据表更新的字段如下： rnd: 作用是踢出上一个登陆此账号的用户 groupid: 作用是如果此用户会员组为空，则将此用户所在会员组更新为网站设置的默认用户会员组 备注：默认情况下和salt没关系 2.会员登陆必设COOKIE mluserid mlusername mlgroupid mlrnd 3.登陆附加设置COOKIE 空 使用新浪微博账号登陆到帝国CMS 第1次登陆 使用微博账号第一次登陆帝国CMS就是一个注册的过程，只是这个注册的过程在程序内部完成，trylife在第一次登陆过程中没有设置提示用户填写用户名、密码、邮箱、而是默认都给了默认值，要不和普通注册有啥区别，当用户想住在你网站的时候，他会更改自己的昵称密码和邮箱；第一次登陆过程中帝国CMS默认的几个必填项和字段设置如下： 用户名：微博昵称 如查询微博昵称已经存在则在昵称前加入前缀 密码：随机生成 使用帝国CMS函数 make_password(6) 生成6位的随机密码 邮箱：{新浪微博ID}@t.sina.com.cn API不提供邮箱所以先虚拟一个不存在的邮箱 会员组ID： 函数内解决可以给默认值，也可以使用$user_groupid e/class/user.php 默认注册会员组ID 其他必填字段：都提前给默认值 新增字段sinaweiboid：用于记录微博ID 便于下一次登陆 第1++次登陆 这时候处理就减淡了，根据授权取得的微薄ID 查询帝国CMS会员表得到username,userid,groupid,并使用函数make_password()随机生成12位的rnd,rnd更新到会员表将username,userid,groupid,新rnd写到COOKIE就完成了第1++次登陆； 修改昵称、密码、邮件 这个应该没啥烦恼 退出普通帝国CMS退出，不过微博授权session还在，也可以在退出函数e/class/user.php loginout1()修改下把微博的授权session清除。 同步投稿、评论 为了session传递e/class/connect.php 加入了session_start(); connect.php 99.99%的全站动态页必引文件 同步投稿增加个字段用于记录微博信息ID，这个ID用于评论的时候同步评论到这条微博信息 同步评论如果回复也要同步，那也给评论表多建个储存 剩下的工作就没啥好说的了，修改投稿函数，评论函数，插入相关函数，enews.php ecms.php 加入新的引用文件。。 关于帝国CMS二次开发怎么放，修改系统文件怎么处理还是这个准则：《trylife凌乱的帝国CMS二次开发准则》 下载 [...]]]></description>
			<content:encoded><![CDATA[<h3>帝国CMS登陆分析</h3>
<p><strong>版本：</strong>帝国CMS6.5 （未整合其他程序）<br />
<strong>文件：</strong>e/class/user.php<br />
<strong>函数：</strong>login1()</p>
<p><strong>1.每次登陆向会员数据表更新的字段如下：</strong><br />
rnd: <font color="gray">作用是踢出上一个登陆此账号的用户</font><br />
groupid: <font color="gray">作用是如果此用户会员组为空，则将此用户所在会员组更新为网站设置的默认用户会员组</font><br />
备注：默认情况下和salt没关系</p>
<p><strong>2.会员登陆必设COOKIE</strong><br />
mluserid<br />
mlusername<br />
mlgroupid<br />
mlrnd</p>
<p><strong>3.登陆附加设置COOKIE</strong> 空</p>
<h3>使用新浪微博账号登陆到帝国CMS</h3>
<p><strong>第1次登陆</strong><br />
使用微博账号第一次登陆帝国CMS就是一个注册的过程，只是这个注册的过程在程序内部完成，trylife在第一次登陆过程中没有设置提示用户填写用户名、密码、邮箱、而是默认都给了默认值，要不和普通注册有啥区别，当用户想住在你网站的时候，他会更改自己的昵称密码和邮箱；第一次登陆过程中帝国CMS默认的几个必填项和字段设置如下：<br />
<font color="green">用户名：</font>微博昵称 <font color="gray">如查询微博昵称已经存在则在昵称前加入前缀</font><br />
<font color="green">密码：</font>随机生成 <font color="gray">使用帝国CMS函数 make_password(6) 生成6位的随机密码</font><br />
<font color="green">邮箱：</font>{新浪微博ID}@t.sina.com.cn     <font color="gray">API不提供邮箱所以先虚拟一个不存在的邮箱</font><br />
<font color="green">会员组ID：</font> 函数内解决可以给默认值，也可以使用$user_groupid e/class/user.php 默认注册会员组ID<br />
<font color="green">其他必填字段：</font>都提前给默认值<br />
<font color="green">新增字段sinaweiboid：</font>用于记录微博ID 便于下一次登陆</p>
<p><strong>第1++次登陆</strong><br />
这时候处理就减淡了，根据授权取得的微薄ID 查询帝国CMS会员表得到username,userid,groupid,并使用函数make_password()随机生成12位的rnd,rnd更新到会员表将username,userid,groupid,新rnd写到COOKIE就完成了第1++次登陆；</p>
<p><strong>修改昵称、密码、邮件</strong> 这个应该没啥烦恼<br />
<img src="http://www.trylife.cn/wp-content/uploads/2011/01/emcs-sinaweibo-user-edit.jpg" alt="" title="使用新浪微博登陆帝国CMS,同步投稿,同步评论" width="670" class="alignnone size-full wp-image-1577" /></p>
<p><strong>退出</strong>普通帝国CMS退出，不过微博授权session还在，也可以在退出函数e/class/user.php loginout1()修改下把微博的授权session清除。</p>
<h3>同步投稿、评论</h3>
<p>为了session传递e/class/connect.php 加入了session_start(); connect.php 99.99%的全站动态页必引文件<br />
<strong>同步投稿</strong>增加个字段用于记录微博信息ID，这个ID用于评论的时候同步评论到这条微博信息<br />
<strong>同步评论</strong>如果回复也要同步，那也给评论表多建个储存<br />
剩下的工作就没啥好说的了，修改投稿函数，评论函数，插入相关函数，enews.php ecms.php 加入新的引用文件。。<br />
关于帝国CMS二次开发怎么放，修改系统文件怎么处理还是这个准则：<a href="http://www.trylife.cn/trylifes-ecms-rd-rules/" target="_blank">《trylife凌乱的帝国CMS二次开发准则》</a></p>
<h3>下载</h3>
<p>和你预想的一样，trylife这没提供下载，需要下载移步到<a href="http://www.abc3210.com/Blog/Log/e3/2010/12/30/48.html" target="_blank">凡姐的BLOG</a>，凡姐有提供下载；</p>
<p><img src="http://www.trylife.cn/wp-content/uploads/2011/01/ecms-sinaweibo-install.jpg" alt="" title="使用新浪微博登陆帝国CMS,同步投稿,同步评论" width="670"  class="alignnone size-full wp-image-1586" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/sinaweibo-plugins-for-ecms/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>帝国CMS不为人知的技巧 &#8211; 弹出下载txt等格式</title>
		<link>http://www.trylife.cn/ecms-unkonwn-template-skill-down-url-pre/</link>
		<comments>http://www.trylife.cn/ecms-unkonwn-template-skill-down-url-pre/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 09:47:44 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[帝国CMS]]></category>
		<category><![CDATA[帝国CMS二次开发]]></category>
		<category><![CDATA[帝国CMS插件]]></category>
		<category><![CDATA[.swf]]></category>
		<category><![CDATA[.txt]]></category>
		<category><![CDATA[帝国CMS下载]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1541</guid>
		<description><![CDATA[测试版本：帝国CMS6.5 功能位置：后台->其他管理->下载模型管理->管理地址前缀 相关函数：e/class/DownSysFun.php DoTypeForDownurl() , QDownLoadFile() , DownSoft() 功能解释： HEADER：使用header转向，通常设为这个。 META：直接转自，如果是FTP地址推荐选择这个。 READ：使用PHP程序读取，防盗链较强，但较占资源，服务器本地小文件可选择。 帝国CMS弹出下载txt,xls等说明 1.看下面粘贴的帝国原函数DoTypeForDownurl() Header 与 Meta 两种方式都使用的真实地址，在这两种方式下浏览器不能读取的文件格式，例如RAR，ZIP等将直接直接弹出一个真实地址下载,txt等浏览器可读的文件格式则直接在线浏览； 2.默认不选择前缀的情况下，使用是Header 3.READ 这种方式下是利用PHP读取文件，并传递给浏览器，无论 RAR 还是TXT都会弹出下载，而不是浏览器直接读取，弹出的地址也是加密的地址类似：xxx.com/enews=DownSoft&#038;classid=39&#038;id=11&#038;pathid=0&#038;pass=7b9516932a88d44b4e4610e209f6288d&#038;p=22:::J2qCrBGqmrxK 4.READ的加密地址判断是否有下载权限，也就是地址是否正确是由e/class/DownSysFun.php中DownSoft()函数来判断的，经测试如果不更改后台->系统设置->模型设置->下载验证码 的情况下流传出去是可以持续被下载的（没有用户组，积分等判断限制 如果要避免那么e/class/DownSysFun.php 第一行 $DownSys_CheckIp=0; 中的0改为1），帝国CMS也是通过这个方式来防盗链； 5.如果我不想使用下载地址前缀，而让TXT等格式可以弹出下载，那么你可以在e/class/DownSysFun.php中搜索DoTypeForDownurl($downurl,$downurlr['downtype']);上一行加入如下代码： //trylife add check type 20101231 //不使用下载地址前缀 让txt等浏览器可读类型文件弹出下载 //A.F4 $type2r=array(".xls",".txt",); if(in_array(GetFiletype($downurl),$type2r)) { $downurlr['downtype']=2; } 相关函数参阅 //ecms e/class/DownSysFun.php function DownSoft($classid,$id,$pathid,$p,$pass){ global $empire,$public_r,$level_r,$class_r,$emod_r,$user_tablename,$user_userid,$user_rnd,$user_group,$user_userfen,$user_userdate,$user_username,$dbtbpre; $id=(int)$id; $classid=(int)$classid; $pathid=(int)$pathid; if(empty($id)&#124;&#124;empty($p)&#124;&#124;empty($classid)) { [...]]]></description>
			<content:encoded><![CDATA[<p><strong>测试版本：</strong>帝国CMS6.5<br />
<strong>功能位置：</strong>后台->其他管理->下载模型管理->管理地址前缀<br />
<strong>相关函数：</strong>e/class/DownSysFun.php DoTypeForDownurl() , QDownLoadFile() , DownSoft()<br />
<strong>功能解释：</strong><br />
HEADER：使用header转向，通常设为这个。<br />
META：直接转自，如果是FTP地址推荐选择这个。<br />
READ：使用PHP程序读取，防盗链较强，但较占资源，服务器本地小文件可选择。</p>
<h3>帝国CMS弹出下载txt,xls等说明</h3>
<p>1.看下面粘贴的帝国原函数DoTypeForDownurl() Header 与 Meta 两种方式都使用的真实地址，在这两种方式下浏览器不能读取的文件格式，例如RAR，ZIP等将直接直接弹出一个真实地址下载,txt等浏览器可读的文件格式则直接在线浏览；</p>
<p>2.默认不选择前缀的情况下，使用是Header</p>
<p>3.READ 这种方式下是利用PHP读取文件，并传递给浏览器，无论 RAR 还是TXT都会弹出下载，而不是浏览器直接读取，弹出的地址也是加密的地址类似：xxx.com/enews=DownSoft&#038;classid=39&#038;id=11&#038;pathid=0&#038;pass=7b9516932a88d44b4e4610e209f6288d&#038;p=22:::J2qCrBGqmrxK</p>
<p>4.READ的加密地址判断是否有下载权限，也就是地址是否正确是由e/class/DownSysFun.php中DownSoft()函数来判断的，经测试如果不更改后台->系统设置->模型设置->下载验证码 的情况下流传出去是可以持续被下载的（<font color="red">没有用户组，积分等判断限制 如果要避免那么e/class/DownSysFun.php 第一行 $DownSys_CheckIp=0; 中的0改为1</font>），帝国CMS也是通过这个方式来防盗链；</p>
<p>5.如果我不想使用下载地址前缀，而让TXT等格式可以弹出下载，那么你可以在e/class/DownSysFun.php中搜索<strong>DoTypeForDownurl($downurl,$downurlr['downtype']);</strong>上一行加入如下代码：</p>
<pre name="code" class="php">
	//trylife add check type 20101231
	//不使用下载地址前缀 让txt等浏览器可读类型文件弹出下载
	//A.F4
	$type2r=array(".xls",".txt",);
	if(in_array(GetFiletype($downurl),$type2r))
	{
		$downurlr['downtype']=2;
	}
</pre>
<p><span id="more-1541"></span></p>
<h3>相关函数参阅</h3>
<pre name="code" class="php">
//ecms e/class/DownSysFun.php
function DownSoft($classid,$id,$pathid,$p,$pass){
	global $empire,$public_r,$level_r,$class_r,$emod_r,$user_tablename,$user_userid,$user_rnd,$user_group,$user_userfen,$user_userdate,$user_username,$dbtbpre;
	$id=(int)$id;
	$classid=(int)$classid;
	$pathid=(int)$pathid;
	if(empty($id)||empty($p)||empty($classid))
	{
		printerror("ErrorUrl","history.go(-1)",1);
	}
	$p=RepPostVar($p);
	$p_r=explode(":::",$p);
	$userid=$p_r[0];
	$rnd=$p_r[1];
	//验证码
	$cpass=md5(ReturnDownSysCheckIp()."wm_chief".$public_r[downpass].$userid);
	if($cpass<>$pass)
	{
		printerror("FailDownpass","history.go(-1)",1);
    }
	//表不存在
	if(empty($class_r[$classid][tbname]))
	{
		printerror("ExiestSoftid","history.go(-1)",1);
	}
	$mid=$class_r[$classid][modid];
	$tbname=$class_r[$classid][tbname];
	$ok=1;
	$r=$empire->fetch1("select * from {$dbtbpre}ecms_".$tbname." where id='$id' and classid='$classid'");
	if(empty($r[id]))
	{
		printerror("ExiestSoftid","history.go(-1)",1);
	}
	//副表
	if($emod_r[$mid]['tbdataf']&#038;&#038;$emod_r[$mid]['tbdataf']<>',')
	{
		$selectdataf=substr($emod_r[$mid]['tbdataf'],1,-1);
		$finfor=$empire->fetch1("select ".$selectdataf." from {$dbtbpre}ecms_".$tbname."_data_".$r[stb]." where id='$r[id]'");
		$r=array_merge($r,$finfor);
	}
	//区分下载地址
	$path_r=explode("\r\n",$r[downpath]);
	if(!$path_r[$pathid])
	{
		printerror("ExiestSoftid","history.go(-1)",1);
	}
	$showdown_r=explode("::::::",$path_r[$pathid]);
	$downgroup=$showdown_r[2];
	//下载权限
	if($downgroup)
	{
		$userid=(int)$userid;
		//取得会员资料
		$u=$empire->fetch1("select * from ".$user_tablename." where ".$user_userid."='$userid' and ".$user_rnd."='$rnd'");
		if(empty($u[$user_userid]))
		{printerror("MustSingleUser","history.go(-1)",1);}
		//下载次数限制
		$setuserday="";
		if($level_r[$u[$user_group]][daydown])
		{
			$setuserday=DoCheckMDownNum($userid,$u[$user_group]);
		}
		if($level_r[$downgroup][level]>$level_r[$u[$user_group]][level])
		{
			printerror("NotDownLevel","history.go(-1)",1);
		}
		//点数是否足够
		$showdown_r[3]=intval($showdown_r[3]);
		if($showdown_r[3])
		{
			//---------是否有历史记录
			$bakr=$empire->fetch1("select id,truetime from {$dbtbpre}enewsdownrecord where id='$id' and classid='$classid' and userid='$userid' and pathid='$pathid' and online=0 order by truetime desc limit 1");
			if($bakr[id]&#038;&#038;(time()-$bakr[truetime]<=$public_r[redodown]*3600))
			{}
			else
			{
				//包月卡
				if($u[$user_userdate]-time()>0)
				{}
				//点数
				else
				{
					if($showdown_r[3]>$u[$user_userfen])
					{
						printerror("NotEnoughFen","history.go(-1)",1);
					}
					//去除点数
					$usql=$empire->query("update ".$user_tablename." set ".$user_userfen."=".$user_userfen."-".$showdown_r[3]." where ".$user_userid."='$userid'");
				}
				//备份下载记录
				$utfusername=doUtfAndGbk($u[$user_username],1);
				BakDown($classid,$id,$pathid,$userid,$utfusername,$r[title],$showdown_r[3],0);
			}
		}
		//更新用户下载次数
		if($setuserday)
		{
			$usql=$empire->query($setuserday);
		}
	}
	//总下载数据增一
    $usql=$empire->query("update {$dbtbpre}ecms_".$class_r[$classid][tbname]." set totaldown=totaldown+1 where id='$id'");
    $downurl=stripSlashes($showdown_r[1]);
	$downurlr=ReturnDownQzPath($downurl,$showdown_r[4]);
	$downurl=$downurlr['repath'];
	//防盗链
	@include(ECMS_PATH."e/class/enpath.php");
	$downurl=DoEnDownpath($downurl);
    db_close();
    $empire=null;

	//trylife add check type 20101231
	//不使用下载地址前缀 让txt等浏览器可读类型文件弹出下载
	//A.F4
	$type2r=array(".doc",".xls",".docx",".ppt",".pptx",".txt","pdf",);
	if(in_array(GetFiletype($downurl),$type2r))
	{
		$downurlr['downtype']=2;
	}
	//trylife add check type 20101231 [e]

	DoTypeForDownurl($downurl,$downurlr['downtype']);
}
//下载操作
function DoTypeForDownurl($downurl,$type=0){
	global $public_r;

	if($type==1)//meta
	{
		echo"<META HTTP-EQUIV=\"refresh\" CONTENT=\"0;url=$downurl\">";
	}
	elseif($type==2)//read
	{
		QDownLoadFile($downurl);
	}
	else//header
	{
		Header("Location:$downurl");
	}
	exit();
}

//下载
function QDownLoadFile($file){
	global $public_r;
	if(strstr($file,"\\"))
	{
		$exp="\\";
	}
	elseif(strstr($file,"/"))
	{
		$exp="/";
	}
	else
	{
		Header("Location:$file");
		exit();
	}
	if(strstr($file,$exp."e".$exp)||strstr($file,"..")||strstr($file,"?")||strstr($file,"#"))
	{
		Header("Location:$file");
		exit();
    }
	if(strstr($file,$public_r[fileurl]))
	{
		$file=str_replace($public_r[fileurl],'/d/file/',$file);
	}
	if(!strstr($file,"://"))
	{
		if(!file_exists($file))
		{
			$file="../..".$file;
		}
	}
	$filename=GetDownurlFilename($file,$exp);
	if(empty($filename))
	{
		Header("Location:$file");
		exit();
	}
	//下载
	Header("Content-type: application/octet-stream");
	//Header("Accept-Ranges: bytes");
	//Header("Accept-Length: ".$filesize);
	Header("Content-Disposition: attachment; filename=".$filename);
	echo ReadFiletext($file);
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/ecms-unkonwn-template-skill-down-url-pre/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 2.070 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-02-05 23:23:27 -->

