|
論學習PHP的方法與技巧分析 摘要:php學習中要主要的特性以和學習php必須要了解的知識 初學者應該先掌握幾段代代碼。 一、引言 1、PHP,一個嵌套的縮寫名稱,是英文超級文本預處理語言(PHP:Hypertext Preprocessor )的縮寫。PHP 是一種 HTML 內嵌式的語言,是一種在服務器端執(zhí)行的嵌入HTML文檔的腳本語言,語言的風格有類似于C語言,現在被很多的網站編程人員廣泛的運用。PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創(chuàng)新的語法。它可以比 CGI 或者 Perl 更快速的執(zhí)行動態(tài)網頁。用PHP做出的動態(tài)頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標記的CGI要高許多;與同樣是嵌入HTML文檔的腳本語言JavaScript相比,PHP在服務器端執(zhí)行,充分利用了服務器的性能;PHP執(zhí)行引擎還會將用戶經常訪問的PHP程序駐留在內存中,其他用戶再一次訪問這個程序時就不需要重新編譯程序了,只要直接執(zhí)行內存中的代碼就可以了,這也是PHP高效率的體現之一。PHP具有非常強大的功能,所有的CGI或者JavaScript的功能PHP都能實現,而且支持幾乎所有流行的數據庫以及操作系統(tǒng)。 PHP的特性包括: 開放的源代碼:所有的PHP源代碼事實上都可以得到。 PHP是免費的。 php的便捷性 : php十分便捷,學習簡單 基于服務器端:由于PHP是運行在服務器端的腳本,可以運行在UNIX、LINUX、WINDOWS下。 嵌入HTML:因為PHP可以嵌入HTML語言,所以學習起來并不困難。 簡單的語言:PHP堅持腳本語言為主,與Java和C++不同。 效率高:PHP消耗相當少的系統(tǒng)資源。 圖像處理:用PHP動態(tài)創(chuàng)建圖像 面向對像:在php4,php5 中,面向對象方面都有了很大的改進,現在php完全 可以用來開發(fā)大型商業(yè)程序。 PHP 相對于其他語言,編輯簡單,實用性強,更適合初學者。 3、 學習php必須要了解的知識 (一) PHP簡介 (二) PHP和ASP(ASP培訓 )、Java(Java教程 Java培訓 )等一樣, 是一門常用于Web編程的語言,它能運行在Windows、linux(linux教程 linux培訓 )等絕大多數操作系統(tǒng)環(huán)境中,常與開源免費的 Web服務Apache和數據庫Mysql配合使用于Linux平臺上(簡稱 LAMP),具有最高的性價比,號稱“Web架構黃金組合”。在與其他同類編程語言的比較中,PHP具有開發(fā)速度快、運行效率高、安全性好、可擴展性強、開源自由等特點;而回顧PHP近10年來的發(fā)展過程、展望未來互聯網行業(yè)的發(fā)展趨勢,我們可以得出結論:PHP的發(fā)展勢頭不可阻擋,必將成為未來WEB開發(fā)領域的主流技 (三) PHP技術發(fā)展狀況 (1)全球5000萬互聯網網站中,有60%以上使用著PHP技術; (2)2010年PHP從業(yè)人數將增加42%,遠超JAVA的13%和.NET的24%; (3)PHP是全球五大最受歡迎的編程語言之一,并且是唯一入選的腳本語言; (4)國內80%以上的動態(tài)網站使用PHP開發(fā) (5)AlexaTOP500中國網站排名,有394家使用了PHP技術,比例為78.8%。 (三)php程序員職位要求 (1)計算機相關專業(yè),1年以上PHP、SQL網站開發(fā)經驗,有大型網站開發(fā)經驗者優(yōu)先; (2)精通PHP程序開發(fā),熟悉PHP網站框架,熟練Web技術,DIV、CSS、Javascript、XML、Ajax等; (3)熟練Dreamweaver、Flash、Photoshop等網頁制作(網頁設計培訓 )軟件; (4)能夠熟練配置Apache、php、mysql環(huán)境,了解并熟悉CMS開源程序; (5)熟練掌握MySQL、SQL Server數據庫,熟練使用SQL語言,對存儲過程、觸發(fā)器有較深的了解; (6)擁有網站SEO(SEO(搜索引擎優(yōu)化)培訓 SEO教程 )能力; (7)具備良好的代碼編程習慣及較強的文檔編寫能力, 有很好的團隊合作能力和責任心;思維嚴密,上進心強,能吃苦耐勞,良好的執(zhí)行能力,對互聯網充滿熱情。 (四)php程序員做什么干什么? (1)負責PHP網站開發(fā)及維護。 (2)完善網站功能模塊的開發(fā)與維護。 (3)負責網站模板、網頁設計及網頁制作。 (4)對網站數據庫維護、升級、開發(fā),對網站進行SEO優(yōu)化及推廣。 (5)參與windows、Linux系統(tǒng),Apache服務器,MySql數據庫的架設,優(yōu)化及其運維工作。 php程序員做什么干什么?看過上文的朋友心中應該有答案了。php程序員的工作$currentDate += (60 * 60 * 24)) //當前時間加上1天 { /* ** 打印時間名稱 */ print("" . date("l", $currentDate) . "
"); } print("
"); 函數的簡單調用: function printBold($inputText) //定義function printBold() { print("" . $inputText . ""); ////打印$inputText} print("這行沒有加重~
"); //直接打印字符串 printBold("這行加重了~~~"); //調用function printBold()函數 print("
"); print("這行沒有加重~
"); //直接打印字符串 有返回值的函數function makeBold($inputText) //定義function makeBold()函數{ $boldedText = ""; $boldedText .= $inputText; $boldedText .= ""; return($boldedText); //返回變量$boldedText } print("這行沒有加重~~~
"); //直接打印字符串 print(makeBold("這行被加重了~~~") . "
");//調用function makeBold()函數 print("這行沒有加重~~~
"); //直接打印字符串 有默認參數的函數 function printColored($Text, $Color="black") //定義function函數 { print("$Text"); //獲取字符串的內容和顏色 } printColored("這是黑顏色的字~"); //調用function函數 print("
"); printColored("這是藍顏色的字~", "blue"); //調用function函數 print("
"); 用的規(guī)算法判斷是否是整數 function checkInteger($Number) { if($Number > 1) { /* 整數減1仍然是整數 */ return(checkInteger($Number-1)); } elseif($Number < 0) {/* 對于一個負數,*/ /* 可以分析它的絕對值 */return(checkInteger((-1)*$Number-1));//取絕對值,把負數按整數分析 , else {if(($Number > 0) AND ($Number < 1)) { return("當然不是"); } else {/* 0 和 1 是整數 */ /* 根據相關數學定義 */return("是的"); }} } print("0是整數嗎," . checkInteger(0) . "
"); print("7是整數嗎, " . checkInteger(7) . "
"); print("3.5呢," . checkInteger(3.5) . "
"); print("那么-5呢," . checkInteger(-5) . "
"); print("還有-9.2," . checkInteger(-9.2) . "
"); 初始化數組 $monthName = array(1=>"January", "February", "March",//初始化一個數組 "April", "May", "June", "July","August","September", "October", "November", "December"); “5月”是 $monthName[5] 。
");//打印數組中的第6 print(" 英語的 個元素 獲取數組中的元素 $monthName = array( /*定義$monthName[1]到 $monthName[12]*/1=>"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December",/*定義 $monthName["Jan"]到 $monthName["Dec"]*/ "Jan"=>"January","Feb"=>"February ", "Mar"=>"March", "Apr"=>"April", "May"=>"May", "Jun"=>"June", "Jul"=>"July", "Aug"=>"August", "Sep"=>"September", "Oct"=>"October", "Nov"=>"November", "Dec"=>"December", /*定義$monthName["Jan"]到$monthName["Dec"]*/ "January"=>"January", "February"=>"February", "March"=>"March", "April"=>"April", "May"=>"May", "June"=>"June", "July"=>"July", "August"=>"August", "September"=>"September", "October"=>"October", "November"=>"November", "December"=>"December" ); /*打印相關的元素*/ print("Month 5 is " . $monthName[5]. "
"); print("Month Aug is " . $monthName["Aug"] . "
"); print("Month June is " . $monthName["June"] . "
"); 創(chuàng)建一個多維數組 $Cities = array( //二維數組array() "華北地區(qū)"=>array("北京市", "天津市","石家莊" ),"西北地區(qū)"=>array( "西安","拉薩" )); print("華北地區(qū):".$Cities["華北地區(qū)"][0]); //打印$Cities["華北地區(qū) "][0] PHP 4.0實現表格狀打印 /* ** 數據表格化 */ print("
"); // 表格開始 for($Row=1; $Row <= 12; $Row ++) {{print("
"); // 開始行 // do each column for($Column=1; $Column <= 12; $Column ++)} print("");//開始列 print($Row * $Column);//表格元素乘積 print(" ");} print("
"); // 行結束 } print("
"); // 表格結束 查看系統(tǒng)的一些變量 print("你正在用文件的名字為: "); print(__FILE__); print("
"); print(""); print("你的操作系統(tǒng)為: "); print(PHP_OS); print(""); print("你的php的版本為: "); print(PHP_VERSION) 打開本地或者遠程文件 print("通過http協(xié)議打開文件
"); http 協(xié)議打開文件 // 通過 if(!($myFile = fopen("d:web/web/php/test/data.txt", "r"))) { print("文件不能打開"); exit; }while(!feof($myFile)) //循環(huán) {// 按行讀取文件中的內容 $myLine = fgetss($myFile, 255); print("$myLine
"); }// 關閉文件的句柄 fclose($myFile); 打開文件的幾種方式比較 // 打開文件同時打印文件的 每一個字符 if($myFile = fopen("data.txt", "r")) {while(!feof($myFile)) {$myCharacter = fgetc($myFile); print($myCharacter);} fclose($myFile); } "); // 打開文件同時打印文件的每一行 if($myFile = fopen("data.txt", "r")) { while(!feof($myFile)) { $myLine = fgets($myFile, 255); print($myLine); } fclose($myFile); } "); /* 打開文件同時打印文件的每一行, 同時去掉取回字符串中的 HTML 語言 */ if($myFile = fopen("data.txt", "r")) {while(!feof($myFile)) {$myLine = fgetss($myFile, 255); print($myLine);} fclose($myFile);} 訪問文件常見屬性 print("文件的所有者(UID 值):"); print(fileowner("data.txt").""); print("文件的大小:"); print(filesize("data.txt").""); print("文件的類型:"); print(filetype("data.txt").""); 調用文 $myFile = file( "data.txt"); for($index = 0; $index < count($myFile); $index++) print($myFile[$index].""); } 創(chuàng)建目錄函數 if(mkdir("myDir1", 0777)) //創(chuàng)建目錄的函數 { print("目錄創(chuàng)建成功"); //目錄建立成功} else{ print("目錄建立失敗!"); //目錄建立失敗} 瀏覽目錄 // 使用表格瀏覽目錄的結構print("
"); // 創(chuàng)建表格的頭print("
"); print(" 文件名
"); print(" 文件的大小
"); print("
"); $myDirectory = opendir("."); // 建立操作目錄的句柄 // 讀出目錄中的每一個子項 while($entryName = readdir($myDirectory)) {print(" "); print("$entryName "); print(" "); print(filesize($entryName)); print(" "); print("
");} closedir($myDirectory); // 關閉目錄 print("
"); PHP相關信息 phpinfo(); 常用的數值判斷函數 //判斷數組 $colors = array("red", "blue", "green"); if(is_array($colors)) {print("colors is an array".""); }//雙精度數判斷 $Temperature = 15.23; if(is_double($Temperature)) {print("Temperature is a double".""); }//整數判斷 $PageCount = 2234; if(is_integer($PageCount)) {print("$PageCount is an integer".""); }//對象判斷 class widget { var $name;var $length; } $thing = new widget; if(is_object($thing)) { print("thing is an object"."");} //字符判斷 $Greeting = "Hello"; if(is_string($Greeting)){ print("Greeting is a string"."");} 文件上傳界面 if($UploadAction){$UploadAction=0; $TimeLimit=60; /*設置超時限制時間默認時間為 30s,設置為0時為不限時 */ set_time_limit($TimeLimit); If(($Upfile != "none")&& ($Upfile != "")) { $Filepath="d:webwebphp est"; //上載文件存放路徑 $FileName=$Filepath.$Upfile_name; if($Upfile_size <1024) //上載文件大小 {$FileSize = (string)$Upfile_size . "字節(jié)";} elseif($Upfile_size <(1024 * 1024)) { $FileSize = number_format((double)($Upfile_size / 1024), 1) . " KB";} else { $FileSize = number_format((double)($Upfile_size/(1024*1024)),1)."MB"; } if(!file_exists($FileName)) { if(copy($Upfile,$FileName)) {unlink($Upfile); echo "
"; echo "文件 $Upfile_name 已上載成功~"; echo "
"; echo "文件位置:$FileName"; echo "
"; echo "文件大小:$FileSize"; echo "
";} else {echo "文件 $Upfile_name上載失敗~"; } } else {echo "文件 $Upfile_name已經存在~"; } } else {echo "你沒有選擇任何文件上載~"; } set_time_limit(30); //恢復默認超時設置 } ACTION = "default.php" METHOD = "POST"> Compiled by eTextWizard V 1.99 of Guohua Soft. 三、 結束語 HP初學者應該要注意的一些問題歸納 【1】 頁面之間無法傳遞變量 get,post,session在最新的php版本中自動全局 變量是關閉的,所以要從上一頁面取得提交過來得變量要使用 $_GET[?foo?],$_POST[?foo?],$_SESSION[?foo?]來得到。當然也可以修 改自動全局變量為開(php.ini改為register_globals = On);考慮到兼容 性,還是強迫自己熟悉新的寫法比較好。 【2】 Win32下apache2 用get方法傳遞中文參數會出錯 test.php?a=你好 &b= 你也好傳遞參數是會導致一個當php.ini的display_errors = On并且error_reporting = E_ALL時,將顯示所有的錯誤和提示,調試的時候最好打開以便糾錯,如果你用以前php寫法錯誤信息多半是關于未定義變量的。變量在賦值以前調用會有提 例如顯示$foo,可以 示,解決辦法是探測或者屏蔽 if(isset($foo)) echo $foo 或者echo @$foo 【4】 Win32下mail()不能發(fā)送電子郵件在linux下配置好的sendmail可以發(fā)送, 在win32下需要調用smtp服務器來發(fā)送電子郵件修改php.ini的 SMTP = ip //ip是不帶驗證功能的smtp服務器(網上很難找到) php發(fā) 送郵件的最好解決方法是用socket直接發(fā)送到對方email服務器而不 用轉發(fā)服務器 。 【5】 初裝的mysql如果沒有設置密碼,應該使用 update mysql.user set password="yourpassword" where user="root" 修改密碼 【6】 header already sent 這個錯誤通常會在你使用HEADER的時候出現,他 可能是幾種原因:1,你在使用HEADER前PRING或者ECHO了 2.你當前文件前面有空行3.你可能INCLUDE了一個文件,該文件尾部 有空行或者輸出也會出現這種錯誤。~ 這是我根據好友學習php的 經驗記錄。
信息發(fā)布:廣州名易軟件有限公司 http://m.jetlc.com
|