Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ)-µÚ147²¿·Ö
°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
¡¡¡¡¡¡¡¡else¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡*qry¡¡=¡¡'0'£»¡¡//¡¡Terminate¡¡value¡¡string¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡qry£«£«£»¡¡//¡¡Move¡¡to¡¡next¡¡pair¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡Pair£¨name£»¡¡value£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý£»¡¡///£º~¡¡¡¡
¡¡¡¡
ÔÚ#include¡¡Óï¾äºó£¬¿É¿´µ½ÓÐÒ»ÐÐÊÇ£º¡¡¡¡
using¡¡namespace¡¡std£»¡¡¡¡
C£«£«Öеġ°ÃüÃû¿Õ¼ä¡±£¨Namespace£©½â¾öÁËÓÉJava¡¡µÄpackage¡¡¸ºÔðµÄÒ»¸öÎÊÌ⣺½«¿âÃûÒþ²ØÆðÀ´¡£stdÃüÃû¡¡
¿Õ¼äÒýÓõÄÊDZê×¼C£«£«¿â£¬¶ø¡¡vector¡¡¾ÍÔÚÕâ¸ö¿âÖУ¬ËùÒÔÕâÒ»ÐÐÊDZØÐèµÄ¡£¡¡¡¡
Pair¡¡Àà±íÃæ¿´Òì³£¼òµ¥£¬Ö»ÊÇÈÝÄÉÁËÁ½¸ö£¨private£©×Ö·ûÖ¸Õë¶øÒÑ¡ª¡ªÒ»¸öÓÃÓÚÃû×Ö£¬ÁíÒ»¸öÓÃÓÚÖµ¡£Ä¬¡¡
ÈϹ¹½¨Æ÷½«ÕâÁ½¸öÖ¸Õë¼òµ¥µØÉèΪÁã¡£ÕâÊÇÓÉÓÚÔÚ¡¡C£«£«ÖУ¬¶ÔÏóµÄÄÚ´æ²»»á×Ô¶¯ÖÃÁã¡£µÚ¶þ¸ö¹¹½¨Æ÷µ÷Ó÷½¡¡
·¨¡¡decodeURLString£¨£©£¬ÔÚзÖÅäµÄ¶ÑÄÚ´æÖÐÉú³ÉÒ»¸ö½âÂë¹ýºóµÄ×Ö´®¡£Õâ¸öÄÚ´æÇøÓò±ØÐëÓɶÔÏó¸ºÔð¹ÜÀí¡¡
¼°Çå³ý£¬ÕâÓë¡°ÆÆ»µÆ÷¡±Öмûµ½µÄÏàͬ¡£name£¨£©ºÍ¡¡value£¨£©·½·¨ÎªÏà¹ØµÄ×ֶβúÉúÖ»¶ÁÖ¸Õë¡£ÀûÓá¡empty£¨£©·½¡¡
·¨£¬ÎÒÃDzéѯPair¡¡¶ÔÏóËüµÄij¸ö×Ö¶ÎÊÇ·ñΪ¿Õ£»·µ»ØµÄ½á¹ûÊÇÒ»¸ö¡¡bool¡ª¡ªC£«£«ÄÚ½¨µÄ»ù±¾²¼¶ûÊý¾ÝÀàÐÍ¡£¡¡
operator¡¡bool£¨£©Ê¹ÓõÄÊÇ¡¡C£«£«¡¡¡°ÔËËã·û¹ýÔØ¡±µÄÒ»ÖÖÌØÊâÐÎʽ¡£ËüÔÊÐíÎÒÃÇ¿ØÖÆ×Ô¶¯ÀàÐÍת»»¡£Èç¹ûÓÐÒ»¸ö¡¡
ÃûΪp¡¡µÄPair¡¡¶ÔÏ󣬶øÇÒÔÚÒ»¸ö±¾À´Ï£ÍûÊDz¼¶û½á¹ûµÄ±í´ïʽÖÐʹÓ㬱ÈÈç¡¡if£¨p£©£û//¡£¡£¡££¬ÄÇô±àÒëÆ÷Äܱ桡
±ð³öËüÓÐÒ»¸öPair£¬¶øÇÒÐèÒªµÄÊǸö²¼¶ûÖµ£¬ËùÒÔ×Ô¶¯µ÷Óá¡operator¡¡bool£¨£©£¬½øÐбØÒªµÄת»»¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡569¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡571¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
½ÓÏÂÀ´µÄÈý¸ö·½·¨ÊôÓÚ³£¹æ±àÂ룬ÔÚC£«£«Öд´½¨Ààʱ±ØÐëÓõ½ËüÃÇ¡£¸ù¾ÝC£«£«Àà²ÉÓõÄËùν¡°¾µäÐÎʽ¡±£¬ÎÒ¡¡
ÃDZØÐ붨Òå±ØÒªµÄ¡°Ôʼ¡±¹¹½¨Æ÷£¬ÒÔ¼°Ò»¸ö¸±±¾¹¹½¨Æ÷ºÍ¸³ÖµÔËËã·û¡ª¡ªoperator=¡¡£¨ÒÔ¼°ÆÆ»µÆ÷£¬ÓÃÓÚÇå¡¡
³ýÄڴ棩¡£Ö®ËùÒÔÒª×÷ÕâÑùµÄ¶¨Ò壬ÊÇÓÉÓÚ±àÒëÆ÷»á¡°Ä¬Ä¬¡±µØµ÷ÓÃËüÃÇ¡£ÔÚ¶ÔÏó´«Èë¡¢´«³öÒ»¸öº¯ÊýµÄʱ¡¡
ºò£¬ÐèÒªµ÷Óø±±¾¹¹½¨Æ÷£»¶øÔÚ·ÖÅä¶ÔÏóʱ£¬ÐèÒªµ÷Óø³ÖµÔËËã·û¡£Ö»ÓÐÕæÕýÕÆÎÕÁ˸±±¾¹¹½¨Æ÷ºÍ¸³ÖµÔËËã¡¡
·ûµÄ¹¤×÷ÔÀí£¬²ÅÄÜÔÚ¡¡C£«£«Àïд³öÕæÕý¡°½¡×³¡±µÄÀ࣬µ«ÕâÐèÒªÐèÒªÒ»¸ö±È½Ï¼è¿àµÄ¹ý³Ì£¨×¢Ê͢ݣ©¡£¡¡¡¡
¡¡¡¡
¢Ý£ºÎҵġ¶Thinking¡¡in¡¡C£«£«¡·£¨Prentice¡Hall£»1995£©ÓÃÁËÒ»ÕûÕµĵط½À´ÌÖÂÛÕâ¸öÖ÷Ìâ¡£ÈôÐè¸ü¶àµÄ°ï¡¡
Öú£¬ÇëÎñ±Ø¿´¿´ÄÇÒ»Õ¡£¡¡¡¡
¡¡¡¡
Ö»Òª½«Ò»¸ö¶ÔÏó°´Öµ´«Èë»ò´«³öº¯Êý£¬¾Í»á×Ô¶¯µ÷Óø±±¾¹¹½¨Æ÷Pair£¨const¡¡Pair&£©¡£Ò²¾ÍÊÇ˵£¬¶ÔÓÚ×¼±¸¡¡
ΪÆäÖÆ×÷Ò»¸öÍêÕû¸±±¾µÄÄǸö¶ÔÏó£¬ÎÒÃDz»×¼±¸ÔÚº¯Êý¿ò¼ÜÖд«µÝËüµÄµØÖ·¡£Õâ²¢²»ÊÇJava¡¡ÌṩµÄÒ»¸öÑ¡¡¡
ÏÓÉÓÚÎÒÃÇÖ»ÄÜ´«µÝ¾ä±ú£¬ËùÒÔÔÚJava¡¡ÀïûÓÐËùνµÄ¸±±¾¹¹½¨Æ÷£¨Èç¹ûÏëÖÆ×÷Ò»¸ö±¾µØ¸±±¾£¬¿ÉÒÔ¡°¿Ë¡¡
¡¡±ÄǸö¶ÔÏ󡪡ªÊ¹Óá¡clone£¨£©£¬²Î¼ûµÚ12¡¡Õ£©¡£ÀàËƵأ¬Èç¹ûÔÚ¡¡Java¡¡Àï·ÖÅäÒ»¸ö¾ä±ú£¬Ëü»á¼òµ¥µØ¸´¡¡
ÖÆ¡£µ«¡¡C£«£«Öеĸ³ÖµÒâζ×ÅÕû¸ö¶ÔÏ󶼻ḴÖÆ¡£ÔÚ¸±±¾¹¹½¨Æ÷ÖУ¬ÎÒÃÇ´´½¨ÐµĴ洢¿Õ¼ä£¬²¢¸´ÖÆÔʼÊý¡¡
¾Ý¡£µ«¶ÔÓÚ¸³ÖµÔËËã·û£¬ÎÒÃDZØÐëÔÚ·ÖÅäд洢¿Õ¼ä֮ǰÊÍ·ÅÀÏ´æ´¢¿Õ¼ä¡£ÎÒÃÇÒª¼ûµ½µÄÒ²ÐíÊÇ¡¡C£«£«Àà×¡¡
ÔÓµÄÒ»ÖÖÇé¿ö£¬µ«ÄÇÕýÊÇJava¡¡µÄÖ§³ÖÕßÃÇÂÛÖ¤Java¡¡±ÈC£«£«¼òµ¥µÃ¶àµÄÓÐÁ¦Ö¤¾Ý¡£ÔÚ¡¡Java¡¡ÖУ¬ÎÒÃÇ¿ÉÒÔ×ÔÓÉ¡¡
´«µÝ¾ä±ú£¬Éƺó¹¤×÷ÔòÓÉÀ¬»øÊÕ¼¯Æ÷¸ºÔð£¬ËùÒÔ¿ÉÒÔÇáËÉÐí¶à¡£¡¡¡¡
µ«ÊÂÇ鲢ûÓÐÍê¡£Pair¡¡ÀàΪnm¡¡ºÍ¡¡val¡¡Ê¹ÓõÄÊÇchar*£¬×ÔÓµÄÇé¿öÖ÷ÒªÊÇΧÈÆÖ¸ÕëÕ¹¿ªµÄ¡£Èç¹ûÓýÏʱ÷Ö¡¡
µÄC£«£«¡¡string¡¡ÀàÀ´´úÌæchar*£¬ÊÂÇé¾ÍÒª±äµÃ¼òµ¥µÃ¶à£¨µ±È»£¬²¢²»ÊÇËùÓбàÒëÆ÷¶¼ÌṩÁ˶ԡ¡string¡¡µÄÖ§¡¡
³Ö£©¡£ÄÇô£¬Pair¡¡µÄµÚÒ»²¿·Ö¿´ÆðÀ´¾ÍÏóÏÂÃæÕâÑù£º¡¡¡¡
¡¡¡¡
class¡¡Pair¡¡£û¡¡¡¡
¡¡¡¡string¡¡nm£»¡¡¡¡
¡¡¡¡string¡¡val£»¡¡¡¡
public£º¡¡¡¡
¡¡¡¡Pair£¨£©¡¡£û¡¡£ý¡¡¡¡
¡¡¡¡Pair£¨char*¡¡name£»¡¡char*¡¡value£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡nm¡¡=¡¡decodeURLString£¨name£©£»¡¡¡¡
¡¡¡¡¡¡¡¡val¡¡=¡¡decodeURLString£¨value£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡const¡¡char*¡¡name£¨£©¡¡const¡¡£û¡¡return¡¡nm¡£c_str£¨£©£»¡¡£ý¡¡¡¡
¡¡¡¡const¡¡char*¡¡value£¨£©¡¡const¡¡£û¡¡¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡val¡£c_str£¨£©£»¡¡¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡//¡¡Test¡¡for¡¡¡¨emptiness¡¨¡¡¡¡
¡¡¡¡bool¡¡empty£¨£©¡¡const¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡£¨nm¡£length£¨£©¡¡==¡¡0£©¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡£ü£ü¡¡£¨val¡£length£¨£©¡¡==¡¡0£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡//¡¡Automatic¡¡type¡¡conversion¡¡for¡¡boolean¡¡test£º¡¡¡¡
¡¡¡¡operator¡¡bool£¨£©¡¡const¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡£¨nm¡£length£¨£©¡¡£¡=¡¡0£©¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡&&¡¡£¨val¡£length£¨£©¡¡£¡=¡¡0£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡
¡¡£¨´ËÍ⣬¶ÔÕâ¸öÀàdecodeURLString£¨£©»á·µ»ØÒ»¸ö¡¡string£¬¶ø²»ÊÇÒ»¸öchar*£©¡£ÎÒÃDz»±Ø¶¨Ò帱±¾¹¹½¨¡¡
Æ÷¡¢operator=»òÕßÆÆ»µÆ÷£¬ÒòΪ±àÒëÆ÷ÒÑ°ïÎÒÃÇ×öÁË£¬¶øÇÒ×öµÃ·Ç³£ºÃ¡£µ«¼´Ê¹ÓÐЩÊÂÇéÊÇ×Ô¶¯½øÐеģ¬¡¡
C£«£«³ÌÐòÔ±Ò²±ØÐëÁ˽⸱±¾¹¹½¨ÒÔ¼°¸³ÖµµÄϸ½Ú¡£¡¡¡¡
Pair¡¡ÀàʣϵIJ¿·ÖÓÉÁ½¸ö·½·¨¹¹³É£ºdecodeURLString£¨£©ÒÔ¼°Ò»¸ö¡°°ïÖúÆ÷¡±·½·¨translateHex£¨£©¡ª¡ª½«ÓÉ¡¡
decodeURLString£¨£©Ê¹Óá£×¢Òâ¡¡translateHex£¨£©²¢²»ÄÜ·À·¶Óû§µÄ¶ñÒâÊäÈ룬±ÈÈç¡°£¥1H¡±¡£·ÖÅäºÃ×ã¹»µÄ´æ¡¡
´¢¿Õ¼äºó£¨±ØÐëÓÉÆÆ»µÆ÷ÊÍ·Å£©£¬decodeURLString£¨£©¾Í»áÆäÖбéÀú£¬½«ËùÓС°£«¡±¶¼»»³ÉÒ»¸ö¿Õ¸ñ£»½«ËùÓС¡
Ê®Áù½øÖÆ´úÂ루ÒÔÒ»¸ö¡°£¥¡±´òÍ·£©»»³É¶ÔÓ¦µÄ×Ö·û¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡570¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡572¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
CGI_vector¡¡ÓÃÓÚ½âÎöºÍÈÝÄÉÕû¸ö¡¡CGI¡¡GET¡¡ÃüÁî¡£ËüÊÇ´Ó¡¡STL¡¡vector¡¡Àï¼Ì³ÐµÄ£¬ºóÕßÀýʾΪÈÝÄÉPair¡¡¡£C£«£«ÖС¡
µÄ¼Ì³ÐÊÇÓÃÒ»¸öðºÅ±íʾ£¬ÔÚJava¡¡ÖÐÔòÒªÓÃextends¡£´ËÍ⣬¼Ì³ÐĬÈÏΪprivate¡¡ÊôÐÔ£¬ËùÒÔ¼¸ºõ¿Ï¶¨ÐèÒª¡¡
Óõ½public¡¡¹Ø¼ü×Ö£¬¾ÍÏóÕâÑù×öµÄÄÇÑù¡£´ó¼ÒÒ²»á·¢ÏÖ¡¡CGI_vector¡¡ÓÐÒ»¸ö¸±±¾¹¹½¨Æ÷ÒÔ¼°Ò»¸ö¡¡
operator=£¬µ«ËüÃǶ¼ÉùÃ÷³Éprivate¡£ÕâÑù×öÊÇΪÁË·ÀÖ¹±àÒëÆ÷ͬ²½Á½¸öº¯Êý£¨Èç¹û²»×Ô¼ºÉùÃ÷ËüÃÇ£¬Á½Õß¡¡
¾Í»áͬ²½£©¡£µ«ÕâͬʱҲ½ûÖ¹ÁË¿Í»§³ÌÐòÔ±°´Öµ»òÕßͨ¹ý¸³Öµ´«µÝÒ»¸öCGI_vector¡£¡¡¡¡
CGI_vector¡¡µÄ¹¤×÷ÊÇ»ñÈ¡QUERY_STRING£¬²¢°ÑËü½âÎö³É¡°Ãû³Æ£¯Öµ¡±¶Ô£¬ÕâÐèÒªÔÚPair¡¡µÄ°ïÖúÏÂÍê³É¡£Ëü¡¡
Ê×ÏȽ«×Ö´®¸´ÖƵ½±¾µØ·ÖÅäµÄÄڴ棬²¢Óó£ÊýÖ¸Õë¡¡start¡¡¸ú×ÙÆðʼµØÖ·£¨ÉÔºó»áÔÚÆÆ»µÆ÷ÖÐÓÃÓÚÊÍ·ÅÄÚ¡¡
´æ£©¡£Ëæºó£¬ËüÓÃ×Ô¼ºµÄnextPair£¨£©·½·¨½«×Ö´®½âÎö³ÉÔʼµÄ¡°Ãû³Æ£¯Öµ¡±¶Ô£¬¸÷¸ö¶ÔÖ®¼äÓÃÒ»¸ö¡°=¡±ºÍ¡¡
¡¡¡°&¡±·ûºÅ·Ö¸ô¡£ÕâЩ¶ÔÓÉ¡¡nextPair£¨£©´«µÝ¸ø¡¡Pair¡¡¹¹½¨Æ÷£¬ËùÒÔnextPair£¨£©·µ»ØµÄÊÇÒ»¸öPair¡¡¶ÔÏó¡£Ëæºó¡¡
ÓÃpush_back£¨£©½«¸Ã¶ÔÏó¼ÓÈëvector¡£nextPair£¨£©±éÀúÍêÕû¸ö¡¡QUERY_STRING¡¡ºó£¬»á·µ»ØÒ»¸öÁãÖµ¡£¡¡¡¡
ÏÖÔÚ»ù±¾¹¤¾ßÒѶ¨ÒåºÃ£¬ËüÃÇ¿ÉÒÔ¼òµ¥µØÔÚÒ»¸öCGI¡¡³ÌÐòÖÐʹÓ㬾ÍÏóÏÂÃæÕâÑù£º¡¡¡¡
¡¡¡¡
//£º¡¡Listmgr2¡£cpp¡¡¡¡
//¡¡CGI¡¡version¡¡of¡¡Listmgr¡£c¡¡in¡¡C£«£«£»¡¡which¡¡¡¡¡¡
//¡¡extracts¡¡its¡¡input¡¡via¡¡the¡¡GET¡¡submission¡¡¡¡¡¡
//¡¡from¡¡the¡¡associated¡¡applet¡£¡¡Also¡¡works¡¡as¡¡¡¡
//¡¡an¡¡ordinary¡¡CGI¡¡program¡¡with¡¡HTML¡¡forms¡£¡¡¡¡
#include¡¡¡¡¡¡
#include¡¡¡¨CGITools¡£h¡¨¡¡¡¡
const¡¡char*¡¡dataFile¡¡=¡¡¡¨list2¡£txt¡¨£»¡¡¡¡
const¡¡char*¡¡notify¡¡=¡¡¡¨Bruce@EckelObjects¡£¡¨£»¡¡¡¡
#undef¡¡DEBUG¡¡¡¡
¡¡¡¡
//¡¡Similar¡¡code¡¡as¡¡before£»¡¡except¡¡that¡¡it¡¡looks¡¡¡¡
//¡¡for¡¡the¡¡email¡¡name¡¡inside¡¡of¡¡''£º¡¡¡¡
int¡¡inList£¨FILE*¡¡list£»¡¡const¡¡char*¡¡emailName£©¡¡£û¡¡¡¡
¡¡¡¡const¡¡int¡¡BSIZE¡¡=¡¡255£»¡¡¡¡
¡¡¡¡char¡¡lbuf£§BSIZE£§£»¡¡¡¡
¡¡¡¡char¡¡emname£§BSIZE£§£»¡¡¡¡
¡¡¡¡//¡¡Put¡¡the¡¡email¡¡name¡¡in¡¡''¡¡so¡¡there's¡¡no¡¡¡¡
¡¡¡¡//¡¡possibility¡¡of¡¡a¡¡match¡¡within¡¡another¡¡name£º¡¡¡¡
¡¡¡¡sprintf£¨emname£»¡¡¡¨¡¨£»¡¡emailName£©£»¡¡¡¡
¡¡¡¡//¡¡Go¡¡to¡¡the¡¡beginning¡¡of¡¡the¡¡list£º¡¡¡¡
¡¡¡¡fseek£¨list£»¡¡0£»¡¡SEEK_SET£©£»¡¡¡¡
¡¡¡¡//¡¡Read¡¡each¡¡line¡¡in¡¡the¡¡list£º¡¡¡¡
¡¡¡¡while£¨fgets£¨lbuf£»¡¡BSIZE£»¡¡list£©£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡//¡¡Strip¡¡off¡¡the¡¡newline£º¡¡¡¡¡¡
¡¡¡¡¡¡¡¡char¡¡*¡¡newline¡¡=¡¡strchr£¨lbuf£»¡¡'n'£©£»¡¡¡¡
¡¡¡¡¡¡¡¡if£¨newline¡¡£¡=¡¡0£©¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡*newline¡¡=¡¡'0'£»¡¡¡¡
¡¡¡¡¡¡¡¡if£¨strstr£¨lbuf£»¡¡emname£©¡¡£¡=¡¡0£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡return¡¡1£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡return¡¡0£»¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
void¡¡main£¨£©¡¡£û¡¡¡¡
¡¡¡¡//¡¡You¡¡MUST¡¡print¡¡this¡¡out£»¡¡otherwise¡¡the¡¡¡¡¡¡
¡¡¡¡//¡¡server¡¡will¡¡not¡¡send¡¡the¡¡response£º¡¡¡¡
¡¡¡¡printf£¨¡¨Content¡type£º¡¡text/plainnn¡¨£©£»¡¡¡¡
¡¡¡¡FILE*¡¡list¡¡=¡¡fopen£¨dataFile£»¡¡¡¨a£«t¡¨£©£»¡¡¡¡
¡¡¡¡if£¨list¡¡==¡¡0£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡571¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡573¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡printf£¨¡¨error£º¡¡could¡¡not¡¡open¡¡database¡£¡¡¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡printf£¨¡¨Notify¡¡£¥s¡¨£»¡¡notify£©£»¡¡¡¡
¡¡¡¡¡¡¡¡return£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡//¡¡For¡¡a¡¡CGI¡¡¡¨GET£»¡¨¡¡the¡¡server¡¡puts¡¡the¡¡data¡¡¡¡
¡¡¡¡//¡¡in¡¡the¡¡environment¡¡variable¡¡QUERY_STRING£º¡¡¡¡
¡¡¡¡CGI_vector¡¡query£¨getenv£¨¡¨QUERY_STRING¡¨£©£©£»¡¡¡¡
¡¡¡¡#if¡¡defined£¨DEBUG£©¡¡¡¡
¡¡¡¡//¡¡Test£º¡¡dump¡¡all¡¡names¡¡and¡¡values¡¡¡¡
¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡query¡£size£¨£©£»¡¡i£«£«£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡printf£¨¡¨query£§£¥d£§¡£name£¨£©¡¡=¡¡£§£¥s£§£»¡¡¡¨£»¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡i£»¡¡query£§i£§¡£name£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡printf£¨¡¨query£§£¥d£§¡£value£¨£©¡¡=¡¡£§£¥s£§¡¡n¡¨£»¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡i£»¡¡query£§i£§¡£value£¨£©£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡#endif£¨DEBUG£©¡¡¡¡
¡¡¡¡Pair¡¡name¡¡=¡¡query£§0£§£»¡¡¡¡
¡¡¡¡Pair¡¡email¡¡=¡¡query£§1£§£»¡¡¡¡
¡¡¡¡if£¨name¡£empty£¨£©¡¡£ü£ü¡¡email¡£empty£¨£©£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡printf£¨¡¨error£º¡¡null¡¡name¡¡or¡¡email¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡return£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡¡¡
¡¡¡¡if£¨inList£¨list£»¡¡email¡£value£¨£©£©£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡printf£¨¡¨Already¡¡in¡¡list£º¡¡£¥s¡¨£»¡¡email¡£value£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡return£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡//¡¡It's¡¡not¡¡in¡¡the¡¡list£»¡¡add¡¡it£º¡¡¡¡
¡¡¡¡fseek£¨list£»¡¡0£»¡¡SEEK_END£©£»¡¡¡¡
¡¡¡¡fprintf£¨list£»¡¡¡¨£¥s¡¡£»n¡¨£»¡¡¡¡¡¡
¡¡¡¡¡¡¡¡name¡£value£¨£©£»¡¡email¡£value£¨£©£©£»¡¡¡¡
¡¡¡¡fflush£¨list£©£»¡¡¡¡
¡¡¡¡fclose£¨list£©£»¡¡¡¡
¡¡¡¡printf£¨¡¨£¥s¡¡¡¡added¡¡to¡¡listn¡¨£»¡¡¡¡¡¡
¡¡¡¡¡¡¡¡name¡£value£¨£©£»¡¡email¡£value£¨£©£©£»¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
alreadyInList£¨£©º¯ÊýÓëÇ°Ò»¸ö°æ±¾¼¸ºõÊÇÍêÈ«ÏàͬµÄ£¬Ö»ÊÇËü¼Ù¶¨ËùÓеç×Óº¯¼þµØÖ·¶¼ÔÚÒ»¸ö¡°¡±ÄÚ¡£¡¡¡¡
ÔÚʹÓá¡GET¡¡·½·¨Ê±£¨Í¨¹ýÔÚFORM¡¡Òýµ¼ÃüÁîµÄMETHOD¡¡±ê¼ÇÄÚ²¿ÉèÖ㬵«ÕâÔÚÕâÀïÓÉÊý¾Ý·¢Ë͵ķ½Ê½¿ØÖÆ£©£¬¡¡
Web¡¡·þÎñÆ÷»áÊÕ¼¯Î»ÓÚ¡°£¿¡±ºóÃæµÄËùÓÐÐÅÏ¢£¬²¢°ÑËüÃÇÖÃÈë»·¾³±äÁ¿QUERY_STRING¡¡£¨²éѯ×Ö´®£©Àï¡£ËùÒÔΪ¡¡
Á˶ÁÈ¡ÄÇЩÐÅÏ¢£¬±ØÐë»ñµÃQUERY_STRING¡¡µÄÖµ£¬ÕâÊÇÓñê×¼µÄC¡¡¿âº¯Êý¡¡getnv£¨£©Íê³ÉµÄ¡£ÔÚ¡¡main£¨£©ÖУ¬×¢Òâ¡¡
¶ÔQUERY_STRING¡¡µÄ½âÎöÓжàôÈÝÒ×£ºÖ»Ðè°ÑËü´«µÝ¸øÓÃÓÚCGI_vector¡¡¶ÔÏóµÄ¹¹½¨Æ÷£¨ÃûΪquery£©£¬Ê£Ï¡¡
µÄËùÓй¤×÷¶¼»á×Ô¶¯½øÐС£´ÓÕâʱ¿ªÊ¼£¬ÎÒÃǾͿÉÒÔ´Óquery¡¡ÖÐÈ¡³öÃû³ÆºÍÖµ£¬°ÑËüÃǵ±×÷Êý×é¿´´ý£¨ÕâÊÇ¡¡
ÓÉÓÚoperator£§£§ÔÚvector¡¡ÀïÒѾ¹ýÔØÁË£©¡£ÔÚµ÷ÊÔ´úÂëÖУ¬´ó¼Ò¿É¿´µ½ÕâÒ»ÇÐÊÇÈçºÎÔË×÷µÄ£»µ÷ÊÔ´úÂë·â¡¡
×°ÔÚÔ¤´¦ÀíÆ÷Òýµ¼ÃüÁî#if¡¡defined£¨DEBUG£©ºÍ#endif£¨DEBUG£©¡¡Ö®¼ä¡£¡¡¡¡
ÏÖÔÚ£¬ÎÒÃÇÆÈÇÐÐèÒªÕÆÎÕһЩÓëCGI¡¡ÓйصĶ«Î÷¡£CGI¡¡³ÌÐòÓÃÁ½¸ö·½Ê½Ö®Ò»´«µÝËüÃǵÄÊäÈ룺ÔÚ¡¡GET¡¡Ö´ÐÐÆÚ¡¡
¼äͨ¹ýQUERY_STRING¡¡´«µÝ£¨Ä¿Ç°ÓõÄÕâÖÖ·½Ê½£©£¬»òÕßÔÚPOST¡¡ÆÚ¼äͨ¹ý±ê×¼ÊäÈë¡£µ«¡¡CGI¡¡³ÌÐòͨ¹ý±ê×¼Êä¡¡
³ö·¢ËÍ×Ô¼ºµÄÊä³ö£¬Õâͨ³£ÊÇÓÃC¡¡³ÌÐòµÄ¡¡printf£¨£©¡¡ÃüÁîʵÏֵġ£ÄÇôÕâ¸öÊä³öµ½ÄÄÀïÈ¥ÁËÄØ£¿Ëü»Øµ½ÁËWeb¡¡
·þÎñÆ÷£¬ÓÉ·þÎñÆ÷¾ö¶¨¸ÃÈçºÎ´¦ÀíËü¡£·þÎñÆ÷×÷³ö¾ö¶¨µÄÒÀ¾ÝÊÇcontent¡type¡¡£¨ÄÚÈÝÀàÐÍ£©Í·Êý¾Ý¡£ÕâÒâζ¡¡
׿ÙÈç¡¡content¡type¡¡Í·²»ÊÇËü¿´µ½µÄµÚÒ»¼þ¶«Î÷£¬¾Í²»ÖªµÀ¸ÃÈçºÎ´¦ÀíÊÕµ½µÄÊý¾Ý¡£Òò´Ë£¬ÎÒÃÇÎÞÂÛÈçºÎÒ²¡¡
ҪʹËùÓÐCGI¡¡³ÌÐò¶¼´Ó¡¡content¡type¡¡Í·¿ªÊ¼Êä³ö¡£¡¡¡¡
ÔÚÄ¿Ç°ÕâÖÖÇé¿öÏ£¬ÎÒÃÇÏ£Íû·þÎñÆ÷½«ËùÓÐÐÅÏ¢¶¼Ö±½Ó·´À¡»Ø¿Í»§³ÌÐò£¨Ò༴ÎÒÃǵijÌÐòƬ£¬ËüÃÇÕýÔڵȺò¡¡
¸ø×Ô¼ºµÄ»Ø¸´£©¡£ÐÅÏ¢Ó¦¸ÃÔ·â²»¶¯£¬ËùÒÔcontent¡type¡¡ÉèΪtext/plain¡¡£¨´¿Îı¾£©¡£Ò»µ©·þÎñÆ÷¿´µ½Õâ¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡572¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡574¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¸öÍ·£¬¾Í»á½«ËùÓÐ×Ö´®¶¼Ö±½Ó·¢»¹¸ø¿Í»§¡£ËùÒÔÿ¸ö×Ö´®£¨Èý¸öÓÃÓÚ³ö´íÌõ¼þ£¬Ò»¸öÓÃÓڳɹ¦µÄ¼ÓÈ룩¶¼»á¡¡
·µ»Ø³ÌÐòƬ¡£¡¡¡¡
ÎÒÃÇÓÃÏàͬµÄ´úÂëÌí¼Óµç×Óº¯¼þÃû³Æ£¨Óû§µÄÐÕÃû£©¡£µ«ÔÚCGI¡¡½Å±¾µÄÇé¿öÏ£¬²¢²»´æÔÚÎÞÏÞÑ»·¡ª¡ª³ÌÐò¡¡
Ö»ÊǼòµ¥µØÏìÓ¦£¬È»ºó¾ÍÖжϡ£Ã¿´ÎÓÐÒ»¸öCGI¡¡ÇëÇóµÖ´ïʱ£¬³ÌÐò¶¼»áÆô¶¯£¬¶ÔÄǸöÇëÇó×÷³ö·´Ó¦£¬È»ºó×Ô¡¡
Ðйرա£ËùÒÔCPU¡¡²»¿ÉÄÜÏÝÈë¿ÕµÈ´ýµÄÞÏÞξ³µØ£¬Ö»ÓÐÆô¶¯³ÌÐòºÍ´ò¿ªÎļþʱ²Å´æÔÚÐÔÄÜÉϵÄÒþ»¼¡£Web¡¡·þ¡¡
ÎñÆ÷¶ÔCGI¡¡ÇëÇó½øÐпØÖÆʱ£¬ËüµÄ¿ªÏú»á½«ÕâÖÖÒþ»¼¼õÇáµ½×îµÍ³Ì¶È¡£¡¡¡¡
ÕâÖÖÉè¼ÆµÄÁíÒ»¸öºÃ´¦Ê