前几天下了一个CS起源,想解压,结果提示很多错误,气得我把压缩包直接删除了
今天游戏瘾又上来了~重新下载了另外一个版本
结果还是提示错误
忽然间,我觉得有可能是我压缩软件的问题
我看了下,我的WINRAR版本是3.7
网上一搜索,最新的已经是4.2了
然后我找了个烈火版4.0的
替换原来的文件以后,一解压~
真的没再提示错误
忽然有种感叹,自己真的落伍了~跟不上时代的步伐了~
阅读全文
给个破客户弄的~
本机测试了,发好了,又要弄分类,奶奶的,弄好了,结果还申请退款了
算了~我当研究技术了,碰上这么个破客户
其实DEDE发布文章首先是在微表获取一个文章ID
//生成文档ID
$arcID = GetIndexKey($arcrank,$typeid,$sortrank,$channelid,$senddate,$adminid);
我们判断一下,如果有副栏目,就多生成几个
//判断副栏目
if(!empty($typeid2)){
$typeid2arr=explode(‘,’,$typeid2);
$typeid2=””;//处理后去掉副栏目
for($i=0;$i<count($typeid2arr);$i++) {
$arcID2[$i] = GetIndexKey($arcrank,$typeid2arr[$i],$sortrank,$channelid,$senddate,$adminid);
}
}
为了干净一些,我把处理后的副栏目去掉了
主栏目处理不变
主栏目处理完以后,开始副栏目处理
//副栏目处理过程
if(count($typeid2arr)>0) {
$typeid2=””;//处理后去掉副栏目,确保确实去掉了
for($i=0;$i<count($typeid2arr);$i++) {
//分析处理附加表数据
$inadd_f = $inadd_v = ”;
if(!empty($dede_addonfields))
{
$addonfields = explode(‘;’,$dede_addonfields);
if(is_array($addonfields))
{
foreach($addonfields as $v)
{
if($v==”) continue;
$vs = explode(‘,’,$v);
if($vs[1]==’htmltext’||$vs[1]==’textdata’)
{
${$vs[0]} = AnalyseHtmlBody(${$vs[0]},$description,$litpic,$keywords,$vs[1]);
}
else
{
if(!isset(${$vs[0]})) ${$vs[0]} = ”;
${$vs[0]} = GetFieldValueA(${$vs[0]},$vs[1],$arcID2[$i]);
}
$inadd_f .= ‘,’.$vs[0];
$inadd_v .= ” ,'”.${$vs[0]}.”‘ “;
}
}
}
//处理图片文档的自定义属性
if($litpic!=” && !preg_match(“#p#”, $flag))
{
$flag = ($flag==” ? ‘p’ : $flag.’,p’);
}
if($redirecturl!=” && !preg_match(“#j#”, $flag))
{
$flag = ($flag==” ? ‘j’ : $flag.’,j’);
}
//跳转网址的文档强制为动态
if(preg_match(“#j#”, $flag)) $ismake = -1;
//保存到主表
$query = “INSERT INTO `#@__archives`(id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,
color,writer,source,litpic,pubdate,senddate,mid,voteid,notpost,description,keywords,filename,dutyadmin,weight)
VALUES (‘$arcID2[$i]’,’$typeid2arr[$i]’,’$typeid2′,’$sortrank’,’$flag’,’$ismake’,’$channelid’,’$arcrank’,’$click’,’$money’,
‘$title’,’$shorttitle’,’$color’,’$writer’,’$source’,’$litpic’,’$pubdate’,’$senddate’,
‘$adminid’,’$voteid’,’$notpost’,’$description’,’$keywords’,’$filename’,’$adminid’,’$weight’);”;
if(!$dsql->ExecuteNoneQuery($query))
{
$gerr = $dsql->GetError();
$dsql->ExecuteNoneQuery(“DELETE FROM `#@__arctiny` WHERE id=’$arcID2[$i]'”);
ShowMsg(“把数据保存到数据库主表 `#@__archives` 时出错,请把相关信息提交给DedeCms官方。”.str_replace(‘”‘,”,$gerr),”javascript:;”);
exit();
}
//保存到附加表
$cts = $dsql->GetOne(“SELECT addtable FROM `#@__channeltype` WHERE id=’$channelid’ “);
$addtable = trim($cts[‘addtable’]);
if(empty($addtable))
{
$dsql->ExecuteNoneQuery(“DELETE FROM `#@__archives` WHERE id=’$arcID2[$i]'”);
$dsql->ExecuteNoneQuery(“DELETE FROM `#@__arctiny` WHERE id=’$arcID2[$i]'”);
ShowMsg(“没找到当前模型[{$channelid}]的主表信息,无法完成操作!。”,”javascript:;”);
exit();
}
$useip = GetIP();
$templet = empty($templet) ? ” : $templet;
$query = “INSERT INTO `{$addtable}`(aid,typeid,redirecturl,templet,userip,body{$inadd_f}) Values(‘$arcID2[$i]’,’$typeid2arr[$i]’,’$redirecturl’,’$templet’,’$useip’,’$body'{$inadd_v})”;
if(!$dsql->ExecuteNoneQuery($query))
{
$gerr = $dsql->GetError();
$dsql->ExecuteNoneQuery(“Delete From `#@__archives` where id=’$arcID2[$i]'”);
$dsql->ExecuteNoneQuery(“Delete From `#@__arctiny` where id=’$arcID2[$i]'”);
ShowMsg(“把数据保存到数据库附加表 `{$addtable}` 时出错,请把相关信息提交给DedeCms官方。”.str_replace(‘”‘,”,$gerr),”javascript:;”);
exit();
}
//生成HTML
InsertTags($tags,$arcID2[$i]);
if($cfg_remote_site==’Y’ && $isremote==”1″)
{
if($serviterm!=””){
list($servurl,$servuser,$servpwd) = explode(‘,’,$serviterm);
$config=array( ‘hostname’ => $servurl, ‘username’ => $servuser, ‘password’ => $servpwd,’debug’ => ‘TRUE’);
}else{
$config=array();
}
if(!$ftp->connect($config)) exit(‘Error:None FTP Connection!’);
}
$picTitle = false;
if(count($_SESSION[‘bigfile_info’]) > 0)
{
foreach ($_SESSION[‘bigfile_info’] as $k => $v)
{
if(!empty($v))
{
$pictitle = ${‘picinfook’.$k};
$titleSet = ”;
if(!empty($pictitle))
{
$picTitle = TRUE;
$titleSet = “,title='{$pictitle}'”;
}
$dsql->ExecuteNoneQuery(“UPDATE `#@__uploads` SET arcid='{$arcID2[$i]}'{$titleSet} WHERE url LIKE ‘{$v}’; “);
}
}
}
$artUrl = MakeArt($arcID2[$i],true,true,$isremote);
if($artUrl==”)
{
$artUrl = $cfg_phpurl.”/view.php?aid=$arcID2[$i]”;
}
ClearMyAddon($arcID2[$i], $title);
}//for
}//if
//副栏目处理结束
这个是文章模型的
其实其他模型也是差不多的道理
阅读全文
我的英文论坛被注册机强奸得体无完肤
发了一堆的垃圾帖子,不过幸好PHPbb默认有个功能,没发够3贴的会员发布的帖子不显示
前3贴必须是管理员审核过才能显示,3贴后就不用审核了
这个方法还是可以的,就是我删除未审核垃圾贴的时候删了好久
本想进数据库删除的,怕漏掉一些表里的数据,所以还是手工删除了
看了下ET的采集接口,我想到了自己站的采集思路
原则是尽量少修改他的接口
那么我需要修改的,一个是主贴随机用一个会员,回复直接在采集器提供用户
主贴随机用会员很好解决,一个查询就可以搞定
至于回复的时候提供用户,我还是自己写了一个小程序直接从数据库里获取,以需要的形式显示出来,然后直接COPY到采集器里使用
经过实践证明以上思路是可行的
不过还是有个BUG,发的帖子还是需要审核~
阅读全文
将dede:list标签进行改造了,熟悉dede的朋友应该知道这个列表页专用标签的工作原理大致是先通过栏目变量id获取到对应的数据源再呈现到页面上来,那么我们就可以让它不仅仅通过栏目变量id还可以通过指定的sql语句来获取数据源了,比如我们可以另外嵌入一个类似{dede:listsql sql=’select * from wp_posts’ pagesize=’10’}的标签来使用。
OK,思路已经有了,接下来我们打开include/arc.listview.class.php这个文件来给它动个小手术吧!
找到:
if(!is_object($ctag)) { $ctag = $this->dtp->GetTag(“list”); }
这一段,在其后添加如下代码:
if(!is_object($ctag)){$ctag=$this->dtp->GetTag(“listsql”);if(is_object($ctag)){$cquery=$ctag->GetAtt(“sql”);$cquery=preg_replace(“/SELECT(.*?)FROM/is”,” SELECT count(*) as dd FROM “,$cquery);$cquery=preg_replace(“/ORDER(.*?)SC/is”,””,$cquery);$row=$this->dsql->GetOne($cquery);if(is_array($row)){$this->TotalResult=$row[‘dd’];}else{$this->TotalResult=0;}}}//end
然后找到:
if($ctag->GetName()==”list”){$limitstart=($this->PageNo-1)*$this->PageSize;$row=$this->PageSize;if(trim($ctag->GetInnerText())==””){$InnerText=GetSysTemplets(“list_fulllist.htm”);}else{$InnerText=trim($ctag->GetInnerText());}$this->dtp->Assign($tagid,$this->GetArcList($limitstart,$row,$ctag->GetAtt(“col”),$ctag->GetAtt(“titlelen”),$ctag->GetAtt(“infolen”),$ctag->GetAtt(“imgwidth”),$ctag->GetAtt(“imgheight”),$ctag->GetAtt(“listtype”),$ctag->GetAtt(“orderby”),$InnerText,$ctag->GetAtt(“tablewidth”),$ismake,$ctag->GetAtt(“orderway”)));}
这一段,在其后添加如下代码:
elseif($ctag->GetName()==”listsql”){$limitstart=($this->PageNo-1)*$this->PageSize;$row=$this->PageSize;if(trim($ctag->GetInnerText())==””){$InnerText=GetSysTemplets(“list_fulllist.htm”);}else{$InnerText=trim($ctag->GetInnerText());}$this->dtp->Assign($tagid,$this->GetSqlList($limitstart,$row,$ctag->GetAtt(“sql”),$InnerText));}//end
最后找到function GetArcList这个方法,在其后添加一个可以通过传入sql参数获取指定数据源的方法,代码如下:
/** * 通过listsql标签中sql属性传入的参数来获得一个单列的文档列表 * */functionGetSqlList($limitstart=0,$row=10,$sql=”,$innertext){ global$cfg_list_son;$innertext=trim($innertext); if($innertext==”){$innertext=GetSysTemplets(‘list_fulllist.htm’);}//处理SQL语句$limitStr=” LIMIT{$limitstart},{$row}”; $this->dsql->SetQuery($sql.$limitStr);$this->dsql->Execute(‘al’);$t2=ExecTime(); //echo $t2-$t1;$sqllist=”;$this->dtp2->LoadSource($innertext);$GLOBALS[‘autoindex’]=0; //获取字段while($row=$this->dsql->GetArray(“al”)){ $GLOBALS[‘autoindex’]++; if(is_array($this->dtp2->CTags)){foreach($this->dtp2->CTagsas$k=>$ctag){if($ctag->GetName()==’array’){//传递整个数组,在runphp模式中有特殊作用$this->dtp2->Assign($k,$row);}else{if(isset($row[$ctag->GetName()])){$this->dtp2->Assign($k,$row[$ctag->GetName()]);}else{$this->dtp2->Assign($k,”);}}}} $sqllist.=$this->dtp2->GetResult(); }//while $t3=ExecTime();//echo ($t3-$t2);$this->dsql->FreeResult(‘al’); return$sqllist;}//end
总共就添加三段代码,每一段代码基本都参考它紧接着的上面那段原始代码,而无需改变它原来任何一个地方的代码,应该算是比较完美的手术了,接下来在模板文件中的使用方法就跟一开始思路中所提到的那样,分页标签依旧沿用原来的,调用范例:
{dede:listsqlsql=’select ID,post_title from wp_posts’ pagesize=’10’} <li><a href=”http://gump.me/[field:ID /].html”>[field:post_title /]</a></li> {/dede:listsql} <!–分页–> {dede:pagelist listsize=’2′ listitem=’index pre pageno next end ‘/}
实践证明,在DEDE5.7也是可以用的
我是在弄站的时候,一直想能在留言板也用上标签,思路是把留言板当成一个栏目来处理
先经过上面的修改,再引入下面的东西
//小货修改 引入模板解释的东西
require_once (dirname(__FILE__) . “/include/common.inc.php”);
require_once DEDEINC.”/arc.listview.class.php”;
然后设置标题
if($title==”) $title = ‘在线留言’;
用列表页的模板解释语句替换原来的
$pv =new ListView($tid);//作为一个列表进行处理
$pv->Fields[‘title’] =$title;//标题赋值
$pv->TypeLink->TypeInfos[‘ispart’]=0;//不是封面,只是列表
$pv->TypeLink->TypeInfos[‘templist’]=$cfg_df_style .”/guestbook.htm”;//设置列表模板
$pv->Display();//处理吧
exit();
阅读全文
很久没用ASP的程序了,我用集成的环境,那个什么NEIBOX,发现无法安装5U,具体的原因我没有探究
貌似WIN7装IIS比较简单,于是我用上了WIN7的IIS
装好IIS后可以安装5U,却发现不能登陆后台,显示error
然后进入IIS管理工具,点自己的机子名称,右边IIS下面有个ASP,选中他,右键,打开功能,点开调试属性,打开将错误发送到浏览器,再点右上角的应用
后来才发现原来是默认没开启父路径,导致不能用../表示父路径
然后我们在刚才的界面打开“启用父路径”,一样点应用,就可以正常访问了
admin_setting.asp有一条收集客户安装信息的JS 为了安全,我删掉了
Menu 里的外部连接不出来是由于class_template.asp大概171行多了个And [OutSideLink]=0
栏目内容修改 后台改动了admin_channel.asp Inc\class_channel.asp 前台改动了 inc\class_channel.asp 修改后可以像DEDE那样添加栏目内容供单页栏目调用,可惜没空加上编辑器,有空再说了
我的想法还得再加上一个英文栏目标题,很多企业站有可能会用到
发现后台添加新栏目的时候数据库的前缀没有转换还是{pre},然后我直接用ASP调用了
admin_channel.asp大概218行
<option value=”<%=DataBasePrefix%>Content_01″ <%If U.vTable = DataBasePrefix&”Content_01″ Then Response.Write “selected”%>>数据表一</option>
<option value=”<%=DataBasePrefix%>Content_02″ <%If U.vTable = DataBasePrefix&”Content_02″ Then Response.Write “selected”%>>数据表二</option>
<option value=”<%=DataBasePrefix%>Content_03″ <%If U.vTable = DataBasePrefix&”Content_03″ Then Response.Write “selected”%>>数据表三</option>
<option value=”<%=DataBasePrefix%>Content_04″ <%If U.vTable = DataBasePrefix&”Content_04″ Then Response.Write “selected”%>>数据表四</option>
<option value=”<%=DataBasePrefix%>Content_05″ <%If U.vTable = DataBasePrefix&”Content_05″ Then Response.Write “selected”%>>数据表五</option>
<option value=”<%=DataBasePrefix%>Content_06″ <%If U.vTable = DataBasePrefix&”Content_06″ Then Response.Write “selected”%>>数据表六</option>
<option value=”<%=DataBasePrefix%>Content_07″ <%If U.vTable = DataBasePrefix&”Content_07″ Then Response.Write “selected”%>>数据表七</option>
<option value=”<%=DataBasePrefix%>Content_08″ <%If U.vTable = DataBasePrefix&”Content_08″ Then Response.Write “selected”%>>数据表八</option>
<option value=”<%=DataBasePrefix%>Content_09″ <%If U.vTable = DataBasePrefix&”Content_09″ Then Response.Write “selected”%>>数据表九</option>
<option value=”<%=DataBasePrefix%>Content_10″ <%If U.vTable = DataBasePrefix&”Content_10″ Then Response.Write “selected”%>>数据表十</option>
然后如果栏目设置为外部链接,就没办法有下属栏目,编辑原来的下属栏目也会出错
主要也是admin_channel.asp大概180行,去掉Where [OutSideLink]=0
修改了留言插件 让它可以部分支持模板代码 ,很简单在留言的index.asp顶上插入<!–#include file=”../../Inc/Const.Asp”–>
用了一段时间的5U后,发现这个简单的CMS还是有很多优点的,拿来做企业站非常方便
阅读全文
去年就想把在国内的两个域名弄出国去,但是联系代理一直联系不上
感觉是对方估计躲着我
今年我跟商务中国发邮件说找不到代理了
结果她发了一个手机号码过来
然后就联系上了
经过两天的磨嘴皮,终于放手让我转走了
至此,我的所有域名都出国了,还有朋友的一个域名还在国内,不过不是我的,无所谓了
前两天转移的时候狗爹的域名还是12美元
今天续费其中一个的时候已经是15美元了,用了优惠码也是8块多美元
反正原来大概是人民币52块,现在变成54块多了
也差不了多少,物价上涨了,想想也正常,比很多国内直接60好多了
阅读全文
前段时间经常打不开
今天忽然想起来,然后访问了一下我申请的imxh.co.cc
结果又打不开了,貌似有一段日子不能打开了
我一直以为是斯巴达的问题
今天突发奇想,用在线代理访问了一下
竟然也开不了
以前碰到被墙的站,只要用在线代理基本都能打开
如果用在线代理也不能打开,那只有一种可能性
那个站出问题了
于是我又用在线代理访问了co.cc的主站
竟然也是无法访问
看来co.cc到尽头了
丢了把,反正也是个烂域名
阅读全文
POCO相册最大的好处是可以外链
当然,上传速度却马马虎虎
然后我发现用它转帖图片的时候特麻烦
为了获取一个图片的网址,需要点好几次鼠标
乘着今天有空,花了点时间弄了个简单的小偷相册
以后转帖就会简单很多,在每张图片下都显示了图片网址,还加上了IMG论坛标签
然后每一页的最下面还集合了本页的所有图片网址
即使是一个100来张图片的相册也只需要复制几次就可以了,方便很多
下面是演示网址:
http://blog.imxh.com/album/
阅读全文