'技术档案'相关日志 共 68篇
« Prev : 1 : 2 : 3 : 4 : 5 : ... 7 : Next »
2008/08/16 22:28  { 技术档案 }
<?php
function tree($mulu)
{
    $mydir = dir($mulu);
    echo "<ul>";    
    while($file = $mydir->read())
    {
        if((is_dir("$mulu/$file")) && ($file!==".") && ($file!==".."))
        {
            echo "<li><font color=red>$file</font></li>";
            tree("$mulu/$file");
        }else
        {
            if(($file!==".")&&($file!==".."))
            {
            echo "<li>$file</li>";
            }
        }
        
    }
    echo "</ul>";
    $mydir->close();
}
tree("..");
?>

2008/08/13 09:33  { 技术档案 }

php5时差问题
<?php echo date("Y-m-d H:i:s");?>时间相差八小时
为什么呢?PHP5系列版本新增了时区设置,默认为格林威治时间,与中国所在的东8区正好相差8个小时
解决办法:
1.修改php.ini
查找date.timezone有这么一行
;date.timezone =
将;去掉,改成
date.timezone = PRC


 
2.在输出时间前添加:date_default_timezone_set("PRC");

即:输入 date_default_timezone_set("PRC"); $d=date("Y-m-d H:i:s"); echo $d; 那么它将显示系统的当前时间.

2008/07/18 22:36  { 技术档案 }

为了更好地实现SEO功能,为了广大的DEDE爱好者不再大伤脑筋,这两天抽了点时间把此功能弄出来跟大家分享。

以下修改能实现DEDE自定义网页文件名的功能,例如:

zi-ding-yi.html/zidingyi.html/defined-pagename.html/自定义某某某.html 等

(反正你填什么就是什么,除了短横杠连词符号 -,最好别乱填其它特殊符号特别是单、双引号、空格等,以免出错)。

如果你不填自定义文件名,则默认为文章的aid,如:

138.html/65.html 等。

以下皆以文章模型为例作修改。强烈建议初学者在对文件进行修改前备份之。

以下为针对 DEDE V5 的修改:

=====================================================================

1、在 后台 频道管理 -> 修改栏目(或者增加栏目) -> 高级选项 -> 文章命名规则:

把 {typedir}/{Y}{M}/{D}-{aid}.html 修改成 {typedir}/{aa}.html

({aa} 用来接收自定义文件名。因个人不大喜欢年月日之类的,所以把{Y}、{M}、{D}、{aid}等都去掉了,你喜欢的话,自己加上即可)

2、修改数据库表 dede_archives 增加 pagename 字段 varchar 100 (100够用了,如果不够用,自己改大(255之内)即可)

在 后台 -> 功能菜单 -> SQL命令运行器 中输入:

 alter table dede_archives add column pagename varchar(100);

按确定执行即可。

3、增加对 {aa} 的处理:

修改文件:include/inc_channel_unit_functions.php

把大约73行的:

$articleRule = str_replace("{cc}",dd2char($m.$d.$aid.$y),$articleRule);

改为:

$articleRule = str_replace("{aa}",GetPagename($aid),$articleRule);

(因为{cc}实在没什么用,扔掉得了)

4、针对上面 GetPagename($aid) 的处理:

修改文件: include/inc_functions.php

在文件最后面 ?> 前加入以下函数:

//获取自定义文件名的函数,检测如果输入了自定义文件名则文件名为所输入的,否则默认为文章的aid
function GetPagename($dd){
 $sql = "select pagename from #@__archives where id = '$dd'";
 $dsql = new DedeSql(false);
 $row = $dsql->GetOne($sql);
 $pagename = $row["pagename"];
 if($pagename!=""){
  $pagename = $pagename;
 }else{
  $pagename = $dd;
 }
 return $pagename;
}

5、修改文章添加和修改页面,在里面加入 pagename 的 input

(1)修改文件:dede/templets/article_add.htm

在:
      <tr>
      <td height="24" class="bline">
    <table width="800" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td width="90">&nbsp;Tag标签:</td>
            <td>
   <input name="tag" type="text" id="tag" style="width:300px" value="">
   (用空格或','分开)
            </td>
          </tr>
       </table>
  </td>
    </tr>

前加上:

<!-- 自定义文件名开始 -->
         <tr>
            <td height="24" class="bline">
   <table width="800" border="0" cellspacing="0" cellpadding="0">
                <tr>
                  <td width="100">&nbsp;自定义文件名:</td>
                  <td width="650"><input name="pagename" type="text" id="pagename" style="width:630px" maxlength="100" /></td>
                </tr>
              </table>
              </td>
          </tr>
<!-- 自定义文件名结束 -->

(2)修改文件:dede/templets/article_edit.htm

在:

 <tr>
      <td height="24" class="bline">
    <table width="800" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td width="90">&nbsp;Tag标签:</td>
            <td>
   <input name="oldtag" type="hidden" id="oldtag" value="<?php echo $tags; ?>" />
   <input name="tag" type="text" id="tag" style="width:300px" value="<?php echo $tags; ?>" />
   (用空格或','分开)
            </td>
          </tr>
       </table>
     </td>
        </tr>

前加上:

<!-- 自定义文件名开始 -->
         <tr>
            <td height="24" class="bline">
   <table width="800" border="0" cellspacing="0" cellpadding="0">
                <tr>
                  <td width="100">&nbsp;自定义文件名:</td>
                  <td width="650"><input name="pagename" type="text" id="pagename" style="width:630px" maxlength="100" value="<?php echo $arcRow["pagename"]?>" /></td>
                </tr>
              </table>
              </td>
          </tr>
<!-- 自定义文件名结束 -->

6、修改文章添加和修改的处理页面,对 form 里提交的 pagename 进行处理

(1)修改文件: dede/action/article_add_action.php

A、在 $title =  cn_substr($title,80); 下面增加一行 $pagename = trim($pagename);

B、在下面增加以下红色部分(看准颜色)。

//加入数据库的SQL语句
//----------------------------------
$inQuery = "INSERT INTO `{$cts['maintable']}`(
ID,typeid,typeid2,sortrank,iscommend,ismake,channel,
arcrank,click,money,title,shorttitle,color,writer,source,reader,litpic,
pubdate,senddate,arcatt,adminID,memberID,description,keywords,templet,redirecturl,likeid,pagename)
VALUES ('$arcID','$typeid','$typeid2','$sortrank','$iscommend','$ismake','$channelid',
'$arcrank','0','$money','$title','$shorttitle','$color','$writer','$source','$reader','$litpic',
'$pubdate','$senddate','$arcatt','$adminID','0','$description','$keywords','$templet','$redirecturl','$likeid','$pagename');";


(2)修改文件: dede/action/article_eidt_action.php

A、在 $title =  cn_substr($title,80); 下面增加一行 $pagename = trim($pagename);

B、在下面增加以下红色部分(看准颜色)。

//更新数据库的SQL语句
//----------------------------------
$inQuery = "
update `{$aTables['maintable']}` set
typeid='$typeid',
typeid2='$typeid2',
sortrank='$sortrank',
redirecturl='$redirecturl',
iscommend='$iscommend',
ismake='$ismake',
arcrank='$arcrank',
money='$money',
title='$title',
color='$color',
writer='$writer',
source='$source',
reader='$reader',
litpic='$litpic',
pubdate='$pubdate',
description='$description',
keywords='$keywords',
templet='$templet',
shorttitle='$shorttitle',
arcatt='$arcatt',
likeid='$likeid'
,
pagename = '$pagename'

where ID='$ID'; ";

7、测试发文章,生成html,大功告成。

如有疑问请留言。


2008/03/29 12:50  { 技术档案 }


RewriteCond %{http_host} ^www.luring.cn [NC]
RewriteRule ^(.*)$ http://www.she.vc/$1 [R=301,L]

RewriteCond %{http_host} ^luring.cn [NC]
RewriteRule ^(.*)$ http://www.she.vc/$1 [R=301,L]

luring.cn为你要弃用的米,www.she.vc为需要跳转到的米
就这样子~

2008/02/28 19:00  { 技术档案 }
本地下载
一键搞定
解决局域网共享


开通局域网共享(访问本机无需验证即可进入)

@ ECHO OFF
@ ECHO.
@ ECHO.                            说      明
@ ECHO --------------------------------------------------------------------
@ ECHO 本批处理执行后,将作以下一些设置:
@ ECHO 1、允许SAM帐户和共享的匿名枚举(原版系统允许,本系统设为禁用)。
@ ECHO 2、本机帐户若空密码,允许其它机访问本机。
@ ECHO 3、Windows防火墙:允许文件和打印机共享。
@ ECHO 4、共享方式:本地用户以来宾身份验证。
@ ECHO 5、来宾帐户:启用。
@ ECHO.
@ ECHO 采用这种共享方式,其它机访问本机都不用输用户名和密码。举例来说,家庭
@ ECHO 局域网,彼此都是可以信任的,请使用这种方式。
@ ECHO.
@ ECHO 无论采用哪一种共享方式,共享只是方便内部使用,在用路由器上网的场合,
@ ECHO 外网不能访问到您的机,无需担心共享了就会被入侵。您只需记住,单机拨号
@ ECHO 上网时,不要打开共享就可以了。
@ ECHO --------------------------------------------------------------------
PAUSE
regedit /s 开通局域网共享(访问本机无需验证即可进入).reg
net user Guest /active:yes
cls
@ ECHO.
@ ECHO --------------------------------------------------------------------
@ ECHO 操作完成。
@ ECHO 注意:本机要重启后才会生效。
@ ECHO.
@ ECHO 硬盘各分区的默认共享仍未打开。如需要打开,
@ ECHO 请到本目录找到注册表文件,双击导入即可。
@ ECHO --------------------------------------------------------------------
@ ECHO.
@ ECHO 疑难问题补充:
@ ECHO   如果以前的共享方式是“本地用户以自己自己身份验证”时共享了文件夹,
@ ECHO 则现在改为以来宾身份验证后再访问该文件夹,会弹出错误:无法访问,您
@ ECHO 没有权限使用网络资源。解决办法是,把该文件夹原共享属性取消,然后再
@ ECHO 次共享,就行了。
@ ECHO --------------------------------------------------------------------
PAUSE

开通局域网共享(访问本机要填用户名和密码)
@ ECHO OFF
@ ECHO.
@ ECHO.                            说      明
@ ECHO --------------------------------------------------------------------
@ ECHO 本批处理执行后,将作以下一些设置:
@ ECHO 1、允许SAM帐户和共享的匿名枚举(原版系统允许,本系统设为禁用)。
@ ECHO 2、本机帐户若空密码,允许其它机访问本机。
@ ECHO 3、Windows防火墙:允许文件和打印机共享。
@ ECHO 4、共享方式:本地用户以自己的身份验证。
@ ECHO 5、来宾帐户:不启用。
@ ECHO.
@ ECHO 采用这种共享方式,访问本机时必须要输入正确的用户名和密码,才能访问。
@ ECHO.
@ ECHO 无论采用哪一种共享方式,共享只是方便内部使用,在用路由器上网的场合,
@ ECHO 外网不能访问到您的机,无需担心共享了就会被入侵。您只需记住,单机拨号
@ ECHO 上网时,不要打开共享就可以了。
@ ECHO --------------------------------------------------------------------
PAUSE
regedit /s 开通局域网共享(访问本机要填用户名和密码).reg
net user Guest /active:no
cls
@ ECHO.
@ ECHO ------------------------------------------------
@ ECHO 操作完成。
@ ECHO 注意:本机要重启后才会生效。
@ ECHO.
@ ECHO 硬盘各分区的默认共享仍未打开。如需要打开,
@ ECHO 请到本目录找到注册表文件,双击导入即可。
@ ECHO -------------------------------------------------------------------
@ ECHO.
@ ECHO 常见疑问:
@ ECHO    如果改后再访问本机,仍不提示输帐号和密码,这是因为其他电脑的帐户
@ ECHO 名称跟本机的一样(比如大家都是administrator),且本机无密码,所以直接
@ ECHO 就进去了。您应该把本机帐户改名,或加密码。未经授权的用户就不能随意
@ ECHO 访问您共享的资源了。
@ ECHO -------------------------------------------------------------------
PAUSE



关闭局域网共享

@ ECHO OFF
@ ECHO.
@ ECHO.                      说     明
@ ECHO ----------------------------------------------------------
@ ECHO 本批处理执行后,将作以下一些设置:
@ ECHO 1、不允许SAM帐户和共享的匿名枚举(原版系统默认是允许的)。
@ ECHO 2、本机帐户若空密码,不允许其它机访问本机。
@ ECHO 3、Windows防火墙:不允许文件和打印机共享。
@ ECHO 4、来宾帐户:禁用。
@ ECHO.
@ ECHO 如果您不需要常在局域网内互传文件,可以关闭共享功能以提高
@ ECHO 安全性。尤其是单机拨号上网的用户,更应关闭共享。
@ ECHO ----------------------------------------------------------
PAUSE
regedit /s 关闭局域网共享.reg
net user Guest /active:no
cls
@ ECHO.
@ ECHO ----------------------------------------------------------
@ ECHO 操作完成。
@ ECHO 不必重启,设置已生效。
@ ECHO ----------------------------------------------------------
PAUSE

2008/02/18 14:28  { 技术档案 }

一些网站怕文章被复制,使用了很多种方法来保护自己的安全,其实现在的技术,已经没有什么能够阻止一个想要COPY你内容的方法了,除非用图片形式能稍微阻止一下,还不如我们大度一些,在复制内容的过程中增加一个自己的版权信息就好了。

以下的方法是在COPY网页内容的时候会在复制后的内容后面增加一段网站的版权信息,代码十分简单,你只要修改那段版权信息代码就可以自己用了!

代码如下:


2008/01/25 16:18  { 技术档案 }
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>内容</title>
<script language="javascript">
<!--
//容器内图片自缩放函数,当图片超过最大高度或宽度时,按比例缩放到指定高或宽。
function img_init(div_id,width,height)
        {
          var img_vh=height; //定义最大高度
             var img_vw=width; //定义最大宽度
          var divn=document.getElementById(div_id);
          var imgn=divn.getElementsByTagName("img");
          var oldheight,oldwidth;
          for (var i=0;i<imgn.length;i++) {
          if(imgn[i].height>img_vh || imgn[i].width>img_vw)
          {
             if(imgn[i].height/img_vh > imgn[i].width/img_vw)
                 {
                   oldheight=imgn[i].height;
                  imgn[i].height=img_vh;
                  imgn[i].width=imgn[i].width*(img_vh/oldheight);
                 }
                 else
         {
                  oldwidth=imgn[i].width;
                  imgn[i].width=img_vw;
                   imgn[i].height=imgn[i].height*(img_vw/oldwidth);
                 }         
           }
        }
}
//onload多处理函数
//multiOnload("twiceFunc('var1')");
//multiOnload(FuncName);
//multiOnloadEx(FuncName, HtmlObj, EveName);
//FuncName是需要附加的代码或函数;HtmlObj是被附件的对象,即HTML标记;EveName是被附加的事件。
//第三个参数EveName可以省略,默认值为onload。
function multiOnload(FuncName)
{
        var oldProc = window.onload ? window.onload.toString() : "";
        if (oldProc.indexOf("anonymous()") > 0)
        {
                oldProc = oldProc.substring(oldProc.indexOf("{") + 1, oldProc.lastIndexOf("}")) + "; ";
        }
        oldProc += FuncName;
        window.onload = new Function (oldProc);
}

function multiOnloadEx(FuncName, HtmlObj, EveName)
{
        if (EveName == null || EveName == "")
                EveName = "onload";
        var oldProc;
        oldProc = eval("HtmlObj." + EveName + " ? HtmlObj." + EveName + ".toString() : \"\"");
        if (oldProc.indexOf("anonymous()") > 0)
        {
                oldProc = oldProc.substring(oldProc.indexOf("{") + 1, oldProc.lastIndexOf("}")) + "; ";
        }
        oldProc += FuncName;
        eval("HtmlObj." + EveName + " = new Function (oldProc);");
}
multiOnload("img_init('content_text',550,410)"); //执行重设图片尺寸,可以放任意位置运行。
//-->
</script>
</head>
<body>
<div id="content_text">
  <p>下面是图片</p>
  <p><img src="http://1she.com/logo.jpg" ></p>
</div>
<p>&nbsp;</p>
</body>
</html>

2008/01/23 12:06  { 技术档案 }

一、开始->运行CMD;
二、进入mysql目录中的bin目录(即mysqldump等命令工具的目录);
三、数据库导出时执行以下命令:

mysqldump  -h127.0.0.1 -uroot -proot test > d:\test.sql
    以上命令的意思是:把在IP127.0.0.1主机上的test数据库备份到d:/test.sql
    用户名和密码均是root
四、数据库恢复时执行以下命令:
mysql -h127.0.0.1 -uroot -proot test < d:\test.sql
          注意恢复前先建立一个空的test数据库
五、其它命令:
(以下命令是在mysql提示符下录入,并且以分号;做结束)
列出所有数据库名称 show databases;
进入(打开)数据库:use 数据库名;
查看该数据库表:show tables;
显示数据表的结构:describe 表名;


2008/01/23 11:48  { 技术档案 }

别人的,今天想起,随手转了一下,很简单,这里截图说明一下
用phpmyadmin导入库test中后发现,这个库中有UTF8和latin1两种编码,如下图

先把test备份为test1库,在WIN下操作的话就是把:路径\MySQL\data下的test目录备份一下,改名为test1目录
在phpmyadmin中把所有为UTF8的表删除,在命令行中运行
D:\PHPServer\MySQL\bin>mysqldump -uroot -p –quick –compatible=mysql40 –default-character-set=latin1 –extended-insert=FALSE test > d:/zxs.sql

说明一下D:\PHPServer\MySQL\bin是我的安装目录,test为数据库,d:/zzz.sql为生成的数据文件,程序会提示你输入root的用户密码,输入后,等几分钟,zxs.sql就生成好了

通过phpmyadmin建立一个新库,库名:test2 ,采集字符集设定为utf8-general-li

再将刚才生成sql文件导入新数据库

D:\PHPServer\MySQL\bin>mysql -uroot -p –default-character-set=utf8 test2 < d:/zxs.sql

输入root密码,等几分钟,zxs.sql就导入成功了,到这还没完,因为这里只是把latin1编码的转换为utf8了
最后,停止mysql,把test2目录下的所有文件覆盖到我们刚刚备份的test1目录下,这样,test1目录就是我们要得到了转换好了的UTF8数据库了,OK,收工
当然,方法很简单,就是把latin1编码的表单独分离出来转为UTF8后再盖原来的库,这样多种编码也都可以完美的转换,这种情况也非常常见,换主机,升mysql版本等都会出现这种情况的。


2008/01/21 10:33  { 技术档案 }
分析:分面信息有几种显示情况,当然代码复杂得多,包含有链接等。[……]表示总页数不确定。
第一页:[1][2][……][下一页]
中间页:[上一页][1][2][……][下一页]
最后页:[上一页][1][2][……]

过滤表达式:
{dede:trim}(<P><SPAN class=title1><STRONG><\/p>)?(<p align='center'><b>)(<font color='red'>\[1\]<\/font> )?(<a href='\/51hkj\/Article\/ShowArticle.asp\?ArticleID=284&Page=)[0-9]{1,2}('>)(\[2\]|上一页)(<\/a>)(.)+(>下一页<\/a>)?\/b><\/p>{/dede:trim}

为了说明问题,重新排版,按功能块分断:
{dede:trim}
(<P><SPAN class=title1><STRONG><\/p>)?
(<p align='center'><b>)
(<font color='red'>\[1\]<\/font> )?
(<a href='\/51hkj\/Article\/ShowArticle.asp\?ArticleID=284&Page=)[0-9]{1,2}('>)
(\[2\]|上一页)(<\/a>)
(.)+
(>下一页<\/a>)?<\/b><\/p>
{/dede:trim}

再取掉转义字符“\”,代码如下(当然这不能用了,只是为了看起来更清楚):
{dede:trim}
(<P><SPAN class=title1><STRONG></p>)?
(<p align='center'><b>)
(<font color='red'>[1]</font> )?
(<a href='/51hkj/Article/ShowArticle.asp?ArticleID=284&Page=)[0-9]{1,2}('>)
([2]|上一页)(</a>)
(.)+
(>下一页</a>)?</b></p>
{/dede:trim}

现在逐一解释:用“//”表示
{dede:trim}
//dede标记

(<P><SPAN class=title1><STRONG></p>)?
//匹配括号中的字符串,0个或1个,因为三种页面(第一页、中间页、最后页)有些没有这段代码

(<p align='center'><b>)
//匹配括号中的字符串,必须有这个字串

(<font color='red'>[1]</font> )?
//匹配括号中的字符串,0个或1个,这是第一页出现的字串,注意[1]

(<a href='/51hkj/Article/ShowArticle.asp?ArticleID=284&Page=)[0-9]{1,2}('>)
//匹配一个链接,<a href='……&Page=42'>,[0-9]{1,2}表示1位或2位数字

([2]|上一页)(</a>)
//匹配“[2]”或者“上一页”,第一个链接后面必是这二者之一
//接下来是……

(.)+
//一个任意字串
//任意字串之后,快结束了……

(>下一页</a>)?
//匹配括号中的字符串,0个或1个,只要不是最后一页,就有“下一页”

</b></p>
//分页信息结束的地方,必有“</b></p>”

{/dede:trim}
//dede结束标记


« Prev : 1 : 2 : 3 : 4 : 5 : ... 7 : Next »