1、echo,print,print_r,var_dump的區別?php
(1)echo 是語言結構,無返回值.輸出一個或者多個字符串. (2)print 是函數,有返回值.只能打印簡單類型變量.例如:整形、字符串 (3)print_r 是函數,有返回值.能打印複雜類型變量.例如:數組、對象 (4)var_dump能打印數組、對象,而且帶數據類型.
2、cookie與session的區別?若是客戶端禁用了cookie功能,將會對session有什麼影響?html
cookie和session的區別: (1)cookie數據存放在客戶端的瀏覽器上. session數據放在服務器上. (2)cookie不是很安全,別人能夠分析存放在本地的COOKIE並進行COOKIE欺騙. 考慮到安全應當使用session. (3)session會在必定時間內保存在服務器上.當訪問增多,會比較佔用服務器的性能. 考慮到減輕服務器性能方面應當使用cookie. (4)單個cookie數據大小限制是3K,不少瀏覽器都限制一個站點最多保存20個cookie. session是沒有大小限制和服務器的內存大小有關. (5)通常將登錄信息等重要信息存放在session. 其餘信息存放在cookie 禁用Cookie就不能獲得Session. 產生緣由:Session是用Session ID來肯定當前對話所對應的服務器Session,而Session ID是經過Cookie來傳遞的,禁用Cookie至關於失去了Session ID,也就得不到Session. 假定用戶關閉禁用Cookie,如何正常使用Session? (1)設置php.ini配置文件中的「session.use_trans_sid = 1」,或者編譯時打開打開了「--enable-trans-sid」選項,讓PHP自動跨頁傳遞Session ID. (2)手動經過URL傳值、隱藏表單傳遞Session ID. (3)用文件、數據庫等形式保存Session ID,在跨頁過程當中手動調用.
3、WEB開發中數據提交方式有幾種?有什麼區別?mysql
get與post兩種方式 區別: (1)get從服務器獲取數據,post向服務器傳送數據. (2)get傳值在url中可見,post在url中不可見. (3)get傳值通常在2KB之內,post傳值大小能夠在php.ini中進行設置. (4)get安全性非低,post安全性較高,get執行效率卻比post高. 建議: (1)get安全性較post要差包含機密信息,建議用post數據提交式. (2)作數據查詢建議用get. 作數據添加、修改或刪除建議用post.
4、常見的HTTP狀態碼含義?linux
HTTP狀態碼分類: 1** - 信息提示: 服務器收到的請求,須要請求者繼續執行操做 2** - 成功: 操做被成功接收並處理 3** - 重定向: 須要進一步的操做以完成請求 4** - 客戶端錯誤: 請求包含語法錯誤或者沒法完成請求 5** - 服務器錯誤: 服務器在處理請求的過程當中發生了錯誤 100:(繼續) 請求者繼續發送請求. 101:(切換協議) 請求者已要求服務切換協議,服務器已確認準備切換. 200:(成功) 服務器已經成功處理請求. 201:(已建立) 請求成功而且服務器建立新的資源. 202:(已接受) 服務器已接受請求,但處理還沒有完成. 204:(無內容) 服務器處理請求,可是沒有任何內容. 300:(多種選擇) 針對請求,服務器可執行多種操做. 301:(永久移動) 請求的網頁已永久移到到新位置. 302: (臨時移動) 服務器從不一樣位置的網頁響應請求,但請求者應據繼續使用原有位置進行之後請求. 304:(未修改) 自從上次請求後,請求網頁未修改過. 400:(錯誤請求) 服務器不理解請求的語法. 401:(未受權) 請求要求身份驗證. 403:(禁止) 服務器拒絕請求. 404:(未找到) 服務器找不到請求的網頁. 500:(服務器內部錯誤) 服務器遇到錯誤,沒法完成請求. 501:(服務器沒法識別) 服務器不支持當前請求所須要的某個功能. 502:(錯誤網關) 服務器做爲網關或代理,從上游服務器收到無效響應. 503:(服務不可用) 服務器目前沒法使用(因爲超載和停機維護).
5、mvc是什麼?相互間有什麼關係?sql
mvc是一種開發模式主要分爲三部分: (1)m(model)也就是模型,負責數據的操做 (2)v(view)也就是視圖,負責先後臺的顯示 (3)c(controller)也就是控制器,負責業務邏輯 客戶端請求項目的控制器,若是執行過程當中須要用到數據,控制器就會到模型中獲取數據,再將獲取到的數據經過視圖顯示出來
6、isset()和empty()區別?數據庫
(1)isset判斷變量是否存在,能夠傳入多個變量,若其中一個變量不存在則返回假. (2)empty判斷變量是否爲空爲假,只可傳一個變量,若是爲空爲假則返回真.
7、php經常使用的超全局變量設計模式
(1)$_GET get傳送方式 (2)$_POST post傳送方式 (3)$_REQUEST 能夠接收到get和post兩種方式的值 (4)$GLOBALS 全部的變量都放在裏面 (5)$_FILE 上傳文件使用 (6)$_SERVER 系統環境變量 (7)$_SESSION 會話控制的時候會用到 (8)$_COOKIE 會話控制的時候會用到
8、include,require,include_once,require_once的區別?數組
處理失敗方式不一樣: (1)include和include_once 失敗時只產生一個警告級別錯誤,程序繼續運行. (2)require和require_once 失敗時會產生一個致命級別錯誤,並中止程序運行. 惟一區別: include_once/include和require_once/require區別:在於當所包含的文件代碼已經存在時候,不在包含.
9、雙引號和單引號的區別?瀏覽器
(1)雙引號解釋變量,單引號不解釋變量 (2)雙引號中的變量($var)和特殊字符(\r\n之類)會被轉義,單引號中的內容不會被轉義 (3)單引號執行速度快
10、如何防止SQL注入,XSS攻擊和CSRF攻擊?安全
(1)SQL注入:就是經過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令. 防範:1.一些sql語句進行過濾,好比delete update insert select * ;2.使用PDO佔位符進行轉義。 (2)XSS跨站腳本攻擊:是Web攻擊中最多見的攻擊方法之一,它是經過對網頁注入可執行代碼且成功地被瀏覽器執行.達到攻擊的目的. (例如:攻擊者通常經過script標籤對網站注入一些可執行的代碼) 防範:1.消毒(對危險字符進行轉義); 2.Http惟一(防範XSS攻擊者竊取Cookie數據) (3)CSRF跨站請求僞造:是一種對網站的惡意利用. 防範:1.在表單中添加令牌(token); 2.驗證碼; 3.檢查請求頭中的Referer,字段用以標明請求來源於哪一個地址.