??xml version="1.0" encoding="utf-8" standalone="yes"?>精品亚洲一区二区,国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 ,亚洲专区一路线二http://www.tkk7.com/mayu/category/14921.html生活的理惛_是ؓ了理想的生活:)zh-cnWed, 13 Jun 2007 10:19:48 GMTWed, 13 Jun 2007 10:19:48 GMT60Php安全 http://www.tkk7.com/mayu/articles/123918.htmlmymyWed, 13 Jun 2007 09:58:00 GMThttp://www.tkk7.com/mayu/articles/123918.htmlhttp://www.tkk7.com/mayu/comments/123918.htmlhttp://www.tkk7.com/mayu/articles/123918.html#Feedback0http://www.tkk7.com/mayu/comments/commentRss/123918.htmlhttp://www.tkk7.com/mayu/services/trackbacks/123918.html对于脚本安全q个话题好像永远没完没了Q如果你l常到国外的各种各样的bugtraq上,你会发现有一半以上都和脚本相?诸如SQL injection,XSS,Path Disclosure,Remote commands executionq样的字眼比比皆是,我们看了之后的用途难道仅仅是抓肉鸡?对于我们惛_web安全的h来说Q最好就是拿来学习,可是万物抓根源,我们要的不是D是渔。在国内Q各U各LphpE序1.0?2.0版像雨后春笋一L冒出来,可是Q大家关注的都是一些著名的cms,论坛,blogE序Q很的人在寚w些不出名的程序做安全,对于来多的phpE序员和站长来说Q除了依靠服务器的堡垒设|外QphpE序本n的安全多你d懂点吧?
有h说你们做php安全无非是搞搞注入和跨站什么什么的Q大错特错,如果q样的话Q一个magic_quotes_gpc或者服务器里的一些安全设|就让我们全没活路了Q(。我今天要说的不是注入,不是跨站Q而是存在于phpE序中的一些安全细节问题。OK!切入正题?
注意一些函数的qo
有些函数在程序中是经怋用的,像include(),require(),fopen(),fwrite(),readfile(),unlink(),eval()以及它们的变体函数等{。这些函数都很实用,实用q不代表让你多省心,你还得ؓ它们多费点心?Q)
1.include(),require()和fopen(),include_once(),require_once()q些都可以远E调用文Ӟ对于它们的危宻Igoogle搜一下你׃很明了,对于所包含调用的变量没qo好,可以Q意包含文件从而去执行。D个例子,看print.php
...
if (empty ($bn) ) { //查是变量$bn是否为空
include ("$cfg_dir/site_${site}.php"); //?cfg_dirq个路径里的site_${site}.php包含q来
...
不管存不存在$cfg_dir目录Q?siteq个变量你可以很自然的去使用Q因ZҎ没检?site变量啊。可以把变量$site指定q程文g去调用,也可以是本地的一个文Ӟ你所指定的文仉写上php的语句,然后它就d含执行这个含有php语句的文件了.像q样
列出文g目录
甚至可以扩展到包含一些管理员文gQ提升权限,典型的像以前phpwind,bo-blog的漏z一栗除了依靠php.ini里的allow_url_fopen设ؓoff止q程使用文g和open_base_dir止使用目录以外的文件外Q你q得事先声明好只能包含哪些文Ӟq里׃多说废话了?
2.fopen(),file(),readfile(),openfile(),{也是该特别留意的地斏V函数本wƈ没什?它们的作用是L开文gQ可是如果对变量qo不彻底的话,׃泄露源代码。这L函数文本论坛里会有很多?
...
$articlearray=openfile("$dbpath/$fid/$tid.php"); //打开$dbpath/$fidq个路径?tid.php文g
$topic_detail=explode("|",$articlearray[0]); //用分割符|d帖子的内?
...
很眼熟吧Q这是ofstar以前版本的read.php,$fid?tid没有MqoQ?tid指定为某个文件提交,发生了原代码泄霌Ӏ就像这栗?
http://explame.com/ofstar/read.php?fid=123&tid=../index
$tid会被加上php的后~Q所以直接写index。这仅仅是个例子Q接着看吧?
3.fwrite()和它的变体函数这U漏z想想都惛_出,对于用户提交的字W没qo的话Q写入一Dphp后门又不是不可以?
4.unlink()函数Q前D|_phpwind里Q意删除文件就是利用这个函敎ͼ对于判断是否删除的变量没qoQ变量可以指定ؓL文gQ当然就可以删除L文g的变量?
5.eval(),preg_replace()函数Q它们的作用是执行php代码Q如果字W串没被l过Mqo的话Q会发生什么呢Q我常看见一些cms里面使用Q想惻I一句话的php木马不就是根据eval()原理制作的吗Q?
6.对于system()q些pȝ函数Q你会说在php.ini里禁止系l函敎ͼ对,q也是好办法Q可是象一些程序里需要,那是不是׃用了呢?像上次我看到的一套很漂亮的php相册一栗另外对于popen(),proc_open(),proc_close()函数你也得特别注意,管他们执行命o后ƈ没有直接的输出,但你惌到底寚w客们有没有用呢。再q里php提供提供了两个函敎ͼescapeshellarg(),escapeshellcmd(),q两个函数用来对抗系l函数的调用dQ也是qo?
对于危害Q来举个例子Q我们来看某论坛prod.php
07 $doubleApp = isset($argv[1]); //初始化变?doubleApp
...
14 if( $doubleApp ) //if语句
15 {
16 $appDir = $argv[1]; //初始?appDir
17 system("mkdir $prodDir/$appDir"); //使用pȝ函数system来创建目?prodDir/$appDir

本来是拿来创?prodDir/$appDir目录的,再接着看上去,E序仅仅是否存?argv[1]Q缺对$argv[1]的必要过滤,那么你就可以q样
/prod.php?argv[1]=|ls%20-la或?prod.php?argv[1]=|cat%20/etc/passwd
Q分割符 | 在这里是UNIX的管道参敎ͼ可以执行多条命o。)
到这里,常见的漏z类型应该知道点了吧?


对于Ҏ字符的重?
对于Ҏ字符Q有句话叫All puts is invalid.外国人文章里q句话很常见的。所有输入都是有害的。你永远不要对用h输入的东西省心,Z对付q些危害Q程序员都在忙着qo大把大把的字W,唯恐漏了什么。而有些程序员呢?好像从没注意q这些问题,从来都是敞开漏洞大门的。不说废话,q是先看看下面这些东西吧?
1.其实E序的漏z里最关键Q最让开发者放心不下的是带着$W号的美元符P变量Q对于找漏洞的h来说Q抓着变量两个字就是一切。就像目录遍历这个bugQ很多邮件程序都存在Q开发者考虑的很周全Q有的甚臛_上了|络盘q个东西Q好是好Q就?
http://mail.com/file.php?id=1&put=list&tid=1&file=./
要是我们把fileq个变量换成./../甚至更上层呢Q目录就q样被遍历了?
2.括?<>"跨站你不会不知道吧,一些搜索栏里,文章Q留aQ像前段旉phpwind附g那里的跨站等{。当Ӟ对于跨站问题Q你要过滤的q远不止括受不怕过滤时漏掉什么,而是怕你想不赯去过滤?
3.斜杆和反斜杆Q对?和\的过滤,记得力论坛的附件下载处的原代码泄露吗?
attachment.php?id=684&u=3096&extension=gif&attach=.\..\..\..\..\..\..\includes\config.php&filename=1.gif
对于qo.. / \的问题,像windowsL不仅要过?./q要qo..\,windowsL对\会解析ؓ/,q些l节跟SQL injection比v来,什么才叫深入呢Q?
4.对于反引?``),反引号在php中很强大Q它可以执行pȝ命oQ就像system()q些pȝ函数一P如果用户的恶意语句被它所执行的话׃危害服务器,我想除了服务器设|的很好以外Q对于它们,你还是老老实实的qo好吧?
5.对于换行W?NULL字符{等Q像"\t,\x0B,\n,\r,\0q些Q这些都是很有用的,像动|以前的上传漏洞是因ؓ上传中的NULL(\0)字符引v的,对于q些能随意截断程序流E的字符Q你说我们在的时候应该有多细心呢Q?
6.分号(;)和分割符(|)
分号截断E序程Q就像这?
shell_exec("del ./yourpath/$file"); //使用pȝ函数shell_exec删除文g$file
变量$file没指定,那么直接写zizzy.php;del ./yourpath ,q样你的yourpath目录也就被del了?
分割W?|)是UNIX里自带的道函数Q可以连接几条命令来执行。有时候加在过滤不严的pȝ函数中执行?

逻辑错误
验证不完全和一些逻辑错误在程序里也很Ҏ扑ֈQ特别是现在的程序员Q只深入的学习Q而对于逻辑错误{等q样的安全意识都没有培养的意识,其实q是是靠自己d养,而不是等着人来报告bugl你。对于逻辑错误的判断,我们只能_多练l吧Q经验才是最重要的?
1.对于登陆验证的问题。D个例子:我们看某论坛的admin.php片断
它这里username ?password好像不对劲吧Q存在管理员的username和passwordq接通过验证Q那意味着没有用户名,没密码也行吧。我们提?
GET /bbs/admin/index.php?page=general HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)
Host: 127.0.0.1
Connection: Keep-Alive
Cookie: username=’or isnull(1/0) AND level=3/*; password=;

q是我们伪造的一个数据包(你问我咋伪造地Q抓包再修改?,我们使用GET来提交数据,原理也就是在cookieq里构造欺骗语句?
接着Q整个SQL语句成q样
SELECT * FROM users WHERE username=’’or isnull(1/0) AND level=3/*’ AND password=’’
q里仅仅用一?#8217;or’=’or’的原理,把username和password的检给l开了,而level=3则是伪造的{。从而就饶过了检,q入了管理后台?
对于后台的验证不能这么马虎,两行代码q完事Q你q得从SESSION(会话),Cookieq些地方来增强验证?
2.上传漏洞
有次我看到在一个程序config.php里对上传文gcd限制是这L
$IllegalExtentions = array(’exe’,’asp’,’php’,’php3’,’bat’,’cgi’,’pl’,’com’,’vbs’,’reg’,’pcd’,’pif’,’scr’,’bas’,’inf’,’vb’,’vbe’,’wsc’,’wsf’,’wsh’); //对于上传文g的限Ӟ只允怸传exe,asp,php,php3,bat,cgi,pl,com,vbs,reg,pcd,pif,scr,bas,inf,vb,vbe,wsc,wsf,ws’q些文g?

规定不许用户上传什么什么文Ӟ其它都可以上传,q种逻辑好不好呢Q如果我上传.inc, ,.php4 .phtml, .html, .pwml q样的类型呢Qؓ什么你不把q种逻辑思维改ؓ规定用户除了q几U文件能传,其它的统l不允许上传。就像这P数组Ҏ逆向的思维?
$IllegalExtentions = array(’rar’,’gif’,’jpg’,’bmp’,’pdf’Q?/只能上传rar,gif,jpg,bmp,pdf几种格式
其实q个跟你们上传cer,asa是一个道理?
3.典型的逻辑错误
在一些cmsQ整站程序)中随便注册个用户Q你会发C改资料的地方不要求输入原来的密码Q只通过判断用户id或者emailQ你把网保存到本地Q把id或emailҎ理员的Qaction 改ؓ修改提交地址Q提交你成了管理员。解军_法不太难Q只要我们增加密码验证,增强那个mysql的update语句的过滤也ok了?
q些我们也没办法Q多数程序员对于安全Ҏ不去在意Q本来一个h可以d的事Qؓ什么偏偏要分出搞web安全的和web开发两Uh呢?
长度问题
别以为找漏洞的就是ؓ了拿个管理员密码或者webshell,也有些不安分的hQ也是DDOSer(拒绝服务d?,他们的花样很多,但对于程序员来说Q关键就在过滤。我所说的长度问题Q不仅仅是个字符的长度,也包括时间的长度Q你一定见q有人写个脚本,一下就注册成千上万的用P或者纯_的写垃圾数据把数据库拖歅R这个时候,限制数据提交旉和验证码pv作用了。不q要真的遇到狠毒的hQ一个变量的qo问题可以把|站搞瘫痪,q比用什么网l僵R些Y件来得更快?
不大不小的问?
1.l对路径的泄?
q个问题可真是不大不,很多E序都有Q这也算安全的一部分。至你玩注入loadfile()需要吧。当Ӟq时的php.ini中的display_errors也可以v作用了?
2.对后台的验证
不要说不信,我就曄C些程序这P你去试Q注册个用户Q提交管理员~辑用户的URL,比如admin_member.php?action=edit&id=55&level=4&username=zizzy&power=1q样相应的添加管理员的URL,你会发现几乎没验证,直接成功了。所以,对于后台的检,也很有必要,像刚出的Discuz的那个漏z?

qo问题不知不觉p了那么多Q写了好多处该过滤的提醒Q现在也该说说了如何q行qo?
1.在用戯入Q何数据,也就是提交变量进数据库时Q我们必M用addslashes()q行qoQ像我们的注入问题,一个addslashes()也就搞定了。其实在涉及到变量取值时Qintval()函数对字W串的过滤也是个不错的选择?
2.在php.ini中开启magic_quotes_gpc和magic_quotes_runtime。magic_quotes_gpc可以把get,post,cookie里的引号变ؓ斜杠。magic_quotes_runtime对于q出数据库的数据可以起到格式话的作用。其实,早在以前注入很疯狂时Q这个参数就很流行了?
3.在用系l函数时Q必M用escapeshellarg(),escapeshellcmd()参数去过滤,q样你也可以放心的使用pȝ函数?
4.对于跨站Qstrip_tags(),htmlspecialchars()两个参数都不错,对于用户提交的的带有html和php的标记都进行{换。比如尖括号"<"将转化?"<"q样无害的字W?
5.对于相关函数的过滤,像先前的include(),unlink,fopen(){等Q只要你把你所要执行操作的变量指定好或者对相关字符qo严密Q我惌样也无懈可M?

服务器安全设|?

谈服务器安全讄Q我觉得很不实际的,我们大多Ch都用虚拟LQ对于php.ini怎么设,那个只有|管自己看着办了。不q我q是说下Q?
1.讄“safe_mode”?#8220;on”
q对于广大空间商来说是一个伟大的选项Q它能极大地改进PHP的安全性?
2.止“open_basedir” Q这个选项可以止指定目录之外的文件操作,q能有效地消除本地文件或者是q程文g被include(){函数的调用d?
3.expose_php设ؓoff ,q样php不会在http文g头中泄露信息.
4.讄“allow_url_fopen”?#8220;off” q个选项可以止q程文g功能Q极力推?
5“log_errors”?#8220;on” 错误日至得带上吧
6..对于“display_errorsQregister_globals”两项要视情况而定了,display_errors太消极了Q错误全养I惌试脚本都不行。至于register_globals(全局变量)把它开hQ关了会很麻烦,现在大多数程序没它支持就别想用了?
q些是最必要的设|。关于php服务器更高的安全讄是门学问Q也׃在本文探讨范围内了?

q篇文章到这里就要结束了Q也怽会说Q你说的q些都是对开源的E序才有用,寚w些zend加密的程序不没办法可了吗Q其实,对安全来_固其Ҏ才是重要的吧Q你再怎么加密N逃得q黑盒测试?L一天会被发现的吧?
限于幅也就到这里了,我们对于phpE序安全也有了初步的探烦。ؓq大读者朋友考虑QD的例子也是很容易去理解圎ͼ当然前提是你得会点phpQ要不然又是看天书了(哇,不要看到q里才问我啥是php?)。整文章ƈ不是黑客教学Q而是为那些想在php安全上发展的初学者和phpE序员写的。如果以后你又听到谁谁又发现什么漏z了Q再怎么变也是那些基本的东西而已。我希望本文能ؓ你们开阔下思\Q更好的发展下去。嗜酒成痴剑亦狂Q重燃你的php安全之火Q带着对php的执着上\吧?/p>

PHP.ini的安全设|?br>谈服务器安全讄Q我觉得很不实际的,我们大多Ch都用虚拟LQ对于php.ini怎么设,那个只有|管自己看着办了。不q我q是说下Q?
1.讄“safe_mode”?#8220;on” 
q对于广大空间商来说是一个伟大的选项Q它能极大地改进PHP的安全性?br>2.止“open_basedir” Q这个选项可以止指定目录之外的文件操作,q能有效地消除本地文件或者是q程文g被include(){函数的调用d?nbsp;
3.expose_php设ؓoff ,q样php不会在http文g头中泄露信息.
4.讄“allow_url_fopen”?#8220;off” q个选项可以止q程文g功能Q极力推?
5“log_errors”?#8220;on” 错误日至得带上吧
6..对于“display_errorsQregister_globals”两项要视情况而定了,display_errors太消极了Q错误全养I惌试脚本都不行。至于register_globals(全局变量)把它开hQ关了会很麻烦,现在大多数程序没它支持就别想用了?br>q些是最必要的设|。关于php服务器更高的安全讄是门学问Q也׃在本文探讨范围内了?/h4>

my 2007-06-13 17:58 发表评论
]]>php导出Excel文本http://www.tkk7.com/mayu/articles/94279.htmlmymyTue, 16 Jan 2007 11:13:00 GMThttp://www.tkk7.com/mayu/articles/94279.htmlhttp://www.tkk7.com/mayu/comments/94279.htmlhttp://www.tkk7.com/mayu/articles/94279.html#Feedback0http://www.tkk7.com/mayu/comments/commentRss/94279.htmlhttp://www.tkk7.com/mayu/services/trackbacks/94279.html//header("Content-type:application/vnd.ms-excel");
//header("Content-Disposition:filename=test.xls");

$file_type = "vnd.ms-excel";
$file_ending = "xls";

header("Content-Type: application/$file_type");
header("Content-Disposition: attachment; filename=mydowns.$file_ending");
//header("Pragma: no-cache");
header("Expires: 0");

echo "test11\t";
echo "test12\t";
echo "33\t";
echo "test14\t\n";
echo "test21\t";
echo "test22\t";
echo "33\t";
echo "test24\t\n";
echo "test31\t";
echo "test32\t";
echo "33\t";
echo "test34\t\n";
?>
讉K该php后,会提CZ载,选择保存后,会保存一个名为mydowns.xls的文Ӟ可以用excel打开该文件?br />

my 2007-01-16 19:13 发表评论
]]>
php.ini中文解释http://www.tkk7.com/mayu/articles/81707.htmlmymyFri, 17 Nov 2006 02:51:00 GMThttp://www.tkk7.com/mayu/articles/81707.htmlhttp://www.tkk7.com/mayu/comments/81707.htmlhttp://www.tkk7.com/mayu/articles/81707.html#Feedback0http://www.tkk7.com/mayu/comments/commentRss/81707.htmlhttp://www.tkk7.com/mayu/services/trackbacks/81707.html[PHP]
; PHPq是一个不断发展的工具Q其功能q在不断地删?
; 而php.ini的设|更改可以反映出相当的变化,
; 在用新的PHP版本前,研究一下php.ini会有好处?
;;;;;;;;;;;;;;;;;;;
; 关于q个文g ;
;;;;;;;;;;;;;;;;;;;
; q个文g控制了PHP许多斚w的观?Z让PHPdq个文gQ它必须被命名ؓ  
; 'php.ini'.PHP 在q些地方依次查找该文Ӟ当前工作目录Q环境变量PHPRC
; 指明的\径;~译时指定的路径.
; 在windows下,~译时的路径是Windows安装目录.
; 在命令行模式下,php.ini的查找\径可以用 -c 参数替代.
; 该文件的语法非常?I白字符和用分号';'开始的行被单地忽略Q就象你可能
; 猜到的一P. 章节标题Q例?: [Foo]Q也被简单地忽略Q即使将来它们可?
; 有某U的意义.
;
; 指示被指定用如下语法:
; 指示标识W?= ?
; directive = value
; 指示标识W??*大小写敏感的* - foo=bar 不同?FOO = bar.
;
; 值可以是一个字W串Q一个数字,一?PHP 帔R (如: E_ALL or M_PI), INI 帔R中的
; 一?(On, Off, True, False, Yes, No and None) Q或是一个表辑ּ
; (? E_ALL & ~E_NOTICE), 或是用引hh的字W串("foo").
;
; INI 文g的表辑ּ被限制于位运符和括?
; | bitwise OR
; & bitwise AND
; ~ bitwise NOT
; ! boolean NOT
;
; 布尔标志可用 1, On, True or Yes q些值置于开的状?
; 它们可用 0, Off, False or No q些值置于关的状?
;
; 一个空字符串可以用在等号后不写M东西表示Q或者用 None 关键?
;
; foo = ; foo|ؓI字W串
; foo = none ; foo|ؓI字W串
; foo = "none" ; foo|ؓ字符?none'
;
; 如果你D|中使用帔RQ而这些常量属于动态调入的扩展库(不是 PHP 的扩展,是
; Zend 的扩展)Q你仅可以调入这些扩展的?之后*使用q些帔R.
;
; 所有在 php.ini-dist 文g里设定的g内徏的默认值相同(q是_如果 php.ini
; 没被使用或者你删掉了这些行Q默认g之相同).
;;;;;;;;;;;;;;;;;;;;
; 语言选项 ;
;;;;;;;;;;;;;;;;;;;;
engine = On
; ?PHP scripting language engineQPHP 脚本语言引擎Q在 Apache下有?
short_open_tag = On
; 允许 <? 标识Q这U简单表C). 仅有 <?php and <script> tags 被识别.
asp_tags = Off
; 允许ASP-style <% %> tags
precision = 14
; 点cd数显C时的有效位?
y2k_compliance = Off
; 是否打开 2000q适应 (可能在非Y2K适应的浏览器中导致问?
output_buffering = Off
; 输出~存允许你甚臛_输出正文内容之后发?headerQ标_包括cookiesQ行
; 其代h输出层减慢一点点速度.你可以用输出缓存在q行时打开输出~存Q?
; 或者在q里指C?On 而得所有文件的输出~存打开.
output_handler = ; 你可以重定向你的脚本的所有输出到一个函敎ͼ
; 那样做可能对处理或以日志记录它有?
; 例如若你这个output_handler 设ؓ"ob_gzhandler",
; 则输Z被透明Cؓ支持gzip或deflate~码的浏览器压羃.
; 设一个输出处理器自动地打开输出~冲.
implicit_flush = Off
; 强制flushQ刷斎ͼ让PHP 告诉输出层在每个输出块之后自动刷新自w数?
; q等效于在每?print() ?echo() 调用和每?HTML 块后调用flush()函数.
; 打开q项讄会导致严重的q行时冲H,仅在debugq程中打开.
allow_call_time_pass_reference = On
; 是否让强q函数调用时按引用传递参?q一Ҏ遭到抗议Q?
; q可能在来版本的PHP/Zend里不再支?
; 受到鼓励的指定哪些参数按引用传递的Ҏ是在函数声明?
; 你被鼓励试关闭q一选项q确认你的脚本仍能正常工作,以保证在来版本的语a?
; 它们仍能工作.Q你在每次使用该特Ҏ得到一个警告,而参数将按D不是按引用
; 传递).
; Safe Mode 安全模式
safe_mode = Off
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
; QSetting certain environment variables
; Qmay be a potential security breach.
; 该指C包含用逗号分隔的前~列表.安全模式中,用户仅可以替?
; 以在此列出的前缀开头的环境变量的?
; 默认圎ͼ用户仅?讑֮以PHP_开头的环境变量Q(? PHP_FOO=BARQ?
; 注意: 如果q一指示为空QPHP 让用户更改L环境变量!
safe_mode_protected_env_vars = LD_LIBRARY_PATH
; q条指示包含一个用逗号分隔的环境变量列表,那是最l用户将不能用putenv () 更改?
; q些变量甚至在safe_mode_allowed_env_vars 讄为允许的情况下得C?
disable_functions =
; q条指示让你可以Z安全的原因让特定函数失效.
; 它接受一个用逗号分隔的函数名列表.
; q条指示 *不受* 安全模式是否打开的媄?
; 语法高亮模式的色?
; 只要能被<font color=???>接受的东西就能工?
highlight.string = #DD0000
highlight.comment = #FF8000
highlight.keyword = #007700
highlight.bg = #FFFFFF
highlight.default = #0000BB
highlight.html = #000000
; Misc 杂项
expose_php = Off
; 军_ PHP 是否标示它装在服务器上的事实Q例如:加在?—PHP—给Web服务
; 发送的信号上).
; Q我个h的意见,在出C么power-by的header的时候,把这x.Q?
; 它不会有安全上的威胁, 但它使检查你的服务器上是否安装了PHP成ؓ了可?
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
max_execution_time = 30 ; 每个脚本的最大执行时? 按秒?
memory_limit = 8388608 ; 一个脚本最大可使用的内存总量 (q里?MB)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
; 出错控制和登?;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 错误报告是按位的.或者将数字加v来得到想要的错误报告{.
; E_ALL - 所有的错误和警?
; E_ERROR - 致命性运行时?
; E_WARNING - q行时警告(非致命性错Q? 
; E_PARSE - ~译时解析错?
; E_NOTICE - q行时提?q些l常是是你的代码的bug引v的,
;也可能是有意的行为造成?(如:Z未初始化的变量自动初始化Z?
;I字W串的事实而用一个未初始化的变量)
; E_CORE_ERROR - 发生于PHP启动时初始化q程中的致命错误
; E_CORE_WARNING - 发生于PHP启动时初始化q程中的警告(非致命性错)
; E_COMPILE_ERROR - ~译时致命性错
; E_COMPILE_WARNING - ~译时警?非致命性错)
; E_USER_ERROR - 用户产生的出错消?
; E_USER_WARNING - 用户产生的警告消?
; E_USER_NOTICE - 用户产生的提醒消?
; 例子:
; error_reporting = E_ALL & ~E_NOTICE ; 昄所有的错误Q除了提?
; error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR ; 仅显C错?
error_reporting = E_ALL & ~E_NOTICE ; 昄所有的错误Q除了提?
display_errors = On ; 昄出错误信?作ؓ输出的一部分)
; 在最l发布的web站点上,强烈你关掉这个特性,q?
; 错误日志代替Q参看下面).
; 在最l发布的web站点l箋?display_errors 有效可能
; 暴露一些有兛_全的信息Q例如你的web服务上的文g路径?
; 你的数据库规划或别的信息.
display_startup_errors = Off ; 甚至当display_erroes打开了,发生于PHP的启动的步骤?
; 的错误也不会被显C?
; 强烈保持?display_startup_errors 关闭Q?
; 除了在改错过E中.
log_errors = Off ; 在日志文仉记录错误Q服务器指定的日志,stderr标准错误输出Q或error_log(下面的)Q?
; 正如上面说明的那P强烈你在最l发布的web站点以日志记录错?
; 取代直接错误输出.
track_errors = Off ; 保存最q一?错误/警告 消息于变?$php_errormsg (boolean)
;error_prepend_string = "<font color=ff0000>" ; 于错误信息前输出的字W串  
;error_append_string = "</font>" ; 于错误信息后输出的字W串
;error_log = filename ; 记录错误日志于指定文?
;error_log = syslog ; 记录错误日志于系l日?syslog (NT 下的事g日志, Windows 95下无?
warn_plus_overloading = Off ; 当将?’用于字W串时警?
;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;
variables_order = "EGPCS" ; q条指示描述了PHP 记录
; GET, POST, Cookie, Environment and Built-in q些变量的顺?
; Q以 G, P, C, E & S 代表Q通常?EGPCS ?GPC 的方式引用).
; 按从左到双录,新值取代旧?
register_globals = On ; 是否这?EGPCS 变量注册为全局变量.
; 若你不想让用h据不在全局范围内؜q话,你可能想关闭?
; q和 track_vars qv来用更有意义 ?q样你可以通过
; $HTTP_*_VARS[] 数组讉K所有的GPC变量.
register_argc_argv = On ; q条指示告诉 PHP 是否声明 argv和argc 变量
; Q注Q这里argv为数l?argc为变量数Q?
; Q其中包含用GETҎ传来的数据).
; 若你不想用这些变量,你应当关掉它以提高性能.
track_vars = On ; ?HTTP_*_VARS[]数组有效Q这?在用时?
; ENV, POST, GET, COOKIE or SERVER替换
post_max_size = 8M ; PHP接受的POST数据最大大?
gpc_order = "GPC" ; q条指示被h反对.?variables_order 代替.
; Magic quotes
magic_quotes_gpc = On ; 在输入的GET/POST/Cookie数据里用魔术引?
; Q原文就q样Q呵呵,所谓magic quotes 应该是指用{义符加在引用性的控制字符上,?\'....Q?
magic_quotes_runtime= Off ; 对运行时产生的数据用魔术引用,
; 例如Q用SQL查询得到的数据,用exec()函数得到的数据,{等
magic_quotes_sybase = Off ; 采用 Sybase形式的魔术引用(?'' 脱出 ' 而不?\'Q?
; 自动?PHP 文档之前和之后添加文?
auto_prepend_file =
auto_append_file =
; ?.04b4一PPHP 默认地L?“Content-type:?头标输出一个字W的~码方式.
; 让输出字W集失效Q只要设|ؓI?
; PHP 的内建默认值是 text/html
default_mimetype = "text/html"
;default_charset = "iso-8859-1"
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
include_path = ; include 路径讄QUNIX: "/path1:/path2" Windows: "\path1;\path2"
doc_root = ; php 面的根路径Q仅在非I时有效
user_dir = ; 告知 php 在?/~username 打开脚本时到哪个目录下去找,仅在非空时有?
;upload_tmp_dir = ; 存放用HTTP协议上蝲的文件的临时目录Q在没指定时使用pȝ默认的)
upload_max_filesize = 2097152 ; 文g上蝲默认地限制ؓ2 Meg
extension_dir = c:\php\ ; 存放可加载的扩充库(模块Q的目录
enable_dl = On ; 是否使dl()有效.
; 在多U程的服务器?dl()函数*不能*很好地工作,
; 例如IIS or ZeusQƈ在其上默认ؓ止
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
file_uploads = On ; 是否允许HTTP方式文g上蝲
;upload_tmp_dir = ; 用于HTTP上蝲的文件的临时目录Q未指定则用系l默认)
upload_max_filesize = 2M ; 上蝲文g的最大许可大?
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;
allow_url_fopen = On ; 是否允许把URLs当作http:.. 或把文g当作ftp:...
;;;;;;;;;;;;;;;;;;;;;;
; 动态扩?;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
; 若你希望一个扩展库自动加蝲Q用下面的语法:
; extension=modulename.extension
; 例如Q在windows上,
; extension=msql.dll
; or 在UNIX?
; extension=msql.so
; 注意Q这只应当是模块的名字,不需要目录信息放在里?
; 用上面的 extension_dir 指示指定扩展库的位置.
;Windows 扩展
;extension=php_nsmail.dll
extension=php_calendar.dll
;extension=php_dbase.dll
;extension=php_filepro.dll
extension=php_gd.dll
;extension=php_dbm.dll
;extension=php_mssql.dll
;extension=php_zlib.dll
;extension=php_filepro.dll
;extension=php_imap4r2.dll
;extension=php_ldap.dll
;extension=php_crypt.dll
;extension=php_msql2.dll
;extension=php_odbc.dll
; 注意Q?MySQL的支持现在是内徏的,因此Q不需要用它的dll
;;;;;;;;;;;;;;;;;;;
; 模块讑֮ ;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
[Syslog]
define_syslog_variables = Off ; 是否定义各种的系l日志变?
; 如:$LOG_PID, $LOG_CRON, {等.
; x它是个提高效率的好主?
; q行Ӟ你可以调用函数define_syslog_variables()Q来定义q些变量
[mail function]
SMTP = localhost ;仅用于win32pȝ
sendmail_from = me@localhost.com ;仅用于win32pȝ
;sendmail_path = ;仅用于unix, 也可支持参数Q默认的?sendmail -t -i'Q?
[Debugger]
debugger.host = localhost
debugger.port = 7869
debugger.enabled = False
[Logging]
; q些配置指示用于CZ的日志记录机?
; ?examples/README.logging 以得到更多的解释
;logging.method = db
;logging.directory = /path/to/log/directory
[Java]
;java.class.path = .\php_java.jar
;java.home = c:\jdk
;java.library = c:\jdk\jre\bin\hotspot\jvm.dll
;java.library.path = .\
[SQL]
sql.safe_mode = Off
[ODBC]
;uodbc.default_db = Not yet implemented
;uodbc.default_user = Not yet implemented
;uodbc.default_pw = Not yet implemented
uodbc.allow_persistent = On ; 允许或禁?持久q接
uodbc.check_persistent = On ; 在重用前查连接是否还可用
uodbc.max_persistent = -1 ; 持久q接的最大数.-1 代表无限?
uodbc.max_links = -1 ; q接的最大数目(持久和非持久Q?-1 代表无限?
uodbc.defaultlrl = 4096 ; 控制 LONG cd的字D?q回变量的字节数Q? 代表通过Q?Q? means passthru
uodbc.defaultbinmode = 1 ; 控制 二进制数?0 代表?????Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char
; 见有?odbc_binmode ?odbc_longreadlen 的文档以得到 uodbc.defaultlrl ?uodbc.defaultbinmode 的解?
[MySQL]
mysql.allow_persistent = On ; 允许或禁?持久q接
mysql.max_persistent = -1 ; 持久q接的最大数.-1 代表无限?
mysql.max_links = -1 ; q接的最大数目(持久和非持久Q?-1 代表无限?
mysql.default_port = ; mysql_connect() 使用的默认端口,如不讄Qmysql_connect()
; 用变?$MYSQL_TCP_PORTQ或?etc/services 下的mysql-tcp 条目(unix)Q?
; 或在~译是定义的 MYSQL_PORT(按这L序)
; Win32环境Q将仅检查MYSQL_PORT.
mysql.default_socket = ; 用于本地 MySql q接的默认的套接字名.为空Q?MYSQL 内徏?
mysql.default_host = ; mysql_connect() 默认使用的主机(安全模式下无效)
mysql.default_user = ; mysql_connect() 默认使用的用户名Q安全模式下无效Q?
mysql.default_password = ; mysql_connect() 默认使用的密码(安全模式下无效)
; 注意Q在q个文g下保存密码通常是一??L
; *M*可以使用PHP讉K的用户可以运?
; 'echo cfg_get_var("mysql.default_password")'来显C那个密?
; 而且当然圎ͼM有读该文件权力的用户也能看到那个密码.
[mSQL]
msql.allow_persistent = On ; 允许或禁?持久q接
msql.max_persistent = -1 ; 持久q接的最大数.-1 代表无限?
msql.max_links = -1 ; q接的最大数目(持久和非持久Q?-1 代表无限?
[PostgresSQL]
pgsql.allow_persistent = On ; 允许或禁?持久q接
pgsql.max_persistent = -1 ; 持久q接的最大数.-1 代表无限?
pgsql.max_links = -1 ; q接的最大数目(持久和非持久Q?-1 代表无限?
[Sybase]
sybase.allow_persistent = On ; 允许或禁?持久q接
sybase.max_persistent = -1 ; 持久q接的最大数.-1 代表无限? 
sybase.max_links = -1 ; q接的最大数目(持久和非持久Q?-1 代表无限?
;sybase.interface_file = "/usr/sybase/interfaces"
sybase.min_error_severity = 10 ; 昄的错误的最低严重?
sybase.min_message_severity = 10 ; 昄的消息的最低重要?
sybase.compatability_mode = Off ; 与旧版的PHP 3.0 兼容的模?若打开Q这导?PHP 自动?
; 把根据结果的 Sybase cd赋予它们Q?
; 而不是把它们全当成字W串.
; q个兼容模式不会永远留着Q?
; 因此Q将你的代码q行需要的修改Q?
; q将该项关闭.
[Sybase-CT]
sybct.allow_persistent = On ; 允许或禁?持久q接
sybct.max_persistent = -1 ; 持久q接的最大数.-1 代表无限?
sybct.max_links = -1 ; q接的最大数目(持久和非持久Q?-1 代表无限?
sybct.min_server_severity = 10 ; 昄的错误的最低严重?
sybct.min_client_severity = 10 ; 昄的消息的最低重要?
[bcmath]
bcmath.scale = 0 ; 用于所有bcmath函数?0十进制数数字的个数number of decimal digits for all bcmath functions
[browscap]
;browscap = extra/browscap.ini
browscap = C:\WIN\SYSTEM\inetsrv\browscap.ini
[Informix]
ifx.default_host = ; ifx_connect() 默认使用的主机(安全模式下无效)
ifx.default_user = ; ifx_connect() 默认使用的用户名Q安全模式下无效Q?
ifx.default_password = ; ifx_connect() 默认使用的密码(安全模式下无效)
ifx.allow_persistent = On ; 允许或禁?持久q接
ifx.max_persistent = -1 ; 持久q接的最大数.-1 代表无限?
ifx.max_links = -1 ; q接的最大数目(持久和非持久Q?-1 代表无限?
ifx.textasvarchar = 0 ; 若打开Qselect 状态符q回一?‘text blob’字D늚内容Q而不是它的id
ifx.byteasvarchar = 0 ; 若打开Qselect 状态符q回一?‘byte blob’字D늚内容Q而不是它的id
ifx.charasvarchar = 0 ; q踪从固定长度的字符列里剥离的空?
; 可能?Informix SE 用户有效.
ifx.blobinfile = 0 ; 若打开Qtext和byte blobs 的内容被导出C个文?
; 而不是保存到内存.
ifx.nullformat = 0 ; NULLQ空Q被作ؓI字D返回,除非Q这里被设ؓ1.
; q种情况下(?Q,NULL作ؓ字串NULLq回.
[Session]
session.save_handler = files ; 用于保存/取回数据的控制方?
session.save_path = C:\win\temp ; ?save_handler 设ؓ文g时传l控制器的参敎ͼ
; q是数据文g保存的路径.
session.use_cookies = 1 ; 是否使用cookies
session.name = PHPSESSID
; 用在cookie里的session的名?
session.auto_start = 0 ; 在请求启动时初始化session
session.cookie_lifetime = 0 ; 为按U记的cookie的保存时_
; 或ؓ0Ӟ直到览器被重启
session.cookie_path = / ; cookie的有效\?
session.cookie_domain = ; cookie的有效域
session.serialize_handler = php ; 用于q接数据的控制器
; php?PHP 的标准控制器.
session.gc_probability = 1 ; 按百分比?garbage collectionQ碎片整理)'q程
; 在每?session 初始化的时候开始的可能?
session.gc_maxlifetime = 1440 ; 在这里数字所指的U数后,保存的数据将被视?
; '片(garbage)'q由gc q程清理?
session.referer_check = ; ?HTTP引用以额外包含于URLs中的ids无效
session.entropy_length = 0 ; 从文件中d多少字节
session.entropy_file = ; 指定q里建立 session id
; session.entropy_length = 16
; session.entropy_file = /dev/urandom
session.cache_limiter = nocache ; 设ؓ{nocache,private,public},以决?HTTP ?
; ~存问题
session.cache_expire = 180 ; 文?n 分钟后过?
session.use_trans_sid = 1 ; 使用q渡性的 sid 支持Q若~译时许可了
; --enable-trans-sid
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[MSSQL]
;extension=php_mssql.dll
mssql.allow_persistent = On ; 允许或禁?持久q接
mssql.max_persistent = -1 ; 持久q接的最大数.-1 代表无限?
mssql.max_links = -1 ; q接的最大数目(持久和非持久Q?-1 代表无限?
mssql.min_error_severity = 10 ; 昄的错误的最低严重?
mssql.min_message_severity = 10 ; 昄的消息的最低重要? 
mssql.compatability_mode = Off ; 与旧版的PHP 3.0 兼容的模?
[Assertion]
; Q?Q?Q?
;assert.active = On ; Qassert(expr); active by default
;assert.warning = On ; issue a PHP warning for each failed assertion.
;assert.bail = Off ; don't bail out by default.
;assert.callback = 0 ; user-function to be called if an assertion fails.
;assert.quiet_eval = 0 ; eval the expression with current error_reporting(). set to true if you want error_reporting(0) around the eval().
[Ingres II]
ii.allow_persistent = On ; 允许或禁?持久q接
ii.max_persistent = -1 ; 持久q接的最大数.-1 代表无限?
ii.max_links = -1 ; q接的最大数目(持久和非持久Q?-1 代表无限?
ii.default_database = ; 默认 database (format : [node_id::]dbname[/srv_class]
ii.default_user = ; 默认 user
ii.default_password = ; 默认 password
[Verisign Payflow Pro]
pfpro.defaulthost = "test.signio.com" ; 默认?Signio 服务?
pfpro.defaultport = 443 ; q接的默认端?
pfpro.defaulttimeout = 30 ; 按秒计的默认时旉
; pfpro.proxyaddress = ; 默认的代理的 IP 地址Q如果需要)
; pfpro.proxyport = ; 默认的代理的端口
; pfpro.proxylogon = ; 默认的代理的dQlogon 用户名)
; pfpro.proxypassword = ; 默认的代理的密码
[Sockets]
sockets.use_system_read = On ; 使用pȝ的read() 函数替代 php_read()装
; Local Variables: Q局部变量)
; tab-width: 4
; End:



my 2006-11-17 10:51 发表评论
]]>
PHP文g上传http://www.tkk7.com/mayu/articles/75538.htmlmymyTue, 17 Oct 2006 01:56:00 GMThttp://www.tkk7.com/mayu/articles/75538.htmlhttp://www.tkk7.com/mayu/comments/75538.htmlhttp://www.tkk7.com/mayu/articles/75538.html#Feedback0http://www.tkk7.com/mayu/comments/commentRss/75538.htmlhttp://www.tkk7.com/mayu/services/trackbacks/75538.html
1. ?span lang="EN-US">form表单中要?span lang="EN-US">method属性设?span class="SpellE">post,enctype属性设?span lang="EN-US">multipart/form-dataQ?span lang="EN-US">

2. ?span lang="EN-US">form表单中可以加一?span lang="EN-US">hiddencd?span lang="EN-US">input?span lang="EN-US">,其中名字?span lang="EN-US"> MAX_FILE_SIZE的隐藏值域Q通过讄?span lang="EN-US">VALUE可以限制上蝲文g的大。当?span lang="EN-US">,q个g可能过PHP的配|文?span lang="EN-US">(PHP3?span lang="EN-US">php3.ini,PHP4?span lang="EN-US">php.ini)中的upload_max_filesize,注意q个input框一?/span>要放在所?span lang="EN-US">filecd?span lang="EN-US">input框前?span lang="EN-US">,否则也是无效的哦Q?

3. ?span lang="EN-US">PHPE序q行完后,上传文g被放在了临时目录下。如果上传文件没有被改名或移动,那么在请求的最后该文g自动被从时文件夹中删除,所以我们最好立卛_新的上传文g上传Ud一个永久目录下或更改其文g名?


首先我们需要一个上载文件的表单|页Q?span lang="EN-US">upload.htmQ:
<HTML>
<HEAD>
<TITLE>Upload Your File</TITLE>
</HEAD>
<BODY>
<FORM ACTION="receiver.php3"
ENCTYPE="multipart/form-data" METHOD=POST>
<INPUT TYPE="HIDDEN"
NAME="MAX_FILE_SIZE" VALUE="2000000">
<INPUT TYPE="FILE"
NAME="uploadfile" SIZE="24" MAXLENGTH="80">
<BR><BR>
<INPUT TYPE="SUBMIT" VALUE="Upload File!"
NAME="sendit">
<INPUT TYPE="SUBMIT" VALUE="Cancel"
NAME="cancelit"><BR>
</FORM>
</BODY>
</HTML>

处理上蝲文g?span lang="EN-US">PHP文gQ?span lang="EN-US">receiver.php3Q?span lang="EN-US">
<?
function do_upload ()
{
global $uploadfile, $uploadfile_size;
global $local_file, $error_msg;
if ( $uploadfile == "none" )
{
$error_msg = "对不P你没有选定M文g上传Q?span lang="EN-US">";
return;
}
if ( $uploadfile_size > 2000000 )
{
$error_msg = "对不P你要上传的文件太大了Q?span lang="EN-US">";
return;
}
$the_time = time ();

// 在这里指定你用来存放上传文g的目录,你需要对以下目录有写权限
//
同时Q我们也可以l上传文件指定另外的目录Q如Q?span lang="EN-US">$upload_dir = "/local/uploads";

$upload_dir = "d:/upload";
$local_file = "$upload_dir/$the_time";
if ( file_exists ( '$local_file' ) )
{
$seq = 1;
while ( file_exists ( "$upload_dir/$the_time$seq" ) ) { $seq++; }
$local_file = "$upload_dir/$the_time$seq";
};
rename ( $uploadfile, $local_file );
display_page ();
}
function display_page ()
{
//
q里是你的页面内?span lang="EN-US">
}
?>
<HTML>
<HEAD>
<TITLE>php3 Receiving Script</TITLE>
</HEAD>
<BODY>
<?
if ( $error_msg ) { echo "<B>$error_msg</B><BR><BR>"; }
if ( $sendit )
{
do_upload ();
echo "
文g上蝲成功Q?span lang="EN-US">";
}
elseif ( $cancelit )
{
header ( "Location: $some_other_script" );
echo "文g上蝲p|!";
exit;
}
else
{
some_other_func ();
}
?>
</BODY>
</HTML>



my 2006-10-17 09:56 发表评论
]]>
php Session 函数?/title><link>http://www.tkk7.com/mayu/articles/75014.html</link><dc:creator>my</dc:creator><author>my</author><pubDate>Fri, 13 Oct 2006 07:48:00 GMT</pubDate><guid>http://www.tkk7.com/mayu/articles/75014.html</guid><wfw:comment>http://www.tkk7.com/mayu/comments/75014.html</wfw:comment><comments>http://www.tkk7.com/mayu/articles/75014.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/mayu/comments/commentRss/75014.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mayu/services/trackbacks/75014.html</trackback:ping><description><![CDATA[ <table width="100%" border="0"> <tbody> <tr> <td valign="top" align="right"> <a alt="function.php?session_start">session_start</a>:</td> <td valign="top">初始 session?/td> </tr> <tr> <td valign="top" align="right"> <a alt="function.php?session_destroy">session_destroy</a>:</td> <td valign="top">l束 session?/td> </tr> <tr> <td valign="top" align="right"> <a alt="function.php?session_name">session_name</a>:</td> <td valign="top">存取目前 session 名称?/td> </tr> <tr> <td valign="top" align="right"> <a alt="function.php?session_module_name">session_module_name</a>:</td> <td valign="top">存取目前 session 模块?/td> </tr> <tr> <td valign="top" align="right"> <a alt="function.php?session_save_path">session_save_path</a>:</td> <td valign="top">存取目前 session 路径?/td> </tr> <tr> <td valign="top" align="right"> <a alt="function.php?session_id">session_id</a>:</td> <td valign="top">存取目前 session 代号?/td> </tr> <tr> <td valign="top" align="right"> <a alt="function.php?session_register">session_register</a>:</td> <td valign="top">注册新的变量?/td> </tr> <tr> <td valign="top" align="right"> <a alt="function.php?session_unregister">session_unregister</a>:</td> <td valign="top">删除已注册变量?/td> </tr> <tr> <td valign="top" align="right"> <a alt="function.php?session_is_registered">session_is_registered</a>:</td> <td valign="top">查变量是否注册?/td> </tr> <tr> <td valign="top" align="right"> <a alt="function.php?session_decode">session_decode</a>:</td> <td valign="top">Session 资料解码?/td> </tr> <tr> <td valign="top" align="right"> <a alt="function.php?session_encode">session_encode</a>:</td> <td valign="top">Session 资料~码?/td> </tr> </tbody> </table> <img src ="http://www.tkk7.com/mayu/aggbug/75014.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mayu/" target="_blank">my</a> 2006-10-13 15:48 <a href="http://www.tkk7.com/mayu/articles/75014.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP中用crypt()实现用户w䆾验证http://www.tkk7.com/mayu/articles/72517.htmlmymyThu, 28 Sep 2006 03:46:00 GMThttp://www.tkk7.com/mayu/articles/72517.htmlhttp://www.tkk7.com/mayu/comments/72517.htmlhttp://www.tkk7.com/mayu/articles/72517.html#Feedback0http://www.tkk7.com/mayu/comments/commentRss/72517.htmlhttp://www.tkk7.com/mayu/services/trackbacks/72517.html在开发PHP应用中如果不惌己开发新的加密算法,q可以利用PHP提供的crypt()函数来完成单向加密功能?/p>

  了解crypt()

  只要有一点用非Windowsq_l验的读者都可能对crypt()相当熟悉Q这一函数完成被称作单向加密的功能Q它可以加密一些明码,但不能反q来密码重新{换ؓ原来的明码。crypt()函数定义如下?/p>

  string crypt (string input_string [, string salt])

  其中Qinput_string参数是需要加密的明文字符ԌW二个可选的salt是一个位字串Q能够媄响加密的暗码Q进一步排除被破解的可能性。缺省情况下QPHP使用一?个字W的DESq扰Ԍ如果pȝ使用的是MD5(参考下一节内?QPHP则会使用一?2个字W的q扰丌Ӏ可以通过执行下面的命令发现系l将要用的q扰串的长度?/p>

  print "My system salt size is: ". CRYPT_SALT_LENGTH;

  crypt()支持4U加密算法,?9.1昄了其支持的算法和相应的salt参数的长度?/p>

  表crypt()支持四种加密法法 Salt长度
CRYPT_STD_DES 2-character (Default)
CRYPT_EXT_DES 9-character
CRYPT_MD5 12-character beginning with $1$
CRYPT_BLOWFISH 16-character beginning with $2$
  从表面上看,crypt()的函C乎没有什么用处,但该函数的确被广泛用来保证系l密码的完整性。因为,单向加密的口令即使落入第三方的手里,׃不能被还原ؓ明文Q也没有什么大用处?/p>

  用crypt()实现用户w䆾验证

  上一部分单介l了crypt()函数的功能,下面利用其来实现用户的n份验证,其所要实现的目标?9.2.3节所介绍的一致?/p>

1 Q?--check_user_crypt.php:使用crypt() 函数验证用户----------------Q?br />2 Q?php
3 $user_name=$_POST["user_name"];
4 require_once("sys_conf.inc"); //pȝ配置文gQ包含数据库配置信息
5
6 //q接数据?br />7 $link_id=mysql_connect($DBHOST,$DBUSER,$DBPWD);
8 mysql_select_db($DBNAME); //选择数据库my_chat
9
10 //查询是否存在d用户信息
11 $str="select name,password from user where name ='$user_name'";
12 $result=mysql_query($str,$link_id); //执行查询
13 @$rows=mysql_num_rows($result); //取得查询l果的记录笔?br />14 $user_name=$_SESSION["user_name"];
15 $password=$_POST["password"];
16 $salt = substr($password, 0, 2);
17 $password_en=crypt($password,$salt); //使用crypt()对用户密码进行加?br />18
19 //对于老用?br />20 if($rows!=0)
21 {
22 list($name,$pwd)=mysql_fetch_row($result);
23
24 //如果密码输入正确
25 if($pwd==$password_en)
26 {
27 $str="update user set is_online =1 where name ='$user_name' and password='$password_en'";
28 $result=mysql_query($str, $link_id);//执行查询
29 require("main.php"); //转到聊天面
30 }
31 //密码输入错误
32 else
33 {
34 require("relogin.php");
35 }
36
37 }
38 //对于新用P其信息写入数据?br />39 else
40 {
41 $str="insert into user (name,password,is_online) values('$user_ name','$password_en',1)";
42 $result=mysql_query($str, $link_id); //执行查询
43 require("main.php"); //转到聊天面
44 }
45 //关闭数据?br />46 mysql_close($link_id);
47 ?Q?/p>

  CZ与上一节所介绍的用XOR加密法来保护用户信息非常类|其核心部分在于第16?7行用crypt()函数获取加密后的密码Q而通过在第25行比较数据库中的密码和加密后的密码是否相{来查用h否合法?/p>

  下面Q通过一个实例来看一下加密后的密码会变成什么样子?/p>

  例如Q用户名为rockQ密码ؓ123456Q则加密后的密码?

  12tir.zIbWQ3c

  上面实C一个简单的用户w䆾验证pȝ。在使用crypt()保护重要的机密信息时Q需要注意的是,在缺省状态下使用crypt()q不是最安全的,只能用在对安全性要求较低的pȝ中?br />



my 2006-09-28 11:46 发表评论
]]>
php获取数字随机?/title><link>http://www.tkk7.com/mayu/articles/72495.html</link><dc:creator>my</dc:creator><author>my</author><pubDate>Thu, 28 Sep 2006 02:39:00 GMT</pubDate><guid>http://www.tkk7.com/mayu/articles/72495.html</guid><wfw:comment>http://www.tkk7.com/mayu/comments/72495.html</wfw:comment><comments>http://www.tkk7.com/mayu/articles/72495.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/mayu/comments/commentRss/72495.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mayu/services/trackbacks/72495.html</trackback:ping><description><![CDATA[ <div style="MARGIN-LEFT: 5pt"> <span style="COLOR: #999"> <font size="+0"> </font> </span> <span style="COLOR: #000000"> <font size="+0"> <span style="COLOR: #ff9900">#-------------------------------------------</span> </font> </span> </div> <div style="MARGIN-LEFT: 5pt"> <span style="COLOR: #000000"> <font size="+0"> <span style="COLOR: #ff9900"> <span style="COLOR: #999"> </span># 获得最和最大g间随机数Q位C?br /><span style="COLOR: #999"> </span>#-------------------------------------------<br /><span style="COLOR: #999"> </span></span> <span style="COLOR: #006600">Function </span> <span style="COLOR: #0000cc">getRandNumber </span> <span style="COLOR: #006600">(</span> <span style="COLOR: #0000cc">$fMin</span> <span style="COLOR: #006600">, </span> <span style="COLOR: #0000cc">$fMax</span> </font> <font size="+0"> <span style="COLOR: #006600">) { <br /><span style="COLOR: #999">  </span></span> <span style="COLOR: #0000cc">srand</span> <span style="COLOR: #006600">((double)</span> <span style="COLOR: #0000cc">microtime</span> <span style="COLOR: #006600">()*</span> <span style="COLOR: #0000cc">1000000</span> </font> <font size="+0"> <span style="COLOR: #006600">);<br /><span style="COLOR: #999">  </span></span> <span style="COLOR: #0000cc">$fLen </span> <span style="COLOR: #006600">= </span> <span style="COLOR: #cc0000">"%0"</span> <span style="COLOR: #006600">.</span> <span style="COLOR: #0000cc">strlen</span> <span style="COLOR: #006600">(</span> <span style="COLOR: #0000cc">$fMax</span> <span style="COLOR: #006600">).</span> <span style="COLOR: #cc0000">"d"</span> </font> <font size="+0"> <span style="COLOR: #006600">;<br /><span style="COLOR: #999">  </span>Return </span> <span style="COLOR: #0000cc">sprintf</span> <span style="COLOR: #006600">(</span> <span style="COLOR: #0000cc">$fLen</span> <span style="COLOR: #006600">, </span> <span style="COLOR: #0000cc">rand</span> <span style="COLOR: #006600">(</span> <span style="COLOR: #0000cc">$fMin</span> <span style="COLOR: #006600">,</span> <span style="COLOR: #0000cc">$fMax</span> </font> <font size="+0"> <span style="COLOR: #006600">));<br /><span style="COLOR: #999"> </span>}</span> </font> </span> <br /> </div> <img src ="http://www.tkk7.com/mayu/aggbug/72495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mayu/" target="_blank">my</a> 2006-09-28 10:39 <a href="http://www.tkk7.com/mayu/articles/72495.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP5的异常处?/title><link>http://www.tkk7.com/mayu/articles/70712.html</link><dc:creator>my</dc:creator><author>my</author><pubDate>Wed, 20 Sep 2006 02:20:00 GMT</pubDate><guid>http://www.tkk7.com/mayu/articles/70712.html</guid><wfw:comment>http://www.tkk7.com/mayu/comments/70712.html</wfw:comment><comments>http://www.tkk7.com/mayu/articles/70712.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/mayu/comments/commentRss/70712.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mayu/services/trackbacks/70712.html</trackback:ping><description><![CDATA[ <p> <b>例子 20-1. 抛出一个异?/b> </p> <table cellpadding="5" bgcolor="#e0e0e0" border="0"> <tbody> <tr> <td> <div id="gwqu84w" class="phpcode"> <code> <span id="k8igssa" class="html"> <span id="8auws44" class="default"><?php<br /></span> <span id="og86ig4" class="keyword">try {<br />   </span> <span id="8444e4e" class="default">$error </span> <span id="qiuws4o" class="keyword">= </span> <span id="k4ik4q4" class="string">'Always throw this error'</span> <span id="uamg4wm" class="keyword">;<br />   throw new </span> <span id="m8ug44m" class="default">Exception</span> <span id="mm8mwgg" class="keyword">(</span> <span id="m4qu44y" class="default">$error</span> <span id="k8m4gg4" class="keyword">);<br /><br />   </span> <span id="woa8g4q" class="comment">// 从这里开始,tra 代码块内的代码将不会被执?br />   </span> <span id="qy8w4w4" class="keyword">echo </span> <span id="u4koe8u" class="string">'Never executed'</span> <span id="i4wyoc8" class="keyword">;<br /><br />} catch (</span> <span id="8gam8uc" class="default">Exception $e</span> <span id="k8qcsck" class="keyword">) {<br />   echo </span> <span id="mmso8q4" class="string">'Caught exception: '</span> <span id="qiwqqu4" class="keyword">,  </span> <span id="gokwums" class="default">$e</span> <span id="omkau8o" class="keyword">-></span> <span id="ca4yum4" class="default">getMessage</span> <span id="iqsi8s4" class="keyword">(), </span> <span id="ekeicsa" class="string">"\n"</span> <span id="cu4c4q4" class="keyword">;<br />}<br /><br /></span> <span id="4u4ycia" class="comment">// l箋执行<br /></span> <span id="444imu4" class="keyword">echo </span> <span id="8ek8e4q" class="string">'Hello World'</span> <span id="goo84g4" class="keyword">;<br /></span> <span id="g8eq4wi" class="default">?></span> </span> </code> </div> </td> </tr> </tbody> </table> <img src ="http://www.tkk7.com/mayu/aggbug/70712.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mayu/" target="_blank">my</a> 2006-09-20 10:20 <a href="http://www.tkk7.com/mayu/articles/70712.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP字符替换http://www.tkk7.com/mayu/articles/69624.htmlmymyThu, 14 Sep 2006 05:43:00 GMThttp://www.tkk7.com/mayu/articles/69624.htmlhttp://www.tkk7.com/mayu/comments/69624.htmlhttp://www.tkk7.com/mayu/articles/69624.html#Feedback0http://www.tkk7.com/mayu/comments/commentRss/69624.htmlhttp://www.tkk7.com/mayu/services/trackbacks/69624.html

my 2006-09-14 13:43 发表评论
]]>
PHP拆分字符?/title><link>http://www.tkk7.com/mayu/articles/69621.html</link><dc:creator>my</dc:creator><author>my</author><pubDate>Thu, 14 Sep 2006 05:41:00 GMT</pubDate><guid>http://www.tkk7.com/mayu/articles/69621.html</guid><wfw:comment>http://www.tkk7.com/mayu/comments/69621.html</wfw:comment><comments>http://www.tkk7.com/mayu/articles/69621.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/mayu/comments/commentRss/69621.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mayu/services/trackbacks/69621.html</trackback:ping><description><![CDATA[$Date_1="2007-07-12"; $Date_2="2007-06-27"; /* 首先用explodeq个函数来拆分字W串 explode("q引号里面是条g来的哦,Ҏ:׃?来拆分字W串?可以应用到很多方面去?,后面要拆分的字符? */ $Date_explode_1=explode("-",$Date_1); $Date_explode_2=explode("-",$Date_2); echo $Date_explode_1[0] <img src ="http://www.tkk7.com/mayu/aggbug/69621.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mayu/" target="_blank">my</a> 2006-09-14 13:41 <a href="http://www.tkk7.com/mayu/articles/69621.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于php处理多选框checkbox的方?/title><link>http://www.tkk7.com/mayu/articles/69618.html</link><dc:creator>my</dc:creator><author>my</author><pubDate>Thu, 14 Sep 2006 05:39:00 GMT</pubDate><guid>http://www.tkk7.com/mayu/articles/69618.html</guid><wfw:comment>http://www.tkk7.com/mayu/comments/69618.html</wfw:comment><comments>http://www.tkk7.com/mayu/articles/69618.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/mayu/comments/commentRss/69618.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mayu/services/trackbacks/69618.html</trackback:ping><description><![CDATA[PHP要求同名表单元素用数lŞ式命名,q赋予value。否则他不能分解?br />例: 1. <input type="checkbox" value="1" name="chk[]" /> 2. <input type="checkbox" value="2" name="chk[]" /> 3. <input type="checkbox" value="3" name="chk[]" /> 提交后,?_POST[’chk’]讉K?br />数组中的元素为选中的复选框的?PHP代码: <br />1. <?php 2. foreach( $_POST["chk"] as $i=??>$a <br />3. { echo $i."==>".$a."<br />"; } <br />4. //或者?_POST["chk"][0]单独使用 <br />5. ?> l果: 0=>1 1=>2 2=>3 <img src ="http://www.tkk7.com/mayu/aggbug/69618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mayu/" target="_blank">my</a> 2006-09-14 13:39 <a href="http://www.tkk7.com/mayu/articles/69618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP5q接MYSQL数据?/title><link>http://www.tkk7.com/mayu/articles/68197.html</link><dc:creator>my</dc:creator><author>my</author><pubDate>Thu, 07 Sep 2006 02:36:00 GMT</pubDate><guid>http://www.tkk7.com/mayu/articles/68197.html</guid><wfw:comment>http://www.tkk7.com/mayu/comments/68197.html</wfw:comment><comments>http://www.tkk7.com/mayu/articles/68197.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/mayu/comments/commentRss/68197.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mayu/services/trackbacks/68197.html</trackback:ping><description><![CDATA[ <pre>mysql可通过两种方式通过PHP与web相连Q一U通过php的mysql相关函数Q另一U通过php的ODBC相关函数 <br /><br />相关函数如下Q?<br /><br />MYSQL函数 <br /><br />mysql_affected_rows: 得到 MySQL 最后操作媄响的列数目?<br />mysql_close: 关闭 MySQL 伺服器连Uѝ?<br />mysql_connect: 开?MySQL 伺服器连Uѝ?<br />mysql_create_db: 建立一?MySQL 新资料库?<br />mysql_data_seek: Ud内部传回指标?<br />mysql_db_query: 送查询字?(query) ?MySQL 资料库?<br />mysql_drop_db: U除资料库?<br />mysql_errno: 传回错误讯息代码?<br />mysql_error: 传回错误讯息?<br />mysql_fetch_array: 传回阵列资料?<br />mysql_fetch_field: 取得栏位资讯?<br />mysql_fetch_lengths: 传回单列各栏资料最大长度?<br />mysql_fetch_object: 传回物g资料?<br />mysql_fetch_row: 传回单列的各栏位?<br />mysql_field_name: 传回指定栏位的名U?<br />mysql_field_seek: 讑֮指标C回值的某栏位?<br />mysql_field_table: 获得目前栏位的资料表 (table) 名称?<br />mysql_field_type: 获得目前栏位的型态?<br />mysql_field_flags: 获得目前栏位的旗标?<br />mysql_field_len: 获得目前栏位的长度?<br />mysql_free_result: 释放传回占用记忆体?<br />mysql_insert_id: 传回最后一ơ?INSERT 指o?ID?<br />mysql_list_fields: 列出指定资料表的栏位 (field)?<br />mysql_list_dbs: 列出 MySQL 伺服器可用的资料?(database)?<br />mysql_list_tables: 列出指定资料库的资料?(table)?<br />mysql_num_fields: 取得传回栏位的数目?<br />mysql_num_rows: 取得传回列的数目?<br />mysql_pconnect: 开?MySQL 伺服器长期连Uѝ?<br />mysql_query: 送出一?query 字串?<br />mysql_result: 取得查询 (query) 的结果?<br />mysql_select_db: 选择一个资料库?<br />mysql_tablename: 取得资料表名U?<br /></pre> <img src ="http://www.tkk7.com/mayu/aggbug/68197.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mayu/" target="_blank">my</a> 2006-09-07 10:36 <a href="http://www.tkk7.com/mayu/articles/68197.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://www827556.com" target="_blank">޹AVӰԺ</a>| <a href="http://dsdkg.com" target="_blank">WWWƵ߹ۿ</a>| <a href="http://fcw70.com" target="_blank">һƵ</a>| <a href="http://www96008.com" target="_blank">һþƵ</a>| <a href="http://628669.com" target="_blank">޹ƷƵ</a>| <a href="http://hqwgg.com" target="_blank">ëƬƵ</a>| <a href="http://cin17.com" target="_blank">ĻĴȫ</a>| <a href="http://yangguang882.com" target="_blank">avרۿƷ</a>| <a href="http://hucgjc.com" target="_blank">ٸaëƬ˳</a>| <a href="http://s8023.com" target="_blank">ĻƵ</a>| <a href="http://gzltchem.com" target="_blank">ػɫƬ</a>| <a href="http://22nee.com" target="_blank">þպƬ</a>| <a href="http://ywjh666.com" target="_blank">޵һҳۺͼƬ</a>| <a href="http://fenglufzjx.com" target="_blank">ҹѸƵ</a>| <a href="http://554ka.com" target="_blank">ĻƷƵ</a>| <a href="http://ghdc5.com" target="_blank">޹Ů޹</a>| <a href="http://blbkl.com" target="_blank">ŷպþAV</a>| <a href="http://564ka.com" target="_blank">ĻƷƵѹۿ</a>| <a href="http://tao-zhe.com" target="_blank">Ʒlvɫ</a>| <a href="http://52xingai.com" target="_blank">ҹߵӰ</a>| <a href="http://caobi97.com" target="_blank">޾ƷƵ</a>| <a href="http://quxx10.com" target="_blank">ŷxxxxx</a>| <a href="http://bogygames.com" target="_blank">վ߿</a>| <a href="http://0354888.com" target="_blank">޾ǧ˾ղ</a>| <a href="http://www-456446.com" target="_blank">þþþAVƬ</a>| <a href="http://0755szyxcm.com" target="_blank">ƵvƬwww</a>| <a href="http://zp0533.com" target="_blank">ɫվ</a>| <a href="http://50077995.com" target="_blank">91ƵƷȫѹۿ</a>| <a href="http://79909d.com" target="_blank">ƷAV</a>| <a href="http://cshjjc.com" target="_blank">Ļձ</a>| <a href="http://91ptv.com" target="_blank">ްv</a>| <a href="http://tjbdyx.com" target="_blank">޸Ļַ</a>| <a href="http://www1688mz.com" target="_blank">100000žž18</a>| <a href="http://yy9977.com" target="_blank">ѹۿ</a>| <a href="http://600c63.com" target="_blank">ɫ˿ѿ</a>| <a href="http://http99.com" target="_blank">av</a>| <a href="http://918989b.com" target="_blank">Ʒ˿Ļ</a>| <a href="http://zfzz008.com" target="_blank">þպƷһ</a>| <a href="http://huafagz.com" target="_blank">޾Ʒþþþȥq</a>| <a href="http://www66913.com" target="_blank">޹רһ</a>| <a href="http://xmjcjc.com" target="_blank">һëƬ߲</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>