分类目录归档:Share(分享)

CMS使用技巧

Cooperation IWS

Cooperation IWS是一个开源的可移动局域网服务器软件,它是博客、文字处理、Wiki、论坛、图库、绘图、可移动eLearning等等网络应用软件的载体。其重点是服务于知识管理和知识引擎。

简单地说,就是仅仅通过光驱或闪存就可以构建你的供学校局域网使用的课廊网站!并且让你的课廊课程可以开放在任何一个没有网络连接的地方并且让听众、同事或专家参与其中:家里、展会、专题讨论会……

最新版本Cooperation IWS 0.5.1已具备局域网邮局模块、办公套件、在线桌面、在线图片编辑器,等等。

项目主页:http://cooperation-iws.gensys-net.eu/
文档地址:
下载地址:http://cooperation-iws.gensys-net.eu/CMS/?page_id=31

不同目录,使用不同的Session

做程序的,经常遇到同一个空间仿多个测试站点的问题。如果遇到一个“聪明”的用户,登录自己的后台系统,访问其他目录下站点的后台,可能发现也同时可能把其他人的后台系统也登录了。
问题描述有点绕口,我写了一个小小的函数,不同目录使用不同的Session,解决了这个问题。 继续阅读

巧用JS复制网页内容

最近公司想整理下业务,看看有什么漏掉的订单。万网,息壤的业务比较多。万网的可以导出csv,而息壤就悲剧了。好几百页,只能一条一条的复制,郁闷。受QQ云输入法的影响,将JS保存到收藏夹,点击链接执行JS,加载外部JS创建表单,通过DOM获取内容,提交到本地的数据库。剩下的就好处理了。

1、新建收藏夹项目,路径填写:

javascript:(function(){$tmp=document.createElement("script");$tmp.src='http://192.168.99.29/_app/xirang.js';document.getElementsByTagName("head")[0].appendChild($tmp);})();

2、本地架设好服务器,xirang.js内容如下:

(function(){
  $tmp=document.createElement("div");
  $tmp.innerHTML=' <form action="http://192.168.99.29/_app/xirang.asp" style="display:none" method="post" id="__tmp_form"><textarea name="txtdb"></textarea></form>';
  document.getElementsByTagName("body")[0].appendChild($tmp);}
)();
hostlist = (function(){
  _t=document.getElementsByTagName("table");
  for(i=0;i<_t.length;i++){
    if(_t[i].getAttribute("className") == "listtable"){
      return _t[i];
    }
  }
  return "";
})();
if(typeof(hostlist) == "object"){
  __tmp_frm = document.getElementById("__tmp_form");
  __tmp_frm.txtdb.value = hostlist.innerHTML;
  __tmp_frm.submit();
}else{
  if(confirm("没有找到数据,点确定返回第一页")){
    location.href = "http://www.xrnet.cn/store/member.php?module=mysite&start_item=0&search=&sort_order=expiry_date&sort_order_desc=1";
  };
};

3、现在点击收藏夹中的项目,主机列表的内容(HTML代码)就到了一个表单中,并提交到了:http://192.168.99.29/_app/xirang.asp。

4、建立一个xirang.asp,保存内容。

  set conn = server.createobject("ADODB.Connection")
  conn.open "provider=microsoft.jet.oledb.4.0;data source=" & server.mappath("xirang.mdb")
  set rs = server.createobject("ADODB.Recordset")

  frmstr = request.servervariables("HTTP_REFERER")
  if frmstr = "" then
    rs.open "select txt from txtdb",conn,1,1
    do while not rs.eof
      response.write rs(0)
      response.flush()
      rs.movenext
    loop
  else
    tmpstr = "<table width=""100%"" border=""1"">" & request.form("txtdb") & "</table>"
    stanum = split(mid(frmstr,instr(frmstr,"start_item")+11),"&")(0)
    if isnumeric(stanum) then stanum = cLng(stanum) else stanum = 0
    nxtnum = stanum + 20

    rs.open "select * from txtdb",conn,3,2
    rs.addnew
    rs("txt") = tmpstr
    rs("pag") = stanum
    rs.update
    rs.close
    set rs = nothing
    set conn = nothing

    response.redirect "http://www.xrnet.cn/store/member.php?module=mysite&start_item=" & nxtnum & "&search=&sort_order=expiry_date&sort_order_desc=1"
  end if

5、不停的点击收藏夹的,直到最后一页。

6、直接用浏览器打开,http://192.168.99.29/_app/xirang.asp,就导出了列表的数据。 另存为网页,改后缀名为.xls,用excel打开,另存为excel格式。用access/mssql导入,有脚本处理就可以了。这些不在本文的讨论范围,不提供代码。

这种方法,可以保存任何内容。本人现在对外接单,如果有网站程序开发/重构的需求,欢迎和我联系。QQ:77068320

用FileDB快速开发生成静态系统

最近要用到一套ASP生成静态的小系统,虽然说程序简单,但是写起来还是比较繁琐的,正好前几天写过一个:ASP文件存储方案(http://www.miaoqiyuan.cn/p/asp-filedb),用改类,可以直接快速开发生成ASP的系统。

  '加载模板
  '对于模板,不了解的,可以参考我以前写过的文章,当然也可以用任何asp的模板系统
  set p = new MYW3_TPL
  p.LoadTpl "tpl/chengyu.html"
  p.assign "Title","猫七"
  p.assign "WebHome",WebHome
  p.assign "WebSkin",WebSkin
  
  '/index.html
  url = "index"
  '/home/index.html
  'url = "home::index"
  '/home/1/2/333.html
  'url = "home::1::2::333"
  '生成静态
  ‘使用FileDB类,超级简单
  set f = new FileDB
  f.DBPath = "/"
  f.idxKey = url
  f.save(p.outHtml)

需要对FileDB的类做一下小的修改

Private Function getPath()
    Dim tmp
    getPath = replace(idxKey,"::","/") & ".html"
  End Function

ASP版本 文件转十六进制

最近接了一个彩信接口的网站,需要将 文本文件、图片文件 转换成 HexString,通过Form提交,.net、php、javascript的函数网上一抓一大把,asp的却不好找,今天我就来写一个asp版本的hexstring转换函数,为了方便以后用,直接写成类。

  class bin2txt
    dim adostream
    private sub class_initialize
      set adostream = server.createobject("ADODB.Stream")
      adostream.type = 1
      adostream.mode = 3
    end sub
    
    public sub open(fn)
      adostream.open
      adostream.LoadFromFile fn
    end sub
    
    public function getHex(t)
      dim tmp,hexstr,binstr
      binstr = adostream.read()
      for i = 1 to lenB(binstr)
        tmp = hex(ascB(midB(binstr,i,1)))
        if len(tmp) = 1 then tmp = "0" & tmp
        hexstr = hexstr & tmp & t
      next
      getHex = hexstr
    end function
    
    public function getOct(t)
      dim tmp,octstr,binstr
      binstr = adostream.read()
      for i = 1 to lenB(binstr)
        tmp = (ascB(midB(binstr,i,1)))
        if len(tmp) = 2 then tmp = "0" & tmp
        if len(tmp) = 1 then tmp = "00" & tmp
        octstr = octstr & tmp & t
      next
      getOct = octstr
    end function

  end class

使用方法,很简单,代码如下:

  set f = new bin2txt
  f.open server.mappath("sms/1.jpg")
  response.write f.getHex()

彩信添加桢也添加玩函数

'addpage
'pid:帧编号
'showtime:帧展示时间
function addpage(pid,showtime,ttype,tfile,ptype,pfile,mtype,mfile)
  addpage = "&d" & pid & "=" & showtime
  if ttype <> "" and ptype <> "" then
    f.open server.mappath(tfile)
    addpage = addpage & "&tt" & pid & "=" & ttype &_
                        "&tv" & pid & "=" & f.getHex()
  end if
  if ptype <> "" and ptype <> "" then
    f.open server.mappath(ptype)
    addpage = addpage & "&pt" & pid & "=" & ptype &_
            "&pv" & pid & "=" & f.getHex()
  end if
  if mtype <> "" and mtype <> "" then
    f.open server.mappath(mtype)
    addpage = addpage & "&mt" & pid & "=" & mtype &_
            "&mv" & pid & "=" & f.getHex()
  end if
end function

set f = new bin2txt
f.open server.mappath("sms/title.txt")
sendstr = "id=***&pwd=***&subject=" & f.getHex()
sendstr = sendstr & addpage(1,5,"txt","sms/1.txt","jpg","sms/1.jpg","","")
sendstr = sendstr & addpage(2,5,"txt","sms/2.txt","jpg","sms/2.jpg","","")
response.write openApi("http://118.144.76.79:8080/mmsServer/sendMms",sendstr)

PHP无限级分类函数

很早之前就想一套PHP无限级分类函数,供以后的项目用,今晚闲了无事,就写一个把。懒得动脑,就按以前的ASP无限级分类函数的思想写一个把。

  /*
    作者:苗启源(Miaoqiyuan.cn)
    函数:getCatagory
    功能:获得分类列表
    参数:cat_arr     -> 分类数组(Rscordset:id:分类编号,pid:上级分类,name:分类名称,childs:子分类)
          cat_pid     -> 上级分类编号
          cat_childs  -> 下级分类编号
          cat_select  -> 选择的分类
          cat_dir     -> 分类级别
    返回:返回分类列表(Option)
  */
  function getCatagory($cat_arr,$cat_pid,$cat_childs,$cat_select,$cat_dir,$format){
    if($cat_pid==0 && $format=="option"){
      echo '<option value="0">根目录</option>';
    }
    if(is_array($cat_arr)){
      foreach($cat_arr as $cat_id =>$cat){
        if($cat['pid'] == $cat_pid && strpos("," . $cat_childs . ",","," . $cat['id'] . ",") == 0){
        #if($cat['pid'] == $cat_pid){
          if($format == "option"){
            echo '<option value="'. $cat['id'] .'" '. (($cat_select == $cat['id'])?"selected":"") . '>' . $cat_dir . '┣ ' . $cat['name'] . '</option>';
          }else{
            #<li>{$cat.dir}┣<a href="?act=edt&id={$cat.id}&type=product">{$cat.name}</a></li>
            $tmp = $format;
            if(strpos($tmp,"{\$cat.dir}")>0)$tmp = str_replace("{\$cat.dir}",$cat_dir,$tmp);
            if(strpos($tmp,"{\$cat.id}")>0)$tmp = str_replace("{\$cat.id}",$cat['id'],$tmp);
            if(strpos($tmp,"{\$cat.pid}")>0)$tmp = str_replace("{\$cat.pid}",$cat['pid'],$tmp);
            if(strpos($tmp,"{\$cat.name}")>0)$tmp = str_replace("{\$cat.name}",$cat['name'],$tmp);
            if(strpos($tmp,"{\$cat.childs}")>0)$tmp = str_replace("{\$cat.childs}",$cat['childs'],$tmp);
            echo $tmp;
          }
          getCatagory($cat_arr,$cat['id'],$cat_childs,$cat_select,$cat_dir . "┃",$format);
        }
      }
    }
  }
  
  $cat_arr = Array(
    1 => Array(
      'id'     =>1,
      'pid'    =>0,
      'name'   =>'分类一',
      'childs' =>'1,2,3,4,5'
    ),
    2 => Array(
      'id'     =>2,
      'pid'    =>1,
      'name'   =>'分类二',
      'childs' =>'2,5'
    ),
    3 => Array(
      'id'     =>3,
      'pid'    =>1,
      'name'   =>'分类4',
      'childs' =>'3,4'
    ),
    4 => Array(
      'id'     =>4,
      'pid'    =>3,
      'name'   =>'分类4',
      'childs' =>'4'
    ),
    5 => Array(
      'id'     =>5,
      'pid'    =>2,
      'name'   =>'分类5',
      'childs' =>'5'
    )
  );
  
  getCatagory($cat_arr,0,'','','','<li>{$cat.dir}┣<a href="?act=edt&id={$cat.id}&type=product">{$cat.name}</a></li>');