程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 一個網友的PHP學習心得

一個網友的PHP學習心得

編輯:PHP綜合

本文是一個網友學習PHP的心得,這裡轉發給大家,希望對你學習PHP有所幫助,正文如下:

        先把我自己學習PHP的過程做一下概括:  
        (1)熟悉Html/CSS/JS等網頁基本元素,完成階段可自行制作完整的網頁,對元素屬性達到熟悉程度  
        (2)理解動態語言的概念,運做機制,熟悉PHP語法  
        (3)學習如何將PHP與Html結合起來完成簡單動態頁面  
        (4)接觸MYSQL,開始設計數據庫程序  
        (5)不斷鞏固,摸透大部分PHP常用函數,並可理解OOP,MySQL優化,以及模板  
        (6)完成一個功能齊全的動態站點  
    我的這套線路可能跟許多學習PHP的愛好者不謀而合,這也算是一個循序漸進的學習過程,不過新手不要看到上面的概括就以為學習蠻簡單的,默默在此不得不對您稍微潑一下冷水,任何東西其實都不簡單,即使是小吃部的燒餅也不是一下子就會做成的。  
    我先解釋一下我的學習思路。  
    首先,理解網站這一概念之後不難看出,任何網站都是由網頁組成的,也就是說想完成網站,必須先學會做網頁,因此必須要掌握了Html,才能為今後制作網站打下基礎。  
    在學習Html中我想邊學邊做是最有效的方式,當然這一方式對於學習PHP同樣是最有效的。  
    Html中的任何元素都要親自實踐,只有明白了什麼元素會起到什麼效果之後,你才會記憶深刻,而一味的啃書,絕對是不行的,我想大部分新手之所以覺得概念難學,大部分是一個字“懶”,懶是阻止進步的最大敵人,所以克服掉懶的習慣,才能更快的學好一樣東西。  
    也許您在學習PHP的時候只想盡快的開發一個網站,也就會想我做網站,干嘛要學什麼網頁這些小兒科?不難看出,眼高手低的新手不在少數,這種思想無疑於建造空中樓閣,你不建地基,何來的房頂呢?  
    OK,掌握靜態網頁的制作技術是學習開發網站的先決條件,這一點就講到這裡,因為這篇文章不是教程文章,也就不對技術進行深入的刨析了。  
    我假設你目前已經可以完成一個靜態頁面了,當然,做的好看難看是另外一說,默默的第一個網頁也沒好看到哪去,但是“孩子”再丑,咱們做“爹媽”的也不能嫌棄不是?這畢竟是咱的成果。  
    那麼咱們就開始學習動態語言的概念吧,剛一接觸動態語言,可能很多人都會蒙了,怎麼這亂七八糟的東西,在網頁裡顯示的時候卻是另外一碼事?其實這並不算亂七八糟,你寫的HTML代碼不也一樣是一堆堆的字符嗎?畢竟,代碼並不是作為直接輸出的,而是經過處理的,說白了,HTML是經過HTML解析器,而PHP當然也就通過PHP解析器了,跟學習Html一樣的道理,想讓任何的解析器完成操作,就必須使用它們專用的語法結構,所以PHP長相奇怪也就不足為奇了。  
    對於PHP的理解是新手最難邁過的一道門檻,不過你應該感到幸運的是PHP已經最大極限的為了新手而努力了,如果你學過其他的語言,也許會覺得PHP的確相當的簡單,但是如果你之前什麼都沒學過,那麼阿彌陀佛,硬著頭皮琢磨吧。  
    書過三遍自然熟,這個簡單的道理告訴我們,即使你理解不了PHP,但是也必須先跟它混個臉熟,看,一遍遍的看,看的同時一邊琢磨,一邊按照它所教的打代碼,即使你搞不清楚那些代碼到底是干嘛的,但是起碼你應該找找感覺。

【1】頁面之間無法傳遞變量 get,post,session在最新的PHP版本中自動全局變量是關閉的,所以要從上一頁面取得提交過來得變量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']來得到
當然也可以修改自動全局變量為開(PHP.ini改為register_globals = On);考慮到兼容性,還是強迫自己熟悉新的寫法比較好。
【2】Win32下apache2 用get方法傳遞中文參數會出錯
test.PHP?a=你好&b=你也好
傳遞參數是會導致一個內部錯誤
解決辦法:"test.PHP?a=".urlencode(你好)."&b=".urlencode(你也好)
.............

【3】win32下的session不能正常工作
PHP.ini默認的session.save_path = /tmp
這顯然是Linux下的配置,win32下PHP無法讀寫session文件導致session無法使用
把它改成一個絕對路徑就可以了,例如session.save_path = c:Windows emp
【4】顯示錯誤信息
當php.ini的display_errors = On並且error_reporting = E_ALL時,將顯示所有的錯誤和提示,調試的時候最好打開以便糾錯,如果你用以前PHP寫法錯誤信息多半是關於未定義變量的。變量在賦值以前調用會有提示,解決辦法是探測或者屏蔽
例如顯示$foo,可以if(isset($foo)) echo $foo 或者echo @$foo
【5】Win32下mail()不能發送電子郵件
Linux下配置好的sendmail可以發送,在win32下需要調用smtp服務器來發送電子郵件
修改PHP.ini的SMTP = ip //ip是不帶驗證功能的smtp服務器(網上很難找到)
PHP發送郵件的最好解決方法是用socket直接發送到對方eMail服務器而不用轉發服務器
【6】初裝的MySQL如果沒有設置密碼,應該使用
update MySQL.user set password="yourpassWord" where user="root"
修改密碼
【7】header already sent
這個錯誤通常會在你使用HEADER的時候出現,他可能是幾種原因:1,你在使用HEADER前PRING或者ECHO了2.你當前文件前面有空行3.你可能INCLUDE了一個文件,該文件尾部有空行或者輸出也會出現這種錯誤。!
【8】更改PHP.ini後沒有變化
重新啟動web server,比如IIS,apache等等,然後才會應用最新的設置
【9】PHP在2003上面安裝(ISAPI的安裝方法懇請高手指教)
PHP4的PHP4isapi.dll好像和2003有些沖突,只能用CGI模式安裝
步驟一,先www.PHP.Net下在一個安裝程序,我是裝的是:php-4.2.3-installer.exe,你也可以去找最新的版本,在安裝PHP-4.2.3-installer.exe之前保證你的IIS6.0啟動了,並能夠訪問。安裝好以後,在默認網站-->應用程序配置
步驟二:點擊 web服務擴展 -->新建web服務擴展.
步驟三: 擴展名-->PHP,然後添加
步驟四:找到PHP.exe的路徑添加上去。
步驟五: 確定就可以了!
步驟六: 選擇PHP的服務擴展,然後點擊允許。
【10】
有時候sql語句不起作用,對數據庫操作失敗
最簡便的調試方法,echo那句sql,看看變量的值能得到不
【11】include和require的區別
兩者沒有太大的區別,如果要包含的文件不存在,include提示notice,然後繼續執行下面的語句,require提示致命錯誤並且退出
據我測試,win32平台下它們都是先包含後執行,所以被包含文件裡最好不要再有include或require語句,這樣會造成目錄混亂。或許*nux下情況不同,暫時還沒測試
如果一個文件不想被包含多次可以使用include_once或require_once## 讀取,寫入文檔數據

 

function r($file_name) {
$filenum=@fopen($file_name,"r");
@flock($filenum,LOCK_SH);
$file_data=@fread($filenum,filesize($file_name));
@fclose($filenum);
return $file_data;
}
function w($file_name,$data,$method="w"){
$filenum=@fopen($file_name,$method);
flock($filenum,LOCK_EX);
$file_data=fwrite($filenum,$data);
fclose($filenum);
return $file_data;
}

【12】isset()和empty()的區別
兩者都是測試變量用的
但是isset()是測試變量是否被賦值,而empty()是測試一個已經被賦值的變量是否為空
如果一個變量沒被賦值就引用在PHP裡是被允許的,但會有notice提示
如果一個變量被賦空值,$foo=""或者$foo=0或者 $foo=false,那麼empty($foo)返回真,isset($foo)也返回真,就是說賦空值不會注銷一個變量。
要注銷一個變量,可以用 unset($foo)或者$foo=NULL
【13】MySQL查詢語句包含有關鍵字
PHP查詢mysql的時候,有時候MySQL表名或者列名會有關鍵字
這時候查詢會有錯誤。例如表名是order,查詢時候會出錯
簡單的辦法是sql語句裡表名或者列名加上`[tab鍵上面]來加以區別
例如select * from `order`
【14】通過HTTP協議一次上傳多個文件的方法
有兩個思路,是同一個方法的兩種實現。具體程序還需自己去設計
1,在form中設置多個文件輸入框,用數組命名他們的名字,如下:
<form action="" method=post>
<input type=file name=usefile[]>
<input type=file name=usefile[]>
<input type=file name=usefile[]>
</form>
這樣,在服務器端做以下測試
echo "<pre>";
print_r($_FILES);
echo "</pre>";

1,在form中設置多個文件輸入框,但名字不同,如下:
<form action="" method=post>
<input type=file name=usefile_a>
<input type=file name=usefile_b>
<input type=file name=usefile_c>
</form>
在服務器端做同樣測試:
echo "<pre>";
print_r($_FILES);
echo "</pre>";

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved