DOUG LLOYDï¼æ以å¨æåç è¦é »PHPèªæ³ï¼ æåè«äºå¾å¤éæ¼å¦ä½PHP å¯ä»¥å¨å½ä»¤è¡ä¸ä½¿ç¨ éè¡çæ¹å¼ç¨åº æåé常çæçC. ä½æ£å¦æä¹æå° å¨è©²è¦é »ï¼PHP æåéç¼ å¯¦ç¾ç¶²çµ¡ç·¨ç¨ï¼ç¶²ç«ã æ以ï¼å¨éåè¦é »æå è¦è«è«æåå¦ä½ å¨Webéç¼ç°å¢ä¸ä½¿ç¨PHPã æåç¥éï¼å·²ç¶å¾ æåçè¦é »å¨HTMLï¼ è©²ç¶²ç«å»º åºäºä¸å¥HTMLæ¨ç±¤ç å³èªç¾©å®ç¾© 網é ççµæ§ã ä½ç¶²ç«æ¯ 建æç´HTML å¾ä¸åé常çè¦ï¼ é常å´éçéå¶ã 並說ææ¤éå¶ï¼ è®æåä¾èæ ®ä¸ã æ以ç¾å¨ææ³å»ºç«ä¸å網é å³ï¼æ¯ç¶ç¨æ¶è¨ªåå®ï¼ å®çµ¦äºæç®åç æéå¨é¦¬è©è«¸å¡å·åæ©å¸ï¼ 顯示å®çææ°åéã å¦ææç¾å¨åéä¸æ¬å©ï¼ æå¯è½æ說é樣çäºæ ã ç¶åæéCambridge--æ以ææ HTMLæ¨ç±¤ï¼é æ¨ç±¤ï¼æ¨é¡æ¨ç±¤ï¼ 身é«tags--ç¶å æéå¨åæ©çº14:08ï¼ æå°åºè»ç¨æéã å¦æå®ç¾å¨14:09ï¼14:09ï¼æç¼çä»éº¼ï¼ 好äºï¼å°ç®åçºæ¢ï¼ä½¿ç¨HTMLï¼ææ å»ä¸åå®æ´æ¹çº14:09ã åä¸åéå¾ï¼ æå¿ é å次é²è¡æ´æ¹ã åä¸åéå¾ï¼ æå¿ é å次é²è¡æ´æ¹ã æ£å¦ä½ å¯ä»¥æ³åï¼éæ¯ å¯è½æ¯æç³ç³çå·¥ä½ä¸æ·ã ä½ æ¯ç«é·ç網é ï¼ æ¯ä¸åéï¼ä¸å¤©24å°æï¼ æ¨éè¦ééæ´æ°ç¶åæé æåæéçºtime.htmlåæ¹è® 代碼åªæ¯ç段說ç ç¶åæé以å°æååéã éå¯è½ä¸æ¯ä¸åé常 å¾å¥½å°å©ç¨æåçè³æºï¼ 人é¡åè¨ç®ã 網ç«é½æ¯HTML æ¯å®å ¨éæ çã æ¨å¯ä»¥æ´æ°çå¯ä¸éå¾ å §å®¹ï¼æ£å¦æåæçå°çï¼ æ¯æåæééäºæº æ件ï¼ç·¨è¼¯å®åï¼ä¸¦ä¿åå®åã ç¶å¾ç¶ç¨æ¶ å·æ°é é¢ï¼ æ訪å該é é¢çç¬¬ä¸ ä¸æ¬¡ï¼ä»åå°ç²å¾çææ°å §å®¹ã ä½å å å çºæåå·²ç¶ æå編輯å®ã å¦ææåéå§æä¸äºPHPå¨é£è£¡ï¼ æåç代碼å¯ä»¥å¾å°å¾å¤æ´éæ´»ã æåå¯ä»¥æ辦æ³çºæåç網é æ¯åæ çï¼ææ´æ°èªå·±ï¼ èä¸éè¦æåå¯æ 網ç«ç®¡çå¡å¨åé¢çä¾å è¦æåæ´æ°çæ±è¥¿ã ä»åå¯ä»¥èªåå°åå°éä¸é»ã æåæ²æä»å ¥ã æåå¯ä»¥ç¡åå®ç©©è¦ºã éå¯è½æ¯ä¸ä»¶å¥½äºï¼å¦æ ä½ åäºå¾å¤ç網絡編ç¨ã å æ¤ï¼å¨CS50 IDEä¸ï¼æåéè¡ Webæåå¨Apacheçå«ã éæ¯ä¸åå¾å¸¸ç¨çï¼ éæºWebæåå¨ç³»çµ±ã è©²ç³»çµ±å ·æ è½åä¾è§£é PHPï¼éå°æ¯é常æç¨ç話 ä½ æ³è¦åçä»»ä½PHPç·¨ç¨ã èå¨CS50 IDEï¼æåæä¸åå½ä»¤ 使éåå¾å®¹æåå°ï¼ apache50ååã ç¶å¾é£æ¢æç· è·¯å¾ï¼ä»¥æç·ï¼æç· ç®éï¼éåªæ¯ä¸åé常æ®éçæ¹æ³ 說æä½ å¨é裡æå®çå §å®¹ æ¯ä¸åè·¯å¾å°ç¹å® ç®éä½ æ³æ¯æ ¹ ç¾å ´ï¼ææ ¹é ï¼ ææ件夾å¾æ¨çWebæåå¨ å°éå§æª¢æ¥æ件åæå ä»åå»èª°è¦æ±ä»åç客æ¶ã å æ¤ï¼è®æåçªç¶éä¾CS50 IDEï¼åªæ¯çºäº åè¨´ä½ ï¼çå¿«ï¼æ¯å¦ä½å·¥ä½çã æ以ï¼å¨é裡CS50 IDEï¼æå¨ä¸å ç®éä¸åçºé±é¶é»ä¹ã æætwo--ææ å·è¡ä¸ålså½ä»¤åª ä¸é¢åè¨´ä½ ï¼ææ å¨éè£¡å ©åç®éï¼PHPï¼ éæ¯æç¨å¨çµæ件ä¸ç å¨PHPèªæ³çè¦é »ï¼ç¶å¾PHPç網ç«ï¼ éæ¯ä¸çµæ件ï¼æ æ³å¨éåè¦é »ä¸ä½¿ç¨ã ææ³å ä¸åWebæåå¨å¯¦ä¾ èPHPçWebæ件夾ä¸çå §å®¹ å çºæ件被端ä¸ä¾ã æ以ï¼æ該æéº¼è¾¦ï¼ æè¦å»åapache50空é éå§ï¼PHP空éï¼ç ´æè網絡ã éå°±æ¯ç®éçè·¯å¾ å¾é£è£¡æç®åã ç¶å¾ï¼ææ²åè»ã å®æåä¸å æ±è¥¿ä¸é»å¨é裡ã ç¶å¾å®æèªªï¼ Apacheçæåååã æ¨ç網ç«ç¾å¨å¯ä»¥at--å åæå°±æ¯ç¶²åç網ç«ã æ以ï¼æ該æéº¼è¾¦ï¼ æè¦å¿«éè¤è£½éä¸é»ã èæè¦å»éup--å ææ縮å°ä¸é»é»é裡 - æè¦å»éæ ä¸åæ°çé¸é å¡ç覽å¨ã èæè¦è¨ªå該網åã æè¦æ²åè»ã éå°å è¼ã ææå次縮å°ã èä¸æåå¯ä»¥å¨é裡çå°çæ¯ æçPHP網é ç®éçå §å®¹ã æ以ï¼ç¾å¨åºæ¬ä¸æ¯å¾ç¼ç å¨é裡ï¼CS50çIDEæçå¯¦ä¾ å¨éäºæ件ä¸æä¾é·é ä»»ä½äººèª°è¦æ±ä»åã èéçèª²ç¨ é段è¦é »ä¸ï¼æåå°æ´çç ççéäºä¸å å¨ä¸ä¸æä¸ä¸åçæ件ã è¦æ¸¬è©¦ä½ çApache æåå¨å·¥ä½æ£å¸¸ï¼ å ¶é常æ æ¯é種æ æ³å¨CS50 IDEä¸ï¼ ä½å¦æä½ é樣åæ´æ®éï¼ ä½ éå§å»ºç«èªå·±çç¶²ç« æåå¨ï¼æä¸åçæ£ç ä¸åå¡é¿ç模æ¬ï¼ âä¸çä½ å¥½âï¼ä¹å°±æ¯é常 ç¨æ¼PHPçWebéç¼ã éæ¯æä¸åæ件 ç±ç¼åéå代碼 - ä¸ PHPçåé符è¨ç½®PHPçä¿¡æ¯ï¼ æ¬èï¼åèä¹éã éåºæ¬ä¸æ¯ä¸åç¹æ®ç PHPå½æ¸ï¼åè¨´ä½ ä»éº¼çæ¬çPHPæ¨æ£å¨éè¡ã å æ¤ï¼å¨CS50çIDEï¼ææ å¯ç¨çæ件åªæ¯ 給大家å±ç¤ºä¸ä¸éææ¯ä»éº¼æ¨£åã æ以ï¼æçæçç´¢å¼ å¾æçPHP實ä¾ã æçApache實ä¾éè¡ PHPç網ç«çå §å®¹ã ææä¸åæ件ï¼é裡å«åinfo.phpçã æè¦é»æå®ï¼ç¸®å°ã éæ¯ä½ å°æçºæ樣 ççï¼æ¼äº®å¤äºã éåªæ¯å訴æï¼ æçApacheæåå¨çå·¥ä½ã éæ¯ï¼å¾é¡¯ç¶ï¼å¨ çæ¬çPHPæåå 競é¸ã éæ¯æ模æ¬çâhello worldâã æ以æç¥éäºæ æ¯å¯æä½çã å æ¤ï¼æå好å»ã æåå¯ä»¥å¾é裡åºç¼ã å æ¤ï¼è®æåéæº«é£ æéä¾åæå è«å°èæåå¯æçç«é· 誰æ¾ä¸æ·æ´æ°é é¢ã éå¯è½æ¯æ樣ç修復 ææ³å¯¦ç¾çæ±è¥¿ 使網ç«ç®¡çå¡æ² å¿ é ä¸æ·æ´æ°çæéã å®æåªæ¯æé» èªåç¼çã ä¸ä¸ä¾ï¼HTMLï¼å®ç é常ç¸ä¼¼ï¼ä½æä¸åä¾å¤ã ä½å¨é裡ææä¸äºPHPå¨é é¨ã ææï¼é¡¯ç¶ï¼ç¨±é åè½date_default_timezone_setã æåä¸è«è«ææ å¨CS50éäºåè½ï¼ å çºPHPæå¯è½ æ¸ä»¥è¬è¨ã éå¯è½æ¯ä¸åæ¯ç¹ç èªå¼µï¼ä½å®å¯è½ä¸æ¯ã å®æ大éçå §ç½®å½æ¸ã æ以éæ¯ä¸ååè½æ顯 è¨ç½®æçæåçºç¾å/æ±é¨ï¼ éæ¯æçæå ç®åå¨è£½ä½éé¨å½±çã ç¶å¾ï¼ææé»è©±å° å½æ¸èª¿ç¨ï¼æ¥æã èä¸ï¼å¾æ顯ï¼æåå²ç HISä¸ç¨®å«ï¼æéã æ以ï¼éæ¯æ麼åäºåï¼ å¥½äºï¼åºæ¬ä¸ä»éº¼ ç¼ççäºæ æ¯ï¼æå¨æé»è©± ä¸äºæåå¨ï¼æ¯è¦ å訴æç¾å¨æ¯ä»éº¼æåäºã èæå°å ¶è½æçºä¸ç¨®æ ¼å¼ æï¼åï¼ç§ã å ¶åå æ¯å¤§å¯«çHæ¯é樣ç æ¯è¦çµ¦æ24å°ææéï¼èä¸æ¯12 å°æçæéï¼éå°æ¯å°å¯«å°æã èæåªæ¯åå²ç å¨ä¸ååçºè®éï¼æéã 使PHPç第äºè¡ é£è£¡ï¼èª¿ç¨çåè½ï¼ è¿ä»çºæ¢ï¼å¨åé ä¸äºå符串ï¼éæ¯ è¦çµ¦æçæ¥æï¼å æéï¼åä¸å å ¶ä»ä¿¡æ¯ã éæ第ä¸ååæ¸ï¼å³HISï¼ åªæ¯æåéè¦çµæé¨å æéå¿å¨éåä¾åä¸ï¼ éæ¯å°æï¼åéåç§ã æ以éæ¯ææéåäºã æ以ï¼æåå²å¨ä¸åè®é$æéã åå¾ä¸ç æåºå±¤é£è£¡ï¼æ æ簡寫 æå°åºç¶åæéã æ以æåªæ¯è¦æå° åºç¶åæéæ¯ä»éº¼ã å æ¤ï¼è®æåä¾ççé CS50 IDEï¼ççæåç¾å¨æéº¼æ¯ ä¿å該ç«é·äºå¾å¤éº»ç ©ã 好äºï¼æ以æå¨é裡å次 åå°æ ¹ç®é æçApache實ä¾ã æé裡æä¸ååçºtime.phpã æåªæ¯è¦é»æçã ææåä¸æ»¾åï¼å çº æåå¨å¾é æ¾å¤§ã ç®åçæéæ¯14é»20å34ç§ã æ以ï¼æåçæéï¼ åéåç§ã æå¯ä»¥å·æ° é é¢ï¼ä¸¦ç²å¾æ°çæéã --41ã æè¦å»å·æ°é é¢ ä¸¦ç²å¾æ°çæéï¼44ï¼46ï¼47ã æ以ï¼æ顯ç¶ä¸æ¯ æ¹è®ä»»ä½äºæ æèªå·±ã æå¨é裡å·æ°é é¢ã æ以ï¼æä¸è½åå°é£è£¡ç·¨è¼¯å®ã æåä½ ä¿èï¼æä¸ æä»éº¼å黨 誰æ£å¨ç·¨è¼¯çæ件 以æçå義就å¨èº«éã æåªæ¯ä½¿ç¨PHPå½æ¸ï¼ æéï¼çæçæéï¼æ èªåã æ以ï¼å³ä½¿æç¡èäºï¼ åæçWebæåå¨æ£å¨éè¡ï¼ 誰訪å該網é ä»ç¶æ¯ç¨æ¶ è¦å¾å°å®å ¨ç¸åçç¶åæéã æ以ï¼éæ¯ç¸ç¶ä¸é¯çã æåäºæç網ç«æ´å ·æ´»å ææ²æ太å¤çPHP代碼ã éåªæ¯å ©è¡ä»£ç¢¼ï¼ç¶å¾ printèªå¥çä¸é»é»ã èä¸æå·²ç¶æä¸å æ´å åæ çç¶²ç« æ¯ç¬¬ä¸åä¾åä¸æåçå°äº å¨è¦é »çéé ã å æ¤ï¼å¾PHPèªæ³è¦é »å顧 該PHP解éå¨éè¡æ æåçç¨åºï¼å®æ忽ç¥ä¸å éä¸æ¯PHPçåéç¬¦å §ï¼ åäºåºä¾ã å¨è©²ç¤ºä¾ä¸ï¼æ±è¥¿ä»éº¼ å®è¢«ååºäºHTMLã éæå³èæå¯ä»¥ç¾å¨ é»ç¶´HTMLåPHPå¨ä¸èµ·ã ç±æ¼ç¿»è¯åªæ 忽ç¥HTMLååé¢ä¸æå®è¼¸åºã éæ¯å¾å¥½çï¼å°ä¸å°ï¼ å çºææ¨æ¸¬ï¼ å¨ä¸å¤©çµææï¼ ææ³æçç¶²ç« çHTMLæ§æã 使å¾ä»»ä½webç覽å¨å¯ä»¥è§£é å®ï¼æç解é é¢ä¸çHTML 並使å®çæ±è¥¿ï¼æå 實éä¸å¯ä»¥ç解çºäººé¡ã èæåªè½ç¨PHP æç網ç«çé¨å å¨éè¦æ´»åï¼éè¦æ ææ±è¥¿ä¸æ·æ´æ°ã æè¿°éæ ä¿¡æ¯ å¯ä»¥ä¿æä¸è®ã 好äºï¼éå¾å¥½ã ä½æ¯ï¼çºä»éº¼è¦é樣åå¢ï¼ çºä»éº¼æææ··å使ç¨HTMLåPHPï¼ æå¯ä»¥åªæå°åºææç HTMLï¼ä½¿ç¨PHPæå°åè½ã æçºä»éº¼ä¸é樣åå¢ï¼ æ³æ³çä¸ç§éã çºä»éº¼ï¼ç¶æå¯ä»¥åªæå°out--æ å¯è½æPHPçç·æ¢ï¼åªæ¯èªªï¼ æå°HTMLæ¨è¨ï¼æå°é ã æçºä»éº¼ä¸é樣åå¢ï¼ çºä»éº¼ææ··åPHPåHTMLåï¼ å¥½å§ï¼å¦æä½ èªçº å®ä¸ç§éã PHPç解éæ ä¾è§£éå®èªçºã æ以ï¼éå°æ è¦å·è¡ç代碼è¡ã æå°åºçHTMLã æå°åºéæ¾çé æ¨è¨ã æå°åºéæ¾çæ¨é¡æ¨ç±¤ã éå°æ å·è¡å解é 該æ¹å¼çæ¯ä¸æ¥ã çºä»éº¼ä¸åªæ¯è® 解éåªæ¯æ©é£¾ äºæ ä¸æç½ ä¸¦èªååå°éä¸é»ï¼ éå°ç¯çæå¾å¤æé æ··åæçHTMLåæçPHPå¨ä¸èµ·ã æ以éå°±æ¯çºä»éº¼æåä¸é樣å åªéæéPHPå®ç符 ç¶å¾åªéæå°åºæ´å æå網é çå §å®¹ï¼ä¸å巨大çPHP 調ç¨çåè½ï¼æå°ï¼ç¶å¾ ééPHPçåé符ï¼æå就大ååæäºã æ以éå°±æ¯çºä»éº¼æåå°å®åæ··åå¨ä¸èµ·ã å°ç®åçºæ¢ï¼æåéæ²æçå°å¤ªå¤ç å¾ä¸è¬çPHPèªæ³çå·®ç°ã å®æ¯é常簡å®çã æåå·²ç¶çå°äº åèï¼å¹³ççã æåçå°äºä¸äºæ°çå½æ¸èª¿ç¨ï¼ ä½æ²æä»éº¼è±å¨çäºæ ã æåä¹è¨±åçäºæ ä¸åå°ç¥¨åã å¦ææåæ³å³éçä¿¡æ¯ ä¸åçPHPæ件ä¹éï¼ æ以ï¼ä¹è¨±ç¨æ¶å¯ä»¥ æ交信æ¯çµ¦æã ç¶å¾æå¯ä»¥åä¸äºäºæ å®å¦ä¸é ä¸ã å æ¤ï¼PHPææ¯æ æè¬è¶ ç´å ¨ç è®éï¼éè½èµ·ä¾ç¸ç¶çæ£ã ä»åççåªæ¯ 巨大çéè¯æ¸çµ è½å¤ 幫å©å¯¦ç¾éå è·¯éçåè½ PHPæ件ä¹éçä¿¡æ¯ å¨æåç¾æçWebæåå¨ä¸ã å ¶ä¸ç第ä¸åè¶ ç´ å ¨å±è®é被稱çº$ _GETã èä¸å®å¯è½æ¯ æç°¡å®ççââ解ã è$ _GETï¼æç¼çä»éº¼ï¼ 好äºï¼åºæ¬ä¸ï¼ç¨æ¶ è¦è¼¸å ¥é¡å¤çä¿¡æ¯ å¨æåçURLççµå°¾ã èç¡è«ä»åè¼¸å ¥ï¼åè¨ å®çæ ¼å¼ä»¥ç¹å®çæ¹å¼ 稱çºæ¥è©¢ä¸²ï¼éå å æ¯ ä¸çµéµå¼å°åé¢ ç±ï¼ç¬¦èã éäºéµå¼å°æ åå²å¨$ _GETéè¯æ¸çµã èå¾æåçè¦é » PHPèªæ³ï¼æåç¥é å¦ä½ä¸èµ·å·¥ä½ éè¯æ¸çµäºã å æ¤ï¼é裡æ¯ä¸åä¾å ä¸äºPHPï¼å¨é£è£¡ä¹è¨±æ æåææéµå¼å° URLä¸æä¾çç¨æ¶ã æ以ï¼ææææéPHPçåé符ã ææä¸åforeach循ç°ã æå°é¢çè¶ ç´è¿ä»£ å ¨çé£å稱çº$ _GETã èä¸æå¸æè½å¤ åè å ©è çéµåå¼ã èæåªæ¯å°å®åæå° åºï¼æ¯ä¸åä¸æ顯 å¨é裡å®èªå·±ç段è½æ¨è¨ã ææå°äºä¸äºHTML åå §æçå¼ çéµåå¼å°äºèªå¥ã å æ¤ï¼è®æåä¾ççå¦ä½ 實éä¸å¨æåçIDEå·¥ä½ã ä¹è¨±éå°å¹«å© 說æä¸é»é» ä»éº¼GET實éä¸å¨åä»éº¼ã æ以ï¼æåå°æçWebæ ¹ç®éã æææ¾å¤§ä¸ é»é»åæ¨å±ç¤º ææä¸å稱çºæ件ï¼get1.phpã å æ¤ï¼è®æåé»æget1.phpã èä¸ææ²æçå°ä»»ä½å §å®¹ã éæ¯å¥æªçï¼å°ä¸å°ï¼ å¯ï¼ä¸æ¯çç實éã å çºææ²ææä¾ ä»»ä½å¨URLä¸ã æè¦å»get1.phpï¼ä½æ æ²ææä¾ä»»ä½éµå¼å° ä½çºæçæ¥è©¢å符串çä¸é¨åã å æ¤ï¼è®æåæ·»å ä¸åæ¥è©¢å符串 ççéåæ件å¯ä»¥åå°ã é¦å æ¥è©¢åç¬¦ä¸²æ¨ åªééµå ¥åèã é£éº¼ä¹è¨±ææ說çåå=éæ ¼ - å¹´= 2015å¹´ã ç¶å¾ï¼æææEnteréµã ç¾å¨å¯ä»¥çå°ç¼çäºä»éº¼ã æä»ç¶å¨get1.phpã ä½ç¾å¨æå·²ç¶æä¾ éµå¼å°ï¼æ æå°åºä¾çèªå·± paragraph--å稱ï¼Doug--å¹´ï¼2015å¹´ã éä¹æ£æ¯ä»£ç¢¼ï¼æååªæ¯ åæçå°çå¹»ççã å¦æææ³ä¹è¨±åæ·» éµå¼å°ï¼èé¡= CS50ã ç¾å¨ææå¦ä¸åééµå¹å¼ 該éåçå°å·åºå° ç¶æå次é溫URLã ç¾å¨ï¼ä¹è¨±éä¸æ¯ æ ¼å¼åçé常好ã æ以ï¼ææå¦ä¸åçæ¬get.phpçã éæ¯get2.phpã å¨æ¤å·® ä¸åæ¯æçCSSæä»¶ï¼ å®æ ¼å¼åæ±è¥¿ å¤ä¸é»å¾å¥½å°é©åæã éä¹è¨±ä¸æ¯æ ç¾éºçCSSçä¸çã ä½å®é樣åçå¦ä¸ç¨®æ¹å¼ã æ以ï¼æä»ç¶å¯ä»¥è¨ªå 使ç¨$ _GETæçè®éã å¨é種æ æ³ä¸ï¼æåªæ¯ç¨® 使CSSå¤ä¸é»è±å¨ã å¦ææåçªç¶éä¾ æçIDEä¸ç§éï¼ ææåè¨´ä½ å¨æçPHPç¶²ç« ç®éå¨é裡ï¼get2.phpã æåå°å¨é裡æéå®ï¼ä¸äºHTMLã 顯ç¶ï¼æéæ¥å ¥ CSSæ件æå¨èªªä»éº¼ã ææé表çæ¨ç±¤ã ç¶å¾é裡æ¯æçforeach循ç°ã é裡æ¯ä»éº¼æ 顯示ä¹åçå¹»ççã å¯ä¸ä¸åçæ¯æ æéåéµåå¼CSS é åæ¯æç³è«å°å®ã ä½æ¯ï¼éæ¯æåçï¼æ¯æ è·¨$ _GETè¿ä»£ä¾ç²åææ çéµå¼å°ã èææå°åºä¾çè¡¨æ ¼ã èä¸ï¼å¾æ顯ï¼ææ ¼å¼åéµ ä»¥ä¸ç¨®æ¹å¼ï¼è