這些PHP考點雖然簡單基礎,可是很重點

雙引號和單引號的區別?重點考題,幾乎每次面試都會被考到php

雙引號解釋變量,單引號不解釋變量web

雙引號裏插入單引號,其中單引號裏若是有變量的話,變量解釋面試

雙引號的變量名後面必需要有一個非數字、字母、下劃線的特殊字符,或者用{}講變量括起來,不然會將變量名後面的部分當作一個總體,引發語法錯誤sql

雙引號解釋轉義字符,單引號不解釋轉義字符,可是解釋'\和\\數據庫

能使單引號字符儘可能使用單引號,單引號的效率比雙引號要高(由於雙引號要先遍歷一遍,判斷裏面有沒有變量,而後再進行操做,而單引號則不須要判斷)數組

HTTP中POST、GET、PUT、DELETE方式的區別瀏覽器

HTTP定義了與服務器交互的不一樣的方法,最基本的是POST、GET、PUT、DELETE,與其比不可少的URL的全稱是資源描述符,咱們能夠這樣理解:url描述了一個網絡上資源,而post、get、put、delete就是對這個資源進行增、刪、改、查的操做!安全

表單中get和post提交方式的區別服務器

get是把參數數據隊列加到提交表單的action屬性所指的url中,值和表單內各個字段一一對應,從url中能夠看到;post是經過HTTPPOST機制,將表單內各個字段與其內容防止在HTML的head中一塊兒傳送到action屬性所指的url地址,用戶看不到這個過程網絡

對於get方式,服務器端用Request.QueryString獲取變量的值,對於post方式,服務器端用Request.Form獲取提交的數據

get傳送的數據量較小,post傳送的數據量較大,通常被默認不受限制,但在理論上,IIS4中最大量爲80kb,IIS5中爲1000k,get安全性很是低,post安全性較高

GET請求會向數據庫發索取數據的請求,從而來獲取信息,該請求就像數據庫的select操做同樣,只是用來查詢一下數據,不會修改、增長數據,不會影響資源的內容,即該請求不會產生反作用。不管進行多少次操做,結果都是同樣的。

與GET不一樣的是,PUT請求是向服務器端發送數據的,從而改變信息,該請求就像數據庫的update操做同樣,用來修改數據的內容,可是不會增長數據的種類等,也就是說不管進行多少次PUT操做,其結果並無不一樣。

POST請求同PUT請求相似,都是向服務器端發送數據的,可是該請求會改變數據的種類等資源,就像數據庫的insert操做同樣,會建立新的內容。幾乎目前全部的提交操做都是用POST請求的。

DELETE請求顧名思義,就是用來刪除某一個資源的,該請求就像數據庫的delete操做。

echo、print_r、print、var_dump之間的區別

* echo、print是php語句,var_dump和print_r是函數

* echo 輸出一個或多個字符串,中間以逗號隔開,沒有返回值是語言結構而不是真正的函數,所以不能做爲表達式的一部分使用

* print也是php的一個關鍵字,有返回值 只能打印出簡單類型變量的值(如int,string),若是字符串顯示成功則返回true,不然返回false* print_r 能夠打印出複雜類型變量的值(如數組、對象)以列表的形式顯示,並以array、object開頭,但print_r輸出布爾值和NULL的結果沒有意義,由於都是打印"\n",所以var_dump()函數更適合調試

* var_dump() 判斷一個變量的類型和長度,並輸出變量的數值

語句include和require的區別是什麼?爲避免屢次包含同一文件,能夠用(?)語句代替他們

require是無條件包含,也就是若是一個流程里加入require,不管條件成立與否都會先執行require,當文件不存在或者沒法打開的時候,會提示錯誤,而且會終止程序執行

include有返回值,而require沒有(可能由於如此require的速度比include快),若是被包含的文件不存在的化,那麼會提示一個錯誤,可是程序會繼續執行下去

注意:包含文件不存在或者語法錯誤的時候require是致命的,而include不是

require_once表示了只包含一次,避免了重複包含

說明php中傳值與傳引用的區別,並說明傳值何時傳引用?

變量默認老是傳值賦值,那也就是說,當將一個表達式的值賦予一個變量時,整個表達式的值被賦值到目標變量,這意味着:當一個變量的賦予另一個變量時,改變其中一個變量的值,將不會影響到另一個變量

php也提供了另一種方式給變量賦值:引用賦值。這意味着新的變量簡單的引用(換言之,成爲了其別名或者指向)了原始變量。改動的新的變量將影響到原始變量,反之亦然。使用引用賦值,簡單地將一個&符號加到將要賦值的變量前(源變量)

對象默認是傳引用

對於較大是的數據,傳引用比較好,這樣能夠節省內存的開銷

isset、empty、is_null的區別

isset 判斷變量是否認義或者是否爲空

empty:判斷變量的值是否爲空,能轉換爲false的都是空,爲空返回true,反之返回false。

is_null:檢測傳入的值(值、變量、表達式)是否爲null

防止SQL注入的方式:

開啓配置文件中的magic_quotes_gpc 和 magic_quotes_runtime設置

執行sql語句時使用addslashes進行sql語句轉換

Sql語句書寫儘可能不要省略雙引號和單引號。

過濾掉sql語句中的一些關鍵詞:update、insert、delete、select、 * 。

提升數據庫表和字段的命名技巧,對一些重要的字段根據程序的特色命名,取不易被猜到的。

Php配置文件中設置register_globals爲off,關閉全局變量註冊

控制錯誤信息,不要在瀏覽器上輸出錯誤信息,將錯誤信息寫到日誌文件中。

框架中什麼是單一入口和多入口 , 單一入口的優缺點?

多口就是經過訪問不一樣的文件來完成用戶請求。單一入口只 web 程序全部的請求都指向一個腳本文件的。

單一入口更容易控制權限,方便對 http 請求能夠進行安全性檢查。

缺點:URL 看起來不那麼美觀,特別是對搜索引擎來講不友好。

 

什麼是靜態路由,其特色是什麼?什麼是動態路由,其特色是什麼?

靜態路由是由系統管理員設計與構建的路由表規定的路由。適用於網關數量有限的場 合,且網絡拓樸結構不常常變化的網絡。其缺點是不能動態地適用網絡情況的變化,當 網絡情況變化後必須由網絡管理員修改路由表。

動態路由是由路由選擇協議而動態構建的,路由協議之間經過交換各自所擁有的路由信 息實時更新路由表的內容。動態路由能夠自動學習網絡的拓樸結構,並更新路由表。其 缺點是路由廣播更新信息將佔據大量的網絡帶寬。

相關文章
相關標籤/搜索