初中級PHP面試題型三(附答案)

面試題型三
1、建立索引

2、PHP支援多繼承嗎?
不支援。PHP中只允許單繼承,父類可以被一個子類用關鍵字“extends”繼承。
3、使用過Memcache快取嗎,如果使用過,能夠簡單的描述一下它的工作原理嗎?
Memcahce是把所有的資料儲存在記憶體當中,採用hash表的方式,每條資料又key和value組成,每個key是獨一無二的,當要訪問某個值的時候先按照找到值,然後返回結果。
Memcahce採用LRU演算法來逐漸把過期資料清除掉。
4、優化MYSQL資料庫的方法

5、MySQL主從備份的原理?
mysql支援單向、非同步複製,複製過程中一個伺服器充當主伺服器,而一個或多個其它伺服器充當從伺服器。
6、error_reporting() 的作用?
設定 PHP 的報錯級別並返回當前級別。
7、如何修改session的生存時間
在php.ini 中設定 session.gc_maxlifetime = 1440 //預設時間
程式碼實現

8、常見的 PHP 安全性攻擊
SQL注入 :使用者利用在表單欄位輸入SQL語句的方式來影響正常的SQL執行。
防止 :
使用mysql_real_escape_string()過濾資料
手動檢查每一資料是否為正確的資料型別
使用預處理語句並繫結變數
引數化SQL:是指在設計與資料庫連結並訪問資料時,在需要填入數值或資料的地方,使用引數 (Parameter) 來給值,用@或?來表示引數。
XSS攻擊 :跨站點指令碼攻擊,由使用者輸入一些資料到你的網站,其中包括客戶端指令碼(通常JavaScript)。如果你沒有過濾就輸出資料到另一個web頁面,這個指令碼將被執行。
防止 :為了防止XSS攻擊,使用PHP的htmlentities()函式過濾再輸出到瀏覽器。
CSRF :跨站點請求偽造,是指一個頁面發出的請求,看起來就像是網站的信任使用者,但是是偽造的
防止 :一般來說,確保使用者來自你的表單,並且匹配每一個你傳送出去的表單。有兩點一定要記住:
對使用者會話採用適當的安全措施,例如:給每一個會話更新id和使用者使用SSL。
生成另一個一次性的令牌並將其嵌入表單,儲存在會話中(一個會話變數),在提交時檢查它。 如laravel中的 _token
程式碼注入 :程式碼注入是利用計算機漏洞通過處理無效資料造成的。問題出在,當你不小心執行任意程式碼,通常通過檔案包含。寫得很糟糕的程式碼可以允許一個遠端檔案包含並執行。如許多PHP函式,如require可以包含URL或檔名。
防止程式碼注入
過濾使用者輸入
在php.ini中設定禁用allow_url_fopen和allow_url_include。這將禁用require/include/fopen的遠端檔案