[ת] ÃæÏò PHP ¿ª·¢ÈËÔ±µÄ CouchDB »ù´¡ÖªÊ¶
Thomas Myer, ¸ºÔðÈË, Triple Dog Dare Media
Thomas Myer ÊÇÒ»Ãû¹ËÎÊ¡¢×÷¼ÒºÍ½²Ê¦£¬¾ÓסÔÚ Austin¡£Ëû´´Á¢ÁË Triple Dog Dare Media ²¢ÔÚ Twitter ÉÏÒÔ @myerman ׫д²©ÎÄ¡£
¼ò½é£º ×÷Õß Thomas Myer Ïò×ÊÉî PHP ¿ª·¢ÈËÔ±½²ÊöÈçºÎ°Ñ CouchDB Ìí¼Óµ½ËûÃǵļ¼Êõ¹¤¾ßÏäÖС£
Èç¹ûÄúÊÇλµäÐ굀 PHP ¿ª·¢ÈËÔ±£¬¾Í²»ÄÑͨ¹ýÒÔÍùµÄÏîÄ¿µÃµ½ÕâÑùÒ»¸ö½áÂÛ£ºÔÚ¶àÊý£¨Èç¹û²»ÊÇÈ«²¿£©Çé¿öÏ£¬ÎªÁ˽øÐж¯Ì¬Êý¾Ý´¦Àí£¬Äú¶¼»áÈà PHP ÓëÊý¾Ý¿âºó¶Ë½øÐжԻ°£»¶øÔÚÕâЩʵÀýÖУ¬99% µÄÇé¿öÏÂʹÓõͼÊÇ MySQL¡£
Èç½ñ£¬Ê¹ÓùØÏµÐÍÊý¾Ý¿âÎ޿ɺñ·Ç¡£Èç¹ûËù´¦ÀíµÄÊý¾Ý½á¹¹¸´ÔÓ£¬²¢¾ßÓжàÖÖ¹ØÏµ£¬ÄÇôÕâô×öÊǺܺÏÀíµÄ¡£Äú¿ÉÒÔ˳ÀûµØ£¨»òÊDz»Ì«Ë³ÀûµØ£¬È¡¾öÓÚÄú¶Ô SQL µÄÊìϤ³Ì¶È£©½øÐжÔģʽ¡¢Êý¾Ý¹ØÏµ¡¢±íµÈµÈµÄ´¦Àí¡£
²»¹ý£¬ÄúËù´ÓʵÄÏîÄ¿ÓÐʱҲ»áÈÃÄú²»¾Òâ¼äÐÄÉúÒÉÎÊ£º“ΪʲôÎÒÒª×öËùÓÐÕâЩ¹¤×÷£¿” ÄúËù´ÓʵÄÕâ¸öÏîÄ¿°üº¬ÁËһЩ¼òµ¥µÄ»òÄÑÒÔÔ¤²âµÄÊý¾Ý — ÔÚ²»Í¬µÄÈÕ×Ó»ñµÃµÄÊý¾Ý×ֶοÉÄܲ»Í¬ÉõÖÁÊÂÎñÖ®¼äµÄÊý¾Ý×ֶζ¼²»¾¡Ïàͬ¡£ÈôÊÇ´´½¨Ò»¸öģʽÀ´Ô¤²â½«»á³öÏÖʲôÊý¾Ý×ֶΣ¬½á¹ûºÜ¿ÉÄÜ»áµÃµ½ÄÚº¬´óÁ¿¿Õ×ֶεıí»ò´óÁ¿µÄÓ³Éä±í¡£
³£ÓÃËõÂÔÓï
Ajax£ºÒì²½ JavaScript + XML
API£ºÓ¦ÓóÌÐò±à³Ì½Ó¿Ú
GUID£ºÈ«¾ÖΩһ±êʾ·û
HTTP£º³¬Îı¾±ê¼ÇÓïÑÔ
JSON£ºJavaScript ¶ÔÏó×¢ÊÍ
REST£º¾ßÏó״̬´«Êä
SQL£º½á¹¹»¯²éѯÓïÑÔ
UUID£ºÍ¨ÓÃΩһ±êʶ·û
¶ÔÓÚÕâЩÏîÄ¿£¬ÄúÐèÒª²ÉÓÃÒ»ÖÖ²»Í¬µÄ·½Ê½ — ²»Éæ¼°¹ØÏµÐÍÊý¾Ý¿â¡£ÔÚÕâЩÇé¿öÏ£¬ÄúÐèÒªµÄÊÇÒ»¸ö»ùÓÚÎĵµµÄ¡¢Ã»ÓÐģʽµÄ¡¢¾ßÓÐ±âÆ½µØÖ·¿Õ¼äµÄÌØ±ðÊý¾Ý¿â¡£¼òÑÔÖ®£¬ÄúÐèÒª Apache CouchDB¡£
ʲôÊÇ CouchDB£¿
CouchDB ÊÇ£¨¸ù¾Ý Apache CouchDB ÍøÕ¾£©£º
Ò»¸öÎĵµÊý¾Ý¿â·þÎñÆ÷£¬¿Éͨ¹ý RESTful JSON API ·ÃÎÊ¡£
ÎªÌØÊâÄ¿µÄ¶øÉè¼Æ£¬ÎÞģʽ£¬¾ßÓÐ±âÆ½µØÖ·¿Õ¼ä¡£
·Ö²¼Ê½µÄ¡¢ÌØÐԷḻ¡¢¾ß±¸Ë«Ïò³åÍ»¼ì²â¼°¹ÜÀíµÄÔöÁ¿¸´ÖÆ¡£
¿É²éѯ¡¢¿ÉË÷Òý¡¢¾ßÓÐÒ»¸öÃæÏò±íµÄ±¨±íÒýÇæ£¬Ê¹Óà JavaScript ×÷ΪÒýÇæµÄ²éѯÓïÑÔ¡£
ÕâÒâζ×Å£¬Äú¿ÉÒÔ´´½¨Ò»¸öÄܹ»½ÓÊÜ JSON ÎĵµµÄ CouchDB Êý¾Ý¿â¡£Ã¿¸öÎĵµ¾ùÓÐÒ»¸öΩһµÄÐÞ¶© ID ºÍ×ÔÉí½á¹¹£¬¶øÇÒËùÓÐÎĵµ¾ù´æ´¢ÓÚͬһ¸ö±âƽµÄ¼¯ºÏÄÚ¡£ÀýÈ磬¼ÙÉèÄúÉèÖÃÁËÒ»¸ö¼òÀú¼¯¡£µÚÒ»¸ö¼òÀú¾ßÓеÄ×ֶΰüÀ¨£ºÃû¡¢ÐÕ¡¢µç»°ºÅÂë¡¢µç×ÓÓʼþµØÖ·¡¢Twitter ÕÊ»§¡¢Ìس¤ÒÔ¼°ÏêϸµÄ¹¤×÷¾Àú¡£¶øµÚ¶þ¸ö¼òÀúÔòÖ»ÓÐÃû¡¢ÐÕ¡¢µç×ÓÓʼþµØÖ·ÒÔ¼°Ò»¸ö¼ò¶ÌµÄ¹¤×÷¾Àú¡£ÕâÖÖ²îÒì×
Ïà¹ØÎĵµ£º
×òÌìÎÒÃÇʵÏÖÁËÒ»¸ö¼òµ¥µÄËÑË÷¹¦ÄÜ£¬½ñÌìÎÒÏëÁËһϣ¬Æäʵ»¹ÓпÉÒԸĽøµÄµØÖ·£¬ÈçÖ±½ÓÓÃIndex.php´úÌæSearch.php¡£
ÐÞ¸ÄIndex.phpÎļþ£¬ÐÞ¸ÄÒ»ÏÂËÑË÷±íµ¥
<!---ËÑË÷¿ò--->
<!--ÕâÀïµÄËùÓÐÖµÇ°Ãæ¼Óǰ׺“S_”ÒÔÇø·Ö-->
<form id="form1" name="form1" method="get" action="Index.php">
&n ......
¶ÔÓڽű¾°²È«Õâ¸ö»°ÌâºÃÏñÓÀԶûÍêûÁË£¬Èç¹ûÄã¾³£µ½¹úÍâµÄ¸÷ÖÖ¸÷ÑùµÄbugtraqÉÏ£¬Äã»á·¢ÏÖÓÐÒ»°ëÒÔÉ϶¼ºÍ½Å±¾Ïà¹Ø£¬ÖîÈçSQL
injection£¬XSS£¬Path Disclosure£¬Remote commands
executionÕâÑùµÄ×ÖÑ۱ȱȽÔÊÇ£¬ÎÒÃÇ¿´ÁËÖ®ºóµÄÓÃ;ÄѵÀ½ö½öÊÇ×¥È⼦?¶ÔÓÚÎÒÃÇÏë×öweb°²È«µÄÈËÀ´Ëµ£¬×îºÃ¾ÍÊÇÄÃÀ´Ñ§Ï°£¬¿ÉÊÇÍòÎï×¥¸ùÔ´£¬ÎÒà ......
1
£®
Çë¶Ô
POSIX
·ç¸ñºÍ¼æÈÝ
Perl
·ç¸ñÁ½ÖÖÕýÔò
±í´ïʽµÄÖ÷Òªº¯Êý½øÐÐÀà±È˵Ã÷
ereg
preg_match
ereg_replace
preg_replace
2
£®
Çë˵Ã÷ÔÚ
php
.ini
ÖÐ
safe_mode
¿ªÆôÖ®ºó¶ÔÓÚ
PHP
ϵͳ
º¯ÊýµÄÓ°Ïì
3
£®
PHP5
ÖÐħÊõ
·½·¨
º¯ÊýÓÐÄö£¬Çë¾ÙÀý˵à ......
Session]
; ³ý·ÇʹÓÃsession_register()»ò$_SESSION×¢²áÁËÒ»¸ö±äÁ¿¡£
; ·ñÔò²»¹ÜÊÇ·ñʹÓÃÁËsession_start()£¬¶¼²»»á×Ô¶¯Ìí¼ÓÈκÎsession¼Ç¼¡£
; °üÀ¨resource±äÁ¿»òÓÐÑ»·ÒýÓõĶÔÏó°üº¬Ö¸Ïò×ÔÉíµÄÒýÓõĶÔÏ󣬲»Äܱ£´æÔڻỰÖС£
; register_globalsÖ¸Áî»áÓ°Ïìµ½»á»°±äÁ¿µÄ´æ´¢ºÍ»Ö¸´¡£
session ......
µ±ÏÂÔØÎļþÐèÒªÓë·þÎñ¶Ë½»»¥Ê±£¬¾ÍÐèÒªÓýű¾À´ÊµÏÖ£¬¶ø²»Êǵ¥´¿µØÁ´½Óµ½ÎļþµÄµØÖ·
ÏÂÔØmp3ÎļþµÄÀý×Ó
<?php
$file_path = './data/upload/song/sample.mp3';
$file_name = 'sample.mp3';
$file_size = filesize($file_path);
header ( "Pragma: public" );
header ( "Cache-Control: must-reval ......