在Windows 2000环境中安装PEAR
[ 2007/06/24 23:36 | by ipaddr ]
一、什么是PEAR
PEAR是PHP Extension and Application Repository(PHP扩展与应用库)的缩写。PEAR为PHP用户提供了一套基本类库,在编写PHP程序时通过调用相关的PEAR类可以简化我们的工作量。举个很简单的例子,比如我在程序中想把数据库中的数据通过Web页面的条件设定,抽取相应的数据转存到Excel表格里。要完成这个任务,在以前可不是很容易办到的,还好现在有了PEAR,通过调用PEAR里面的Spreadsheet类,我们可以在很短的时间实现对Excel的写操作。长话短说,还是开始尽快我们的PEAR安装之旅吧。
>>>>>>>>>>
LoadRunner相关时间函数
[ 2006/11/30 16:02 | by ipaddr ]
将以下内容,写成ipaddrtime.h,放在LoadRunner目录,就可以在Scripts里面
#include "../ipaddrtime.h"
再调用这些函数.
[code]
typedef long time_t;
struct tm {
int tm_sec; /* seconds after the minute - [0,59] */
int tm_min; /* minutes after the hour - [0,59] */
int tm_hour; /* hours since midnight - [0,23] */
int tm_mday; /* day of the month - [1,31] */
int tm_mon; /* months since January - [0,11] */
int tm_year; /* years since 1900 */
int tm_wday; /* days since Sunday - [0,6] */
int tm_yday; /* days since January 1 - [0,365] */
int tm_isdst; /* daylight savings time flag */
#ifdef LINUX
int tm_gmtoff;
const char *tm_zone;
#endif
};
struct tm *globalGmt;
//取得与当前日期相差tDays天数的日期,将日期以字符串的形式存入tDate
void getDate(char * tDate,int tDays)
{
time_t tmpTime=0;
//取得当前的时间截
time(&tmpTime);
//加上tDays天,tDays可以是负数
tDays=tDays*24*60*60;
tmpTime=tmpTime+tDays;
//转成tm的格式
globalGmt=(struct tm *)gmtime(&tmpTime);
//输出
sprintf(tDate,"%i-%02i-%02i",globalGmt->tm_year+1900,globalGmt->tm_mon+1,globalGmt->tm_mday);
}
//将时间截转换为字符串
genDate(char * tDate,time_t tTime)
{
struct tm *tGmt;
tGmt=(struct tm *)gmtime(&tTime);
sprintf(tDate,"%i-%02i-%02i",tGmt->tm_year+1900,tGmt->tm_mon+1,tGmt->tm_mday);
}
//将时间inDate加上tDate,并将结果输出到outDate
copyDate(char * inDate,char * outDate,int tDate)
{
char strTmp[50];
int year=2006;
int month=10;
int day=1;
struct tm date;
time_t t;
char * strSep="-";
int tokenNum=0;
char * token;
//parse date
strcpy(strTmp,inDate);
token=(char *)strtok(strTmp,strSep);
if(!token)
{
return 0;
}
while(token!= NULL)
{
if (tokenNum==0)
{
year=atoi(token);
}
if (tokenNum==1)
{
month=atoi(token);
}
if (tokenNum==2)
{
day=atoi(token);
}
token=(char *)strtok(NULL,strSep);
tokenNum=tokenNum+1;
}
date.tm_year = year-1900;
date.tm_mon = month-1;
date.tm_mday = day;
date.tm_hour = 10;
date.tm_min = 0;
date.tm_sec = 0;
t = mktime(&date);
t = t + 24*60*60*tDate;
genDate(outDate,t);
}
//以上函数可改写成从字符串到t_time类型的转换函数.[/code]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include "../ipaddrtime.h"
再调用这些函数.
[code]
typedef long time_t;
struct tm {
int tm_sec; /* seconds after the minute - [0,59] */
int tm_min; /* minutes after the hour - [0,59] */
int tm_hour; /* hours since midnight - [0,23] */
int tm_mday; /* day of the month - [1,31] */
int tm_mon; /* months since January - [0,11] */
int tm_year; /* years since 1900 */
int tm_wday; /* days since Sunday - [0,6] */
int tm_yday; /* days since January 1 - [0,365] */
int tm_isdst; /* daylight savings time flag */
#ifdef LINUX
int tm_gmtoff;
const char *tm_zone;
#endif
};
struct tm *globalGmt;
//取得与当前日期相差tDays天数的日期,将日期以字符串的形式存入tDate
void getDate(char * tDate,int tDays)
{
time_t tmpTime=0;
//取得当前的时间截
time(&tmpTime);
//加上tDays天,tDays可以是负数
tDays=tDays*24*60*60;
tmpTime=tmpTime+tDays;
//转成tm的格式
globalGmt=(struct tm *)gmtime(&tmpTime);
//输出
sprintf(tDate,"%i-%02i-%02i",globalGmt->tm_year+1900,globalGmt->tm_mon+1,globalGmt->tm_mday);
}
//将时间截转换为字符串
genDate(char * tDate,time_t tTime)
{
struct tm *tGmt;
tGmt=(struct tm *)gmtime(&tTime);
sprintf(tDate,"%i-%02i-%02i",tGmt->tm_year+1900,tGmt->tm_mon+1,tGmt->tm_mday);
}
//将时间inDate加上tDate,并将结果输出到outDate
copyDate(char * inDate,char * outDate,int tDate)
{
char strTmp[50];
int year=2006;
int month=10;
int day=1;
struct tm date;
time_t t;
char * strSep="-";
int tokenNum=0;
char * token;
//parse date
strcpy(strTmp,inDate);
token=(char *)strtok(strTmp,strSep);
if(!token)
{
return 0;
}
while(token!= NULL)
{
if (tokenNum==0)
{
year=atoi(token);
}
if (tokenNum==1)
{
month=atoi(token);
}
if (tokenNum==2)
{
day=atoi(token);
}
token=(char *)strtok(NULL,strSep);
tokenNum=tokenNum+1;
}
date.tm_year = year-1900;
date.tm_mon = month-1;
date.tm_mday = day;
date.tm_hour = 10;
date.tm_min = 0;
date.tm_sec = 0;
t = mktime(&date);
t = t + 24*60*60*tDate;
genDate(outDate,t);
}
//以上函数可改写成从字符串到t_time类型的转换函数.[/code]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Windows下的PHP开启DomXML
[ 2006/11/30 11:47 | by ipaddr ]
Windows下的PHP开启DomXML
DomXMl需要iconv的支持,所以,开启DomXML需要将PHP目录下的Dlls/iconv.dll拷到windows目录,再在php.ini里面打开
extension=php_domxml.dll
此外,开启PHP的iconv,也是同样道理,需要先将iconv.dll拷到windows目录.>>>>>
DomXMl需要iconv的支持,所以,开启DomXML需要将PHP目录下的Dlls/iconv.dll拷到windows目录,再在php.ini里面打开
extension=php_domxml.dll
此外,开启PHP的iconv,也是同样道理,需要先将iconv.dll拷到windows目录.>>>>>
Linux下批量修改文件编码
[ 2006/11/22 23:24 | by ipaddr ]
假设需要将所有ipaddr目录下的php文件,编码从gb2312转到utf8
[code]
cd ipaddr
find ./ -type f -name "*.php"|while read line;do
echo $line
iconv -f GB2312 -t UTF-8 $line > ${line}.utf8
mv $line ${line}.gb2312
mv ${line}.utf8 $line
done
[/code]
上面脚本将当前ipaddr目录下的所有php文件,从gb2312转到utf8,原文保存为*.php.gb2312。
如果需要删除原来的gb2312文件,只需执行:
[code]
find ./ -type f -name "*.utf8" -exec rm -f {} \;
[/code]>>>>>>>>>>>>>>>>>>>>>>>
CVSNT用户管理方案(转)
[ 2006/11/21 16:42 | by ipaddr ]
1、 CVSNT的用户验证方式
pserver方式下。
在CVSNT的文档中给出了两种验证方式,我总结了一下,可以这样称呼:Window和CVSNT混合验证方式,CVSNT独立验证方式。在前面的文章中,我们没有详细的给出这两种方式的内容,所讲述的启示就是混合验证方式。
决定CVSNT工作于何种验证方式是由CVS的管理文件来决定的,这些管理文件处在库的目录下的CVSROOT目录中,这里可以得出结论,对于不同的库,可以给不同的验证方式。所以,在每个库建立的时候要首先设定好这些前提。
下面的操作如果没有特殊指出则都是在客户端来进行管理的,下面首先是对一些控制原理和相关的文件做一些说明,如果你正在进行相关的模拟操作,请停下来暂时停止你的操作,因为这些操作的步骤是有先后的,如果你顺序不对,那么你可能就权限失效,进行不了下面的操作了。
1.1 config文件
在库建立好了以后,你还没有对控制文件进行修改之前,CVSNT是工作在混合验证方式之下的,这个时候,CVS服务器的管理员就是CVSNT的管理员,你以一个管理员身份登陆,检出你要操作的库的CVSROOT模块,看一下文件列表,控制CVSNT的验证工作方式的是config文件,你可以在文件列表中找到它,双击看看其中的内容,这里对我们最重要的就是第一个设置内容,你会看到下面的内容:
# Set this to `no' if pserver shouldn't check system users/passwords
#SystemAuth=yes
第二行就是我们要修改的内容,默认状态是被注释掉的,SystemAuth有两个值yes和no
yes:pserver将使用系统用户数据库和passwd文件(这个文件后面会详细讲述)来共同验证(若passwd文件不存在或者文件中没有相应的资料,则用系统用户来进行验证)默认为yes
no:所有的用户必须在passwd中存在,根据passwd的内容来进行用户的验证。
我这里所阐述的方案就是工作在no的下面的,修改完之后提交到服务器,提交完毕服务器就处在CVSNT的独立验证模式下了。在这个工作方式下,NT本地的用户和CVSNT用户没有任何本质的联系和影响(仅仅是要建立一个别名)。
1.2 passwd文件
在讲述上面的时候提到了这个文件,在服务器工作在CVSNT验证模式下的时候,这个文件就可以称之为CVSNT的用户数据库,这个里面存储着用户列表,用户的密码,以及别名的一些信息。默认状态下这个文件是不存在的,所以,如果我们要在CVSNT验证模式下工作,必须建立这个文件。注意:这个文件是不能够在客户端进行修改的。这个文件的内容是相当简单的,就像下面:
bach:ULtgRLXo7NRxs
spwang:1sOp854gDF3DY
melissa:tGX1fS8sun6rY:pubcvs
qproj:XR4EZcEs0szik:pubcvs
这里分别拿第一个用户bach和第三个用户melissa来进行说明,每一行代表一个用户,总共有三部分信息,用户名、密码、本地用户三部分之间使用冒号“:”来进行分割。
用户名:就是登陆CVS的用户名
密 码:用户的密码,这里是经过加密的,如果为空,那么就是空密码
本地用户:CVS用户这个别名对应的本地用户,(跟本地用户没有任何其他关系,仅仅是别名的关系)
如果在本地系统中存在一个用户名bash,那么要在CVS建立一个bach这样的用户就不需要在后面指出对应的系统用户,melissa后面的pubcvs就是系统用户,在本地系统上面存在的用户。对于要用命令增加这两种用户的格式如下:
cvs passwd –a bach
cvs passwd –r pubcvs –a melissa
在库建立的时候可以在服务器上建立一个简单的passwd初始化文件,加一行
cvsadmin:
这样,就给出了一个cvsadmin这个空密码用户(本地系统中有这样的用户,就可以不加到后面去),然后在客户端来进行修改和以后的用户增加工作。注意:在客户端进行其他之前请先首先修改这个密码,以防止别人进行破坏。
在服务器端建立了这个文件以后,就不用再手动进行修改了,当你在客户端进行密码或者用户的增加删除的时候,系统会自动进行这个文件的更新。这个文件是管理着CVSNT系统中的所有的用户,所以,要特别重视,不了解这个文件格式的,不要去随便修改,更加不要尝试在客户端进行修改!
1.3 admin文件
这个文件是指定CVSNT的管理员列表的文件,CVSNT会根据这个文件中的内容来判断一个用户是否是管理员。这个文件的内容很简单,是一个用户列表。类似下面
user1
user2
user3
这些代表user1,user2,user3都是管理员,当然,这些用户必须要存在才能够正确登陆系统来执行管理。
这个文件默认状态下是没有的,但是,可以在客户端进行添加,在你的客户端进行新建这个文件然后add上去再commit一下,这个文件就可以上传到服务器,但是这个时候还没有生效,请修改checkoutlist这个文件,加入admin这一行,checkoutlist也可以在客户端进行修改再提交,这个时候admin就可以被系统自动的build了。
Checkoutlist是维护的一个文件列表,可以放入系统自动build的用户自定义的系统文件列表,注意:对passwd没有用!!
1.4 group文件
这个文件是定义系统的组,我们可以将同样性质的用户归入一个组,然后用给用户赋权限的方式给组赋权限,这样,一个组的用户就会具有同样的权限。Group的内容如下:
group1:user1 user2 user3
group2:me you he
group3:tom honey
有上面可以看出来,这个文件的内容也是相当的简单,首先是组的名称然后是冒号,接着是用户名,多个用户名之间用空格来进行分割。
Group文件可以在客户端进行新建和修改,不用修改checkoutlist这个文件,系统会自动build这个文件并且使之生效。
作为组里面的特定成员还可以赋给特定的权限,权限分为两类c,w,r和n,否定权限是有高的优先级的。
好,上面已经介绍了本方案所涉及到的几个重要的文件以及修改方式。这里再强调一下,passwd只能够再服务器端进行建立和修改,不能够在客户端进行操作!
现在根据上面介绍的内容,可以开始你的操作了,下面给出修改顺序,库刚刚建立起来的时候,使用一个服务器上的本地管理员用户进行登陆检出CVSROOT模块。
1、 现在服务器端加上passwd文件,给一个初始的用户,比如cvsadmin:
2、 在客户端增加admin,将cvsadmin加入admin文件,作为出是管理员,并提交加入到库中。
3、 在修改checkoutlist文件,加入admin,使其能够自动build。
4、 最后修改config文件的SystemAuth=no,在提交之前要确认一下你上面的修改是否正确,如果提交了这个文件,CVSNT验证模式就开始生效了!
5、 好,现在请修改你的参数再重新进行的登陆吧。因为你的系统已经切换了工作模式,你当前的用户已经失效了。
完成了上面的步骤,整个服务器就会有效的工作在CVSNT验证模式下了。而group文件在你需要的任何时候可以加入。
在上面的文章关于CVSNT的用户的管理方案的,在这里做一点补充,在后面的操作中全部是针对在客户端使用WinCVS来进行的(出了增加passwd)文件,其实,在我的实践当中config,passwd,admin,checkoutlist,这些文件的起始修改(初始化)都可以在新建了库以后一起完成,然后再让相应的库的管理员来进行相关的操作。 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
pserver方式下。
在CVSNT的文档中给出了两种验证方式,我总结了一下,可以这样称呼:Window和CVSNT混合验证方式,CVSNT独立验证方式。在前面的文章中,我们没有详细的给出这两种方式的内容,所讲述的启示就是混合验证方式。
决定CVSNT工作于何种验证方式是由CVS的管理文件来决定的,这些管理文件处在库的目录下的CVSROOT目录中,这里可以得出结论,对于不同的库,可以给不同的验证方式。所以,在每个库建立的时候要首先设定好这些前提。
下面的操作如果没有特殊指出则都是在客户端来进行管理的,下面首先是对一些控制原理和相关的文件做一些说明,如果你正在进行相关的模拟操作,请停下来暂时停止你的操作,因为这些操作的步骤是有先后的,如果你顺序不对,那么你可能就权限失效,进行不了下面的操作了。
1.1 config文件
在库建立好了以后,你还没有对控制文件进行修改之前,CVSNT是工作在混合验证方式之下的,这个时候,CVS服务器的管理员就是CVSNT的管理员,你以一个管理员身份登陆,检出你要操作的库的CVSROOT模块,看一下文件列表,控制CVSNT的验证工作方式的是config文件,你可以在文件列表中找到它,双击看看其中的内容,这里对我们最重要的就是第一个设置内容,你会看到下面的内容:
# Set this to `no' if pserver shouldn't check system users/passwords
#SystemAuth=yes
第二行就是我们要修改的内容,默认状态是被注释掉的,SystemAuth有两个值yes和no
yes:pserver将使用系统用户数据库和passwd文件(这个文件后面会详细讲述)来共同验证(若passwd文件不存在或者文件中没有相应的资料,则用系统用户来进行验证)默认为yes
no:所有的用户必须在passwd中存在,根据passwd的内容来进行用户的验证。
我这里所阐述的方案就是工作在no的下面的,修改完之后提交到服务器,提交完毕服务器就处在CVSNT的独立验证模式下了。在这个工作方式下,NT本地的用户和CVSNT用户没有任何本质的联系和影响(仅仅是要建立一个别名)。
1.2 passwd文件
在讲述上面的时候提到了这个文件,在服务器工作在CVSNT验证模式下的时候,这个文件就可以称之为CVSNT的用户数据库,这个里面存储着用户列表,用户的密码,以及别名的一些信息。默认状态下这个文件是不存在的,所以,如果我们要在CVSNT验证模式下工作,必须建立这个文件。注意:这个文件是不能够在客户端进行修改的。这个文件的内容是相当简单的,就像下面:
bach:ULtgRLXo7NRxs
spwang:1sOp854gDF3DY
melissa:tGX1fS8sun6rY:pubcvs
qproj:XR4EZcEs0szik:pubcvs
这里分别拿第一个用户bach和第三个用户melissa来进行说明,每一行代表一个用户,总共有三部分信息,用户名、密码、本地用户三部分之间使用冒号“:”来进行分割。
用户名:就是登陆CVS的用户名
密 码:用户的密码,这里是经过加密的,如果为空,那么就是空密码
本地用户:CVS用户这个别名对应的本地用户,(跟本地用户没有任何其他关系,仅仅是别名的关系)
如果在本地系统中存在一个用户名bash,那么要在CVS建立一个bach这样的用户就不需要在后面指出对应的系统用户,melissa后面的pubcvs就是系统用户,在本地系统上面存在的用户。对于要用命令增加这两种用户的格式如下:
cvs passwd –a bach
cvs passwd –r pubcvs –a melissa
在库建立的时候可以在服务器上建立一个简单的passwd初始化文件,加一行
cvsadmin:
这样,就给出了一个cvsadmin这个空密码用户(本地系统中有这样的用户,就可以不加到后面去),然后在客户端来进行修改和以后的用户增加工作。注意:在客户端进行其他之前请先首先修改这个密码,以防止别人进行破坏。
在服务器端建立了这个文件以后,就不用再手动进行修改了,当你在客户端进行密码或者用户的增加删除的时候,系统会自动进行这个文件的更新。这个文件是管理着CVSNT系统中的所有的用户,所以,要特别重视,不了解这个文件格式的,不要去随便修改,更加不要尝试在客户端进行修改!
1.3 admin文件
这个文件是指定CVSNT的管理员列表的文件,CVSNT会根据这个文件中的内容来判断一个用户是否是管理员。这个文件的内容很简单,是一个用户列表。类似下面
user1
user2
user3
这些代表user1,user2,user3都是管理员,当然,这些用户必须要存在才能够正确登陆系统来执行管理。
这个文件默认状态下是没有的,但是,可以在客户端进行添加,在你的客户端进行新建这个文件然后add上去再commit一下,这个文件就可以上传到服务器,但是这个时候还没有生效,请修改checkoutlist这个文件,加入admin这一行,checkoutlist也可以在客户端进行修改再提交,这个时候admin就可以被系统自动的build了。
Checkoutlist是维护的一个文件列表,可以放入系统自动build的用户自定义的系统文件列表,注意:对passwd没有用!!
1.4 group文件
这个文件是定义系统的组,我们可以将同样性质的用户归入一个组,然后用给用户赋权限的方式给组赋权限,这样,一个组的用户就会具有同样的权限。Group的内容如下:
group1:user1 user2 user3
group2:me you he
group3:tom honey
有上面可以看出来,这个文件的内容也是相当的简单,首先是组的名称然后是冒号,接着是用户名,多个用户名之间用空格来进行分割。
Group文件可以在客户端进行新建和修改,不用修改checkoutlist这个文件,系统会自动build这个文件并且使之生效。
作为组里面的特定成员还可以赋给特定的权限,权限分为两类c,w,r和n,否定权限是有高的优先级的。
好,上面已经介绍了本方案所涉及到的几个重要的文件以及修改方式。这里再强调一下,passwd只能够再服务器端进行建立和修改,不能够在客户端进行操作!
现在根据上面介绍的内容,可以开始你的操作了,下面给出修改顺序,库刚刚建立起来的时候,使用一个服务器上的本地管理员用户进行登陆检出CVSROOT模块。
1、 现在服务器端加上passwd文件,给一个初始的用户,比如cvsadmin:
2、 在客户端增加admin,将cvsadmin加入admin文件,作为出是管理员,并提交加入到库中。
3、 在修改checkoutlist文件,加入admin,使其能够自动build。
4、 最后修改config文件的SystemAuth=no,在提交之前要确认一下你上面的修改是否正确,如果提交了这个文件,CVSNT验证模式就开始生效了!
5、 好,现在请修改你的参数再重新进行的登陆吧。因为你的系统已经切换了工作模式,你当前的用户已经失效了。
完成了上面的步骤,整个服务器就会有效的工作在CVSNT验证模式下了。而group文件在你需要的任何时候可以加入。
在上面的文章关于CVSNT的用户的管理方案的,在这里做一点补充,在后面的操作中全部是针对在客户端使用WinCVS来进行的(出了增加passwd)文件,其实,在我的实践当中config,passwd,admin,checkoutlist,这些文件的起始修改(初始化)都可以在新建了库以后一起完成,然后再让相应的库的管理员来进行相关的操作。 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Javascript读写Cookies
[ 2006/10/29 23:33 | by ipaddr ]
[code]
<script type="text/javascript">
// 写 cookie
function setCookie(sName, sValue, iTime)
{
var date = new Date();
date.setTime(date.getTime()+iTime*1000);
document.cookie = escape(sName) + "=" + escape(sValue) + "; expires=" + date.toGMTString();
}
// 读 cookie
function getCookie(sName)
{
var aCookie = document.cookie.split("; ");
for (var i=0; i < aCookie.length; i++)
{
var aCrumb = aCookie[i].split("=");
if (escape(sName) == aCrumb[0])
return unescape(aCrumb[1]);
}
return null;
}
// 删 cookie
function delCookie(sName){
var date = new Date();
document.cookie = sName + "= ; expires=" + date.toGMTString();
}
// 测试函数
function trace(){
alert(document.cookie);
}
</script>
[/code]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
<script type="text/javascript">
// 写 cookie
function setCookie(sName, sValue, iTime)
{
var date = new Date();
date.setTime(date.getTime()+iTime*1000);
document.cookie = escape(sName) + "=" + escape(sValue) + "; expires=" + date.toGMTString();
}
// 读 cookie
function getCookie(sName)
{
var aCookie = document.cookie.split("; ");
for (var i=0; i < aCookie.length; i++)
{
var aCrumb = aCookie[i].split("=");
if (escape(sName) == aCrumb[0])
return unescape(aCrumb[1]);
}
return null;
}
// 删 cookie
function delCookie(sName){
var date = new Date();
document.cookie = sName + "= ; expires=" + date.toGMTString();
}
// 测试函数
function trace(){
alert(document.cookie);
}
</script>
[/code]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
用IE打开一个有图片的网站,最好是多一些小图片的网页,
再在地址栏输入以下内容,就可以看到图片在飞舞了:
[code]
javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0);
[/code]>>>>>>>>>
ASP代码加密
ASP代码一般是明文,很少有加密的,MS有个工具Script Encoder可以加密,这个东东可以微软官方网站免费下载,而且还有详细使用说明,但是经过它加密后的文件会有<%@ language = vbscript.encode %>,管理员看到这句话就知道这个asp文件被加密了。而且也有相关的解密文件。
本文提供一种简单的方法,可以加密ASP代码,主要思路是将代码做些运算,比如将全部代码移动一位,基本上就算加密了,主要的加解密函数如下:
function UnEncode(temp)
but=1
for i =1 to len(temp)
if mid(temp,i,1)<>"汤" then
pk=asc(mid(temp,i,1))-but
if pk>126 then
pk=pk-95
elseif pk<32 then
pk=pk+95
end if
a=a&chr(pk)
else
a=a&vbcrlf
end if
next
UnEncode=a
end function
function Encode(temp)
but=1
cc=replace(temp,vbcrlf,"汤")
for i= 1 to len(cc)
if mid(cc,i,1)<>"汤" then
pk=asc(mid(cc,i,1))+but
if pk>126 then
pk=pk-95
elseif pk<32 then
pk=pk+95
end if
a=a&chr(pk)
else
a=a&"汤"
end if
next
'a=replace(a,"""","""""")
Encode=a
end function
在开发的时候,通常将关键ASP代码Encode,再使用Excute(Uncode(ipaddr))执行就可以了。这样管理员一般不能直接看到关键代码,一般在程序里不要带上Encode函数,只在开发的时候使用,此外,UnEncode也可以改成其它函数名。
这种方式加密比较简单,解密也很容易。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ASP代码一般是明文,很少有加密的,MS有个工具Script Encoder可以加密,这个东东可以微软官方网站免费下载,而且还有详细使用说明,但是经过它加密后的文件会有<%@ language = vbscript.encode %>,管理员看到这句话就知道这个asp文件被加密了。而且也有相关的解密文件。
本文提供一种简单的方法,可以加密ASP代码,主要思路是将代码做些运算,比如将全部代码移动一位,基本上就算加密了,主要的加解密函数如下:
function UnEncode(temp)
but=1
for i =1 to len(temp)
if mid(temp,i,1)<>"汤" then
pk=asc(mid(temp,i,1))-but
if pk>126 then
pk=pk-95
elseif pk<32 then
pk=pk+95
end if
a=a&chr(pk)
else
a=a&vbcrlf
end if
next
UnEncode=a
end function
function Encode(temp)
but=1
cc=replace(temp,vbcrlf,"汤")
for i= 1 to len(cc)
if mid(cc,i,1)<>"汤" then
pk=asc(mid(cc,i,1))+but
if pk>126 then
pk=pk-95
elseif pk<32 then
pk=pk+95
end if
a=a&chr(pk)
else
a=a&"汤"
end if
next
'a=replace(a,"""","""""")
Encode=a
end function
在开发的时候,通常将关键ASP代码Encode,再使用Excute(Uncode(ipaddr))执行就可以了。这样管理员一般不能直接看到关键代码,一般在程序里不要带上Encode函数,只在开发的时候使用,此外,UnEncode也可以改成其它函数名。
这种方式加密比较简单,解密也很容易。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
native2ascii的使用
[ 2006/09/06 10:47 | by ipaddr ]
Java编译器和其它的Java工具仅仅能够处理Latin-1或者Unicode(\udddd形式)编码的字符,native2ascii工具将包含其它编码形式的文件转换成拉丁或UNICODE格式。
native2ascii - Native-to-ASCII Converter
将一个文件中的非拉丁或非UNICODE字符形式转换成拉丁或UNICODE字符的文件。
native2ascii [options] [inputfile [outputfile]]
可选项参数
-reverse
执行还原操作:把一个文件从拉丁或UNICODE格式转换成本地编码格式的字符。
native2ascii这个文件在jdk/bin下面。>>>>>>>>>>>>
native2ascii - Native-to-ASCII Converter
将一个文件中的非拉丁或非UNICODE字符形式转换成拉丁或UNICODE字符的文件。
native2ascii [options] [inputfile [outputfile]]
可选项参数
-reverse
执行还原操作:把一个文件从拉丁或UNICODE格式转换成本地编码格式的字符。
native2ascii这个文件在jdk/bin下面。>>>>>>>>>>>>