可爱熊个人博客

Archive for 六月, 2011

kloxo面板下php探针不显示硬件信息的解决方法

安装好kloxo控制面板,添加域名开通网站以后,会发现上传的探针不显示内存、CPU等相关硬件信息。其实这是kloxo为了安全考虑,默认开启了Openbasedir。只要在域名设置下面,禁用它就可以了。

方法一(推荐):
在左侧控制导航里,依次打开域名 — 你的域名 — 网站 : apache — 其他设置
在其他设置里面 禁用Openbasedir 打勾,然后保存就可以了。
完成后在面板上重启apache,或者用过SSH,执行service httpd restart Read More…

PHP对表单提交特殊字符的过滤和处理

一、几个与特殊字符处理有关的PHP函数

函数名 释义 介绍
htmlspecialchars 将与、单双引号、大于和小于号化成HTML格式 &转成&
“转成"
‘ 转成'
<转成&lt;
>转成&gt;
htmlentities() 所有字符都转成HTML格式 除上面htmlspecialchars字符外,还包括双字节字符显示成编码等。
addslashes 单双引号、反斜线及NULL加上反斜线转义 被改的字符包括单引号 (‘)、双引号 (“)、反斜线 backslash (\) 以及空字符NULL。
stripslashes 去掉反斜线字符 去掉字符串中的反斜线字符。若是连续二个反斜线,则去掉一个,留下一个。若只有一个反斜线,就直接去掉。
quotemeta 加入引用符号 将字符串中含有 . \\ + * ? [ ^ ] ( $ ) 等字符的前面加入反斜线 “\” 符号。
nl2br() 将换行字符转成<br>
strip_tags 去掉HTML及PHP标记 去掉字符串中任何 HTML标记和PHP标记,包括标记封堵之间的内容。注意如果字符串HTML及PHP标签存在错误,也会返回错误。
mysql_real_escape_string 转义SQL字符串中的特殊字符 转义 \x00  \n  \r  空格  \  ‘  ” \x1a,针对多字节字符处理很有效。mysql_real_escape_string会判断字符集,mysql_escape_string则不用考 虑。

 

Kloxo面板打开gzip的办法

Kloxo

apche下打开gzip办法,

/etc/httpd/conf/httpd.conf

其再最后加上:

<ifmodule mod_deflate.c>
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
#DeflateFilterNote Input instream
#DeflateFilterNote Output outstream
#DeflateFilterNote Ratio ratio
#LogFormat ‘”%r” %{outstream}n/%{instream}n (%{ratio}n%%)’ deflate
#CustomLog logs/deflate_log.log deflate
</IfModule>

 

设置好后还要在Kloxo面板中的“php配置”中勾选上“Output Compression”

记得最后要重启apache服务。

Php字符串处理函

addcslashes ———————————————— 为字符串里面的部分字符添加反斜线转义字符
addslashes ————————————————   用指定的方式对字符串里面的字符进行转义
bin2hex ———————————————————— 将二进制数据转换成十六进制表示
chr ———————————————————————— 返回一个字符的ASCII码
chunk_split ———————————————— 按一定的字符长度将字符串分割成小块
convert_cyr_string ————————— 将斯拉夫语字符转换为别的字符
convert_uudecode ——————————— 解密一个字符串
convert_uuencode ——————————— 加密一个字符串
count_chars ———————————————— 返回一个字符串里面的字符使用信息
crc32 —————————————————————— 计算一个字符串的crc32多项式
crypt —————————————————————— 单向散列加密函数
explode ———————————————————— 将一个字符串用分割符转变为一数组形式
fprintf ———————————————————— 按照要求对数据进行返回,并直接写入文档流
get_html_translation_table — 返回可以转换的HTML实体
html_entity_decode ————————— htmlentities ()函数的反函数,将HTML实体转换为字符
htmlentities ——————————————— 将字符串中一些字符转换为HTML实体
htmlspecialchars_decode ———— htmlspecialchars()函数的反函数,将HTML实体转换为字符
htmlspecialchars ——————————— 将字符串中一些字符转换为HTML实体
implode ———————————————————— 将数组用特定的分割符转变为字符串

定时采集配置方法

要实现采集,默认方式是根据配置好的采集规则,在浏览器提交相应的参数即可完成后面的采集入库全部动作。
而实现定时采集,与人工在浏览器提交有些区别,主要分两大步骤:
一、编写采集的url和相关参数,访问这个url即可实现想要的采集模式。(这个url直接在浏览器提交同样可以实现采集)
二、把定时访问这个url的功能加到系统的定时任务里面,实现无人值守的定时采集。 Read More…

动网升级疑难集合

— 运行时错误记录与解决方案(动网)
1、问:
Microsoft VBScript 运行时错误 错误 ‘800a01a8’
缺少对象: ‘UserSession.documentElement’
/bbs/inc/Dv_ClsMain.asp,行 518
升级SP1后出现这个错误!!是哪里出现问题呢?
答:
试试执行升级包中的更新服务器缓存
2、问:但在论坛用户组(等级)管理时出错如下:
Microsoft VBScript 运行时错误 错误 ‘800a01f4’
变量未定义: ‘LoadGroupSetting’
/copyunion/admin/group.asp,行 410
答:
此为编写中的错误,把出错行改为Dvbbs.LoadGroupSetting即可.
此错误以后会修正.
3、问:
Microsoft VBScript runtime error ‘800a01a8’
object required: ‘XmlAds.documentElement’
/inc/dv_clsother.asp, line 188
请问这是什么错误?
答:
检查一下你服务器上Msxml的版本,如果无法得知,请把conn.asp文件中的以下部分逐次递减来修改,直到可以正常运行。(注意:每修改一次都必须更新服务器缓存)
\’最高版本为.4.0 依次为: Const MsxmlVersion=”.3.0″ Const MsxmlVersion=”.2.6″ 最低版本Const MsxmlVersion=””
Const MsxmlVersion=”.3.0″
4、问:Microsoft JET Database Engine 错误 ‘80040e57’
字段太小而不能接受所要添加的数据的数量。试着插入或粘贴较少的数据。
/bbs/inc/Dv_ClsMain.asp,行1287
答:
把这一行前面的小双引号去掉,再看看页面显示的结果
\’Response.Write command & “<br>” Read More…

Win2003 64位下ASP无法连接Access数据库的解决方法

64位Windows 2003下面配置好IIS后,运行ASP页面,如果里面有连接access数据库的代码,就会出现错误警告
ADODB.Connection 错误 ‘800a0e7a’
未找到提供程序。该程序可能未正确安装。
/连接“网站内容管理”数据库。asp,行 2
原因:IIS是以64位方式来运行的,它只能加载64位模块,不能加载32位模块。而访问access数据库的jet引擎只有32位的,没有64位,因此无法被IIS加载。
解决思路:让IIS以32位方式运行,从而可以调用32位的jet引擎
解决方法:在命令行窗口输入
复制代码 代码如下:cscript C:\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
上面方法的负面效应:因为IIS被改成以32位方式运行,所以它只能加载32位模块。如果改之前,IIS加载了其他64位的模块,则改之后就无法加载这个模块了。如果想继续使用这个模块的功能,只能寻找这个模块的32位版本并加载。
如果希望IIS重新以64位方式运行,可以输入
复制代码 代码如下:cscript C:\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 0

昨天去帮客户配置网站,客户服务器是使用的windows 2003 64bit的系统,我把iis站点配置好后测试时发现程序一直提示运行超时,因为这个程序在32bit机器上运行没有问题,怀疑问题出在循环处,让程序在循环开始停住,测试可正常运行,输出记录状态rs.bof显示空白,怀疑jet引擎有问题,将程序的出错控制语句去掉后程序运行的错误描述是未找到提供程序,打开”数据源(ODBC)”,转到“驱动程序”选项卡一看,发现没有JET引擎。于是从微软网站上下载了mdac2.7安装,安装后发现问题依旧!
从网上搜索发现是64位的iis无法兼容32的jet引擎,需要让iis以32为的方式运行,只要在命令行输入一下命令 cscript C:\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1 之后IIS就会以32位方式来运行了。
运行命令后网站果然可以正常运行了
另外:网上还提到如果运行了asp.net模块当iis以32为方式运行时也必须加载32的asp.net扩展,否则iis无法正常运行,因为64位的IIS无法加载32位的ASP.Net模块,32位的IIS也无法加载64位的ASP.Net模块.

64位系统下动网论坛数据库连接的问题

最近刚刚安装了windows server 2003 r2 64位系统,并且安装了sql server 2005 64位版本。别的网站基本上不用改什么就可以直接运行。但是动网论坛却一直报错:

修改conn.asp文件,打印错误出来

Sub ConnectionDatabase
Dim ConnStr
If IsSqlDataBase = 1 Then
ConnStr = “Provider = Sqloledb; User ID = ” & SqlUsername & “; Password = ” & SqlPassword & “; Initial Catalog = ” & SqlDatabaseName & “; Data Source = ” & SqlLocalName & “;”
Else
ConnStr = “Provider = Microsoft.Jet.OLEDB.4.0;Data Source = ” & Server.MapPath(MyDbPath & db)
End If
On Error Resume Next
Set conn = Server.CreateObject(“ADODB.Connection”)
conn.open ConnStr
If Err Then
Response.Write err.description
err.Clear
Set Conn = Nothing
Response.Write “数据库连接出错,请检查连接字串。”‘注释,需要把这几个字翻译成英文。
err.Clear
Response.End
End If
End Sub

运行结果报错内容:未指定提供程序,也没有指派的默认提供程序。数据库连接出错,请检查连接字串。
看来这个连接串有问题,和64位系统无法兼容。但是我的asp.net程序都正常,和数据库连接正常。查找我的.net程序中连接串如下:
“Server=?????;Database=???;Uid=???;pwd=????;”

于是修改动网论坛conn.asp文件:

Sub ConnectionDatabase
Dim ConnStr
If IsSqlDataBase = 1 Then
ConnStr = “PROVIDER=SQLOLEDB;DATA SOURCE=”&SqlLocalName&”;UID=”&SqlUsername&”;PWD=”&SqlPassword&”;DATABASE=”&SqlDatabaseName
Else
ConnStr = “Provider = Microsoft.Jet.OLEDB.4.0;Data Source = ” & Server.MapPath(MyDbPath & db)
End If
On Error Resume Next
Set conn = Server.CreateObject(“ADODB.Connection”)
conn.open ConnStr
If Err Then
err.Clear
Set Conn = Nothing
Response.Write “数据库连接出错,请检查连接字串。”‘注释,需要把这几个字翻译成英文。
err.Clear
Response.End
End If
End Sub

修改后运行正常:

MySQL数据库中SQL语句中 关于日期、时间\时间戳的函数

MySQL数据库中SQL语句中 关于日期、时间\时间戳的函数

一 MySQL 获得当前日期时间 函数
1.1 获得当前日期+时间(date + time)函数:now()

mysql> select now();

+―――――――+
| now() |
+―――――――+
| 2008-08-08 22:20:46 |
+―――――――+
除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:

current_timestamp()
,current_timestamp
,localtime()
,localtime
,localtimestamp ― (v4.0.6)
,localtimestamp() ― (v4.0.6)
这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。

1.2 获得当前日期+时间(date + time)函数:sysdate()

sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了:

mysql> select now(), sleep(3), now();

+―――――――+―――-+―――――――+
| now() | sleep(3) | now() |
+―――――――+―――-+―――――――+
| 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 |
+―――――――+―――-+―――――――+mysql> select sysdate(), sleep(3), sysdate();

+―――――――+―――-+―――――――+
| sysdate() | sleep(3) | sysdate() |
+―――――――+―――-+―――――――+
| 2008-08-08 22:28:41 | 0 | 2008-08-08 22:28:44 |
+―――――――+―――-+―――――――+
可 以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3 秒。MySQL Manual 中是这样描述 sysdate() 的:Return the time at which the function executes。

sysdate() 日期时间函数,一般情况下很少用到。

Read More…

mysql 查询今天,昨天,一周,一月,上月的数据

今天

  1. select * from 表名 where to_days(时间字段名) = to_days(now());

昨天

  1. SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) – TO_DAYS( 时间字段名) <= 1

7天

  1. SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)

近30天

  1. SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名)

本月

  1. SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, ‘%Y%m’ ) = DATE_FORMAT( CURDATE( ) , ‘%Y%m’ )

上一月

  1. SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , ‘%Y%m’ ) , date_format( 时间字段名, ‘%Y%m’ ) ) =1