May
14
Linux下的时间分为两种,系统时间与硬件时间。我们一般看到的时间就是系统时间,比如现在是11:45 AM。硬件时间指的是主板上CMOS中的时间,这两个时间并不是总是同步的,一般情况下大约11分钟同步一次。
Linux系统启动时,从CMOS中读取当前时间,作为系统时间,从此以后系统时间独立tick,此时如果你用date命令修改了系统时间,硬件时间是不受影响的,就是说如果此时关机,下次的系统时间还是不对。要想将系统时间保存到硬件时间,可以是用hwclock 或者clock命令,hwclock就是hardware clock的意思。
一个完整的修改linux系统时间的过程如下所示:
注意先改日期,再改时间
# date -s 20091218 将当前日期改为2009-12-18
# date -s 12:21:00 将当前系统时间改为12:21:00
# clock -w 将当前系统时间保存到硬件时间
Linux系统启动时,从CMOS中读取当前时间,作为系统时间,从此以后系统时间独立tick,此时如果你用date命令修改了系统时间,硬件时间是不受影响的,就是说如果此时关机,下次的系统时间还是不对。要想将系统时间保存到硬件时间,可以是用hwclock 或者clock命令,hwclock就是hardware clock的意思。
一个完整的修改linux系统时间的过程如下所示:
注意先改日期,再改时间
# date -s 20091218 将当前日期改为2009-12-18
# date -s 12:21:00 将当前系统时间改为12:21:00
# clock -w 将当前系统时间保存到硬件时间
Apr
22
discuz7.2默认为一个精简IP库,如果要使用纯真数据库,得先把ipdata/tinyipdata.dat,删除或改名。然后上传纯真数据库到ipdata/wry.dat。他使用了三个函数来完成IP库查询。我现在主要要连接纯真数据库查询ip的功能。所以就把他的判断函数合并了一下,改成了一个函数。
<?php
$ip=$_SERVER['REMOTE_ADDR'];
//测试1
echo convertip($ip).'<br />';
//测试2
echo convertip('123.114.33.77');
function convertip($ip) {
if(!preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/", $ip)) return 'Invalid IP Address';
$iparray = explode('.', $ip);
if($iparray[0] == 10 || $iparray[0] == 127 || ($iparray[0] == 192 && $iparray[1] == 168) || ($iparray[0] == 172 && ($iparray[1] >= 16 && $iparray[1] <= 31))) {
return 'LAN';
} elseif($iparray[0] > 255 || $iparray[1] > 255 || $iparray[2] > 255 || $iparray[3] > 255) {
return 'Invalid IP Address';
}
if(!$fd = @fopen('QQWry.Dat', 'rb')) {
return 'Invalid IP data file';
}
$ip = explode('.', $ip);
$ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];
if(!($DataBegin = fread($fd, 4)) || !($DataEnd = fread($fd, 4)) ) return;
@$ipbegin = implode('', unpack('L', $DataBegin));
if($ipbegin < 0) $ipbegin += pow(2, 32);
@$ipend = implode('', unpack('L', $DataEnd));
if($ipend < 0) $ipend += pow(2, 32);
$ipAllNum = ($ipend - $ipbegin) / 7 + 1;
$BeginNum = $ip2num = $ip1num = 0;
$ipAddr1 = $ipAddr2 = '';
$EndNum = $ipAllNum;
while($ip1num > $ipNum || $ip2num < $ipNum) {
$Middle= intval(($EndNum + $BeginNum) / 2);
fseek($fd, $ipbegin + 7 * $Middle);
$ipData1 = fread($fd, 4);
if(strlen($ipData1) < 4) {
fclose($fd);
return 'System Error';
}
$ip1num = implode('', unpack('L', $ipData1));
if($ip1num < 0) $ip1num += pow(2, 32);
if($ip1num > $ipNum) {
$EndNum = $Middle;
continue;
}
$DataSeek = fread($fd, 3);
if(strlen($DataSeek) < 3) {
fclose($fd);
return 'System Error';
}
$DataSeek = implode('', unpack('L', $DataSeek.chr(0)));
fseek($fd, $DataSeek);
$ipData2 = fread($fd, 4);
if(strlen($ipData2) < 4) {
fclose($fd);
return 'System Error';
}
$ip2num = implode('', unpack('L', $ipData2));
if($ip2num < 0) $ip2num += pow(2, 32);
if($ip2num < $ipNum) {
if($Middle == $BeginNum) {
fclose($fd);
return 'Unknown';
}
$BeginNum = $Middle;
}
}
$ipFlag = fread($fd, 1);
if($ipFlag == chr(1)) {
$ipSeek = fread($fd, 3);
if(strlen($ipSeek) < 3) {
fclose($fd);
return 'System Error';
}
$ipSeek = implode('', unpack('L', $ipSeek.chr(0)));
fseek($fd, $ipSeek);
$ipFlag = fread($fd, 1);
}
if($ipFlag == chr(2)) {
$AddrSeek = fread($fd, 3);
if(strlen($AddrSeek) < 3) {
fclose($fd);
return 'System Error';
}
$ipFlag = fread($fd, 1);
if($ipFlag == chr(2)) {
$AddrSeek2 = fread($fd, 3);
if(strlen($AddrSeek2) < 3) {
fclose($fd);
return 'System Error';
}
$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
fseek($fd, $AddrSeek2);
} else {
fseek($fd, -1, SEEK_CUR);
}
while(($char = fread($fd, 1)) != chr(0))
$ipAddr2 .= $char;
$AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));
fseek($fd, $AddrSeek);
while(($char = fread($fd, 1)) != chr(0))
$ipAddr1 .= $char;
} else {
fseek($fd, -1, SEEK_CUR);
while(($char = fread($fd, 1)) != chr(0))
$ipAddr1 .= $char;
$ipFlag = fread($fd, 1);
if($ipFlag == chr(2)) {
$AddrSeek2 = fread($fd, 3);
if(strlen($AddrSeek2) < 3) {
fclose($fd);
return 'System Error';
}
$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
fseek($fd, $AddrSeek2);
} else {
fseek($fd, -1, SEEK_CUR);
}
while(($char = fread($fd, 1)) != chr(0))
$ipAddr2 .= $char;
}
fclose($fd);
if(preg_match('/http/i', $ipAddr2)) {
$ipAddr2 = '';
}
$ipaddr = "$ipAddr1 $ipAddr2";
$ipaddr = preg_replace('/CZ88\.NET/is', '', $ipaddr);
$ipaddr = preg_replace('/^\s*/is', '', $ipaddr);
$ipaddr = preg_replace('/\s*$/is', '', $ipaddr);
if(preg_match('/http/i', $ipaddr) || $ipaddr == '') {
$ipaddr = 'Unknown';
}
return $ipaddr;
}
?>
$ip=$_SERVER['REMOTE_ADDR'];
//测试1
echo convertip($ip).'<br />';
//测试2
echo convertip('123.114.33.77');
function convertip($ip) {
if(!preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/", $ip)) return 'Invalid IP Address';
$iparray = explode('.', $ip);
if($iparray[0] == 10 || $iparray[0] == 127 || ($iparray[0] == 192 && $iparray[1] == 168) || ($iparray[0] == 172 && ($iparray[1] >= 16 && $iparray[1] <= 31))) {
return 'LAN';
} elseif($iparray[0] > 255 || $iparray[1] > 255 || $iparray[2] > 255 || $iparray[3] > 255) {
return 'Invalid IP Address';
}
if(!$fd = @fopen('QQWry.Dat', 'rb')) {
return 'Invalid IP data file';
}
$ip = explode('.', $ip);
$ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];
if(!($DataBegin = fread($fd, 4)) || !($DataEnd = fread($fd, 4)) ) return;
@$ipbegin = implode('', unpack('L', $DataBegin));
if($ipbegin < 0) $ipbegin += pow(2, 32);
@$ipend = implode('', unpack('L', $DataEnd));
if($ipend < 0) $ipend += pow(2, 32);
$ipAllNum = ($ipend - $ipbegin) / 7 + 1;
$BeginNum = $ip2num = $ip1num = 0;
$ipAddr1 = $ipAddr2 = '';
$EndNum = $ipAllNum;
while($ip1num > $ipNum || $ip2num < $ipNum) {
$Middle= intval(($EndNum + $BeginNum) / 2);
fseek($fd, $ipbegin + 7 * $Middle);
$ipData1 = fread($fd, 4);
if(strlen($ipData1) < 4) {
fclose($fd);
return 'System Error';
}
$ip1num = implode('', unpack('L', $ipData1));
if($ip1num < 0) $ip1num += pow(2, 32);
if($ip1num > $ipNum) {
$EndNum = $Middle;
continue;
}
$DataSeek = fread($fd, 3);
if(strlen($DataSeek) < 3) {
fclose($fd);
return 'System Error';
}
$DataSeek = implode('', unpack('L', $DataSeek.chr(0)));
fseek($fd, $DataSeek);
$ipData2 = fread($fd, 4);
if(strlen($ipData2) < 4) {
fclose($fd);
return 'System Error';
}
$ip2num = implode('', unpack('L', $ipData2));
if($ip2num < 0) $ip2num += pow(2, 32);
if($ip2num < $ipNum) {
if($Middle == $BeginNum) {
fclose($fd);
return 'Unknown';
}
$BeginNum = $Middle;
}
}
$ipFlag = fread($fd, 1);
if($ipFlag == chr(1)) {
$ipSeek = fread($fd, 3);
if(strlen($ipSeek) < 3) {
fclose($fd);
return 'System Error';
}
$ipSeek = implode('', unpack('L', $ipSeek.chr(0)));
fseek($fd, $ipSeek);
$ipFlag = fread($fd, 1);
}
if($ipFlag == chr(2)) {
$AddrSeek = fread($fd, 3);
if(strlen($AddrSeek) < 3) {
fclose($fd);
return 'System Error';
}
$ipFlag = fread($fd, 1);
if($ipFlag == chr(2)) {
$AddrSeek2 = fread($fd, 3);
if(strlen($AddrSeek2) < 3) {
fclose($fd);
return 'System Error';
}
$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
fseek($fd, $AddrSeek2);
} else {
fseek($fd, -1, SEEK_CUR);
}
while(($char = fread($fd, 1)) != chr(0))
$ipAddr2 .= $char;
$AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));
fseek($fd, $AddrSeek);
while(($char = fread($fd, 1)) != chr(0))
$ipAddr1 .= $char;
} else {
fseek($fd, -1, SEEK_CUR);
while(($char = fread($fd, 1)) != chr(0))
$ipAddr1 .= $char;
$ipFlag = fread($fd, 1);
if($ipFlag == chr(2)) {
$AddrSeek2 = fread($fd, 3);
if(strlen($AddrSeek2) < 3) {
fclose($fd);
return 'System Error';
}
$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
fseek($fd, $AddrSeek2);
} else {
fseek($fd, -1, SEEK_CUR);
}
while(($char = fread($fd, 1)) != chr(0))
$ipAddr2 .= $char;
}
fclose($fd);
if(preg_match('/http/i', $ipAddr2)) {
$ipAddr2 = '';
}
$ipaddr = "$ipAddr1 $ipAddr2";
$ipaddr = preg_replace('/CZ88\.NET/is', '', $ipaddr);
$ipaddr = preg_replace('/^\s*/is', '', $ipaddr);
$ipaddr = preg_replace('/\s*$/is', '', $ipaddr);
if(preg_match('/http/i', $ipaddr) || $ipaddr == '') {
$ipaddr = 'Unknown';
}
return $ipaddr;
}
?>
Apr
3
一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数.
注意:
mb_convert_encoding把在utf8可编码的字符而在gbk中不可编码的字符都转成了\0x00\0x80
在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉
mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;
注意:
mb_convert_encoding把在utf8可编码的字符而在gbk中不可编码的字符都转成了\0x00\0x80
在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉
mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;
Jan
22
function page($offset=5){
global $l_dpcms_fore,$actionurl,$total_num,$maxpage,$page;
if(empty($total_num) || $page>$maxpage) return;
$str='';
if($page>1){
$str.='<a href="'.$actionurl.'">'.$l_dpcms_fore['home'].'</a>';
$str.='<a href="'.$actionurl.'&page='.($page-1).'">'.$l_dpcms_fore['prev'].'</a>';
}
$i= $page>$offset ? $page-$offset : 1 ;
$i_end= ($page+$offset)>$maxpage ? $maxpage : $page+$offset ;
for($i;$i<=$i_end;$i++){
if($page==$i) $str.='<b>'.$i.'</b>';
else $str.='<a href="'.$actionurl.'&page='.$i.'">'.$i.'</a>';
}
if($page<$maxpage){
$str.='<a href="'.$actionurl.'&page='.($page+1).'">'.$l_dpcms_fore['next'].'</a>';
$str.='<a href="'.$actionurl.'&page='.$maxpage.'">'.$l_dpcms_fore['last'].'</a>';
}
return $str;
}
global $l_dpcms_fore,$actionurl,$total_num,$maxpage,$page;
if(empty($total_num) || $page>$maxpage) return;
$str='';
if($page>1){
$str.='<a href="'.$actionurl.'">'.$l_dpcms_fore['home'].'</a>';
$str.='<a href="'.$actionurl.'&page='.($page-1).'">'.$l_dpcms_fore['prev'].'</a>';
}
$i= $page>$offset ? $page-$offset : 1 ;
$i_end= ($page+$offset)>$maxpage ? $maxpage : $page+$offset ;
for($i;$i<=$i_end;$i++){
if($page==$i) $str.='<b>'.$i.'</b>';
else $str.='<a href="'.$actionurl.'&page='.$i.'">'.$i.'</a>';
}
if($page<$maxpage){
$str.='<a href="'.$actionurl.'&page='.($page+1).'">'.$l_dpcms_fore['next'].'</a>';
$str.='<a href="'.$actionurl.'&page='.$maxpage.'">'.$l_dpcms_fore['last'].'</a>';
}
return $str;
}
Dec
16
IIS:
恢复到初始密码888888
1、找到软件安装目录下的awIB.ini文件
2、用文本编辑器打开,找到[common]下的checksum项和[user1]下的password项,将checksum项和[user1]下的password项删除(删除值或整行删除)
3、重启IIS(运行iisreset)
linux Apache:
恢复到初始密码888888
1、找到/usr/local/ibsys/awIB.ini文件
2、用文本编辑器打开,找到[common]下的checksum项,将其删除(删除值或整行删除)
3、重启apache
windows apache:
恢复到初始密码888888
1、找到软件安装目录下的awIB.ini文件
2、用文本编辑器打开,找到[common]下的checksum项,将其删除(删除值或整行删除)
3、重启apache
恢复到初始密码888888
1、找到软件安装目录下的awIB.ini文件
2、用文本编辑器打开,找到[common]下的checksum项和[user1]下的password项,将checksum项和[user1]下的password项删除(删除值或整行删除)
3、重启IIS(运行iisreset)
linux Apache:
恢复到初始密码888888
1、找到/usr/local/ibsys/awIB.ini文件
2、用文本编辑器打开,找到[common]下的checksum项,将其删除(删除值或整行删除)
3、重启apache
windows apache:
恢复到初始密码888888
1、找到软件安装目录下的awIB.ini文件
2、用文本编辑器打开,找到[common]下的checksum项,将其删除(删除值或整行删除)
3、重启apache
Dec
16
nginx.conf内
location \.php$ #去掉.php后边的$,$在正则里表示结束,这样就无法取得www.xxx.com/index.php/1.html中/1.html这段
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
……
fastcgi_param PATH_INFO $fastcgi_script_name; #增加这句,将Nginx的系统变量$fastcgi_script_name赋给PATH_INFO
}
location \.php$ #去掉.php后边的$,$在正则里表示结束,这样就无法取得www.xxx.com/index.php/1.html中/1.html这段
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
……
fastcgi_param PATH_INFO $fastcgi_script_name; #增加这句,将Nginx的系统变量$fastcgi_script_name赋给PATH_INFO
}
Dec
11
这个月只能用一个非常累来形容。
从最初被百度K掉www
之后刚刚恢复,网站服务器频繁被关闭。
后来刚把服务器搬到美国服务器上,出了网站访问慢外,服务器还承受不了网站访问压力。
再后被逼的转回国内,
今天转刚把数据转过来。还的考虑之后的网站程序要怎么开发,是用ajax还是保持现在的状态。ajax或许能解决一些非法关键字的过滤,但对SEO就差了,实在不行,只能牺牲服务器资源,做一下非法关键字替换,纠结啊。
累。。。。。。
从最初被百度K掉www
之后刚刚恢复,网站服务器频繁被关闭。
后来刚把服务器搬到美国服务器上,出了网站访问慢外,服务器还承受不了网站访问压力。
再后被逼的转回国内,
今天转刚把数据转过来。还的考虑之后的网站程序要怎么开发,是用ajax还是保持现在的状态。ajax或许能解决一些非法关键字的过滤,但对SEO就差了,实在不行,只能牺牲服务器资源,做一下非法关键字替换,纠结啊。
累。。。。。。
Nov
10
从“命令提示符”进入mysql
如果MYSQL安装在E盘
那就输入
e:
cd mysql(mysql的安装目录)
cd bin
mysql -uroot -p88888
root是用户名 88888是你自己的密码
要先一步一步到 bin目录下再执行登录。
你的如果安装在C盘,那第一步可以输入 cd\ 就直接回到c:盘了
解决方法(转):---但执行第一种办法时出现错误,第二种办法成功
1。改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
mysql -u root -pvmwaremysql>use mysql;mysql>update user set host = '%' where user = 'root';mysql>select host, user from user;
2. 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
如果MYSQL安装在E盘
那就输入
e:
cd mysql(mysql的安装目录)
cd bin
mysql -uroot -p88888
root是用户名 88888是你自己的密码
要先一步一步到 bin目录下再执行登录。
你的如果安装在C盘,那第一步可以输入 cd\ 就直接回到c:盘了
解决方法(转):---但执行第一种办法时出现错误,第二种办法成功
1。改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
mysql -u root -pvmwaremysql>use mysql;mysql>update user set host = '%' where user = 'root';mysql>select host, user from user;
2. 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;






