1.解釋mvcphp
(1)mvc即 模型model,視圖view,控制器controller;是一種模型,是一種編程思想,就是把一個應用的輸入、輸出、數據處理分開,分解耦合(2)A..視圖,數據採集和處理,和用戶請求,不包括業務流程,smarty實現B.模型,接收數據和請求,完成相關數據處理,返回數據,’黑箱‘操做,核心,php類庫實現C.控制器,任務的實現,根據傳入數據調用各類組件完成任務,將結果傳給視圖顯示,業務流程的實現。(3)mvc的優勢:使開發人員只關注某一層,很容易用新代替舊層次的實現,低依賴性,重用性,標準化,擴展性.維護性html
2.無限分類的實現原理。mysql
A.三種:(1)遞歸方式:查詢次數很是多,不推薦使用。(2)ajax:點誰,查子欄目,再點子欄再查子欄目。點了幾回查了幾回(3)血緣關係:一次性把親戚全找到。新增長欄目的path=父ID的path-父欄目的ID程序員
B.查詢:select id,name,pid,path,concat(path,'-',id) as bpath from shop_menu order by bpath;web
3.大流量高併發量網站的解決方案ajax
(1)確認服務器硬件是否支持當前流量。(2)memcache緩存技術,將動態數據緩存到內存中,動態網頁直接調用這些文件,不訪問數據庫。(3)禁外部盜鏈。外部網站的圖片或文件盜鏈會帶來大量負載壓力,應該嚴格限制外部對自身盜鏈,目前能夠簡單經過refer控制盜鏈,apache能夠經過配置來禁止盜鏈。(4)控制大文件下載。大文件的下載會佔用很大的流量,對於非SCSI硬盤來講會消耗,使得網站響應能力降低。(5)不一樣主機分流(6)流量統計軟件。能夠即時知道哪些地方耗費了大量流量,哪些頁面須要再進行優化。如phpstat,pcs(7)分庫分表。(8)Sphinx全文索引引擎。(9)cdn技術讓不一樣地方的ip訪問不一樣地方的服務器。(10)高併發,f五、lvs。(11)若是是代碼服務器與數據庫服務器負載不上,加一隊列讓其給代碼服務器平均分配連接。正則表達式
4.如何設計或配置Mysql,才能達到高效使用的目的sql
(1)數據庫設計,結構良好,容許部分冗餘。 (2)最適用字段屬性,儘量字段NOTNULL,這樣在查詢時,不用去比較NULL值。(3)系統架構設計,表散列,海量數據散列到幾個表裏,集羣,查寫分開。(4)高效sql,提升效率。 (5)使用鏈接(join)來代替子查詢。(6)使用聯合(union)來代替手動建立的臨時表。(7) 所得皆必須,只從數據庫取必須的數據。(8) 必要時用不一樣存儲引擎,如Innodb可少死鎖,HEAP提查詢速度。(9)使用事務、外鍵、索引(10)緩存技術shell
5.如何進行防SQL注入數據庫
(1)過濾常見數據庫操做關鍵字:select,insert,update,delete,and,*等,或經過系統函數:addslashes(需被過濾內容)過濾。(2)PHP配置文件Register_globals=off;//註冊全局變量關閉。(3)SQL書寫不要省略小引號(tab上)和單引號。(4)高數據庫命名技巧,對於一些重要的字段根據程序的特色命名,取不易被猜到的(5)經常使用方法封裝,避直接暴漏SQL 。(6)PHP安全模式Safe_mode=on;。(7)開Magic_quotes_gpc=on;自動把sql語句轉換,'轉爲\',頗有效。(8)關閉錯誤提示信息,寫到系統日誌。(9)使用mysqli或pdo預處理。
6..安全的用戶登陸系統需注意。
(1)MD5(密碼+字符串)加密。(2)登陸表單名不跟字段同樣,免暴漏表字段。(3)表名、字段名、密碼用不易被猜到的。(4)用驗證碼驗證登錄,以防止暴力破解。(5)驗證提交的數據是否是來自本網站。(6)登陸後處理代碼數據庫部分使用預處理,作好過濾,防sql注入。
(2)
7.PHP框架優劣點。
(1)BroPHP:優勢:輕量級學習型框架,配置簡,操做簡,易上手,全面文檔。(2)ThinkPHP框架:優勢:功能全,配置較簡,操做較簡,多示例程序。缺點:操做方法太多,新手不知如何選,文檔不全面。
8.版本控制工具?
1.Clearcase 2.CVS 3.SVN 4.PVCS 5.Perforce 6.CCC 7.StarTeam 8.RCS
9.GET與POST?
(1)GET明文傳輸顯示的地址欄上各值之間以&鏈接。POST傳輸是不可見的。(2)GET數據長度有限,不適合大數據傳輸。post理論上是沒有限制,具體根據瀏覽器而定。(3)GET限制Form表單的數據集的值必須爲ASCII字符;而Post支持整個ISO10646字符集。
10.SESSION與COOKIE?
(1)Session服務器端,給每一個客戶分配一個惟一的數字,做爲每一個客戶的標識,Cookies是一種由服務器發送給客戶端的片斷信息,存儲在客戶端瀏覽器的內存或是硬盤上,每次發出頁面請求時,都會把裏面的數據發送給服務器端.能夠利用它在遠程瀏覽器端存儲數據並以此來跟蹤和識別用戶的機制。(2) Cookies適合作保存用戶我的設置,愛好等,Session適合作客戶的身份驗證.(3)http無狀態協議,不能區分用戶是不是從同一個網站上來的,同一個用戶請求不一樣的頁面不能看作是同一個用戶。
11可以使HTML和PHP分離開使用的模板
Smarty,Dwoo,TinyButStrong,TemplateLite,XTemplate
12.關於中文截取的問題
1.mb_substr($str, $start, $length, $charset);
2.iconv_substr();(PHP 4 >= 4.0.6, PHP 5)
3.結合Join 、array_slice和 正則
13.MySQL存儲引擎中MyISAM和InnoDB,優缺點,索引?
(1)MyISAM 優:成熟、穩定、易於管理;表格鎖定機制;比innoDB快;缺:optimize清理空間;適合:讀取需求、節約空間時間、響應速度快;(2)InnoDB優:數據庫支持外鍵和事務處理,缺:速度比MyISAM稍慢;佔用空間大;適合:用到事務、外鍵和更高安全性的需求;多用戶同時修改表;
(3)建立索引:alert table tablename add index (`字段名`)
14.什麼是數據庫索引,主鍵索引,惟一索引的區別,索引的缺點是什麼?
(1)索引:經過在表字段中創建索引可提升查詢優化,確保數據的惟一性,以及能夠對全文索引字段中的大量文本的搜索進行優化。(2)主鍵索引(primary key):主要做用是肯定數據表裏一條特定的數據記錄的位置。數據表會根據主鍵的惟一索引性來惟一標示每條記錄。(3)惟一索引(unique)主要是爲了不數據出現重複(4)區別:每一個表中只能有一個主鍵索引,但能夠有多個惟一索引。
(優勢):建立索引能夠大大提升系統的性能:
(1)保證數據庫表中每一行惟一性.(2)加快數據檢索速度,最主要的緣由。(3)加速表和表之間鏈接(4)在使用分組和排序 子句進行數據檢索時,顯著減小查詢中分組和排序時間。 (5)查詢使用優化隱藏器,提升系統性能。
增長索引也有許多不利的方面:
(1)建立和維護索引要耗費時間,隨着數據量的增長而增長。(2)佔物理空間,除了數據表佔數據空間以外,索引還要佔必定的物理空間,若是要創建聚簇索引,空間就會更大。(3)當對錶數據進行增刪改時,索引也要動態維護,下降數據維護速度。
在哪建索引?(1)常常須要搜索的列,加快搜索的速度; (2)主鍵列,強制該列惟一性和組織表中數據排列結構(3)常常鏈接列(外鍵)加快鏈接速度(4)範圍搜索列,因索引已排序,範圍是連續(5)排序列,因索引已排序,可利用索引排序加快時間; (6)WHERE子句列,加快條件判斷。
15.varchar 和 char區別?(1) char是固定長度,分配多少,就佔多長。(2)Varchar是可變長度,內容有多大就佔多大,節省空間。(3)因varchar是可變的,因此在數據長度改變時,服務器要進行額外操做,因此效率比char類型低。
16瀏覽器IE和非IE瀏覽器的劃分,區別是什麼?
(1)ie瀏覽器使用範圍廣,不少不規範網頁都是隻支持ie內核瀏覽器的,但因使用範圍廣,成爲黑客攻擊目標。(2)非ie內核瀏覽器爲搶佔市場,研究新技術新功能,因此比ie內核瀏覽器速度功能出色,但因不具ie常常被攻擊鍛煉出來免疫力,一旦被攻擊徹底不具有承受能力。
(-1-)
17.數據庫中的事務是什麼?
事務(transaction)是做爲一個單元一組有序的數據庫操做。若組中全部操做都成功,則認爲事務成功,即便只有一個操做失敗,事務也不成功。若是全部操做完成,事務則提交,其修改將做用於全部其餘數據庫進程。若一個操做失敗,則事務回滾,該事務全部操做影響都將取消。
18.Linux 下創建壓縮包,解壓縮包的命令
(1)Gz:打包: tar czf file.tar.gz file.txt 解壓: tar xzf file.tar.gz
(2)Bz2:打包: tar -cjf file.tar.bz2 file.txt 解壓: tar -xjf file.tar.bz2
(3)Gzip:打包: gzip file1.txt 解壓: gunzip file1.txt.gz
(4)Zip:打包: zip file1.zip file1.txt 解壓: unzip file1.zip
19.不使用cookie向客戶端發送一個cookie.
session_start()開啓時,生成一個常量 SID,當COOKIE開啓時,這個常量爲空,當COOKIE關閉時,這個常量中存儲了PHPSESSID的值。經過在URL後加一個SID參數來傳遞 SESSIONID的值,從而使客戶端頁面可使用SESSION裏面的值。 當客戶端開啓COOKIE和服務器端開啓SESSION時。 瀏覽器第一次請求,服務器會向瀏覽器端發送一個COOKIE裏面存儲SESSIONID. 當瀏覽器第二次請求時,會把已存在的COOKIE一塊兒提交到服務器端。
20.isset() 和 empty() 區別
Isset是否存在,存在(真),empty是否(空假),(空假)返回真。
21.寫出匹配URL的正則表達式
/^[a-zA-z]+:\/\/(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?/
22.你所知道的設計模式有哪些?
工廠模式、策略模式、單元素模式、觀察者模式、命令鏈模式
23.說說你對SVN的瞭解?優缺點?
定義:SVN是一種版本控制器,程序員開發代碼遞交到版本服務器進行集中管理。優勢:代碼進行集中管理,版本控制容易,操做比較簡單,權限控制方便。
缺點:不能隨意修改服務器項目文件夾。
24.傳值與傳引用的區別。何時傳值何時傳引用
(1)按值傳遞:函數範圍內對值的任何改變在函數外部都會被忽略(2)按引用傳遞:函數範圍內對值的任何改變在函數外部也能反映出這些修改(3)優缺點:A:按值傳遞時,php必須複製值。特別是對於大型的字符串和對象來講,這將會是一個代價很大的操做。B.按引用傳遞則不須要複製值,對於性能提升頗有好處。
25.單介紹下什麼是cURL:
(1)cURL可使用URL的語法模擬瀏覽器來傳輸數據,由於它是模擬瀏覽器,所以它支持多種協議。
(2)使用cURL完成請求:a.初始化,建立一個新cURL資源b.設置URL和相應的選項c.抓取URL並把它傳遞給瀏覽器d.關閉cURL資源,而且釋放系統資源.
26.你所知道的設計模式有哪些?
工廠模式、策略模式、單元素模式、觀察者模式、命令鏈模。
27.說說你對代碼管理的瞭解? 常使用那些代碼版本控制軟件?
一般一個項目是由一個團隊去開發,每一個人將本身寫好的代碼提交到版本服務器,由項目負責人按照版本進行管理,方便版本的控制,提升開發效率,保證須要時能夠回到舊版本。經常使用的版本控制器:SVN
28.說說你對SVN的瞭解?優缺點?
SVN是一種版本控制器,程序員開發的代碼遞交到版本服務器進行集中管理。
優勢:代碼進行集中管理,版本控制容易,操做比較簡單,權限控制方便。
缺點:不能隨意修改服務器項目文件夾。
29.PHP加速模式/擴展? PHP調試模式/工具?
Zend Optimizer加速擴展
調試工具:xdebug
30.你經常使用到的mysql命令?
Show databases
Show tables
Insert into 表名() values()
Update 表名 set 字段=值 where ...
Delete from 表名 where ...
Select * from 表名 where 條件 order by ... Desc/asc limit ... Group by ... Having ...
31.進入mysql管理命令行的命令?
Mysql -uroot -p 回車 密碼
32.show databases; 這個命令的做用?
顯示當前mysql服務器中有哪些數據庫
33.show create database mysql; 這個命令的做用?
顯示建立數據庫的sql語句
34.show create table user; 這個命令的做用?
顯示建立表的sql語句
35.desc user; 這個命令的做用?
查詢user表的結構
36.explain select * from user; 這個命令的做用?
獲取select相關信息
37.show processlist; 這個命令的做用?
顯示哪些線程正在運行
38.SHOW VARIABLES; 這個命令的做用?
顯示系統變量和值
39.SHOW VARIABLES like ’%conn%’; 這個命令的做用?
顯示系統變量名包含conn的值
40.LEFT JOIN 寫一個SQL語句?
SELECT A.id,A.class FROM A LEFT JOIN B ON A.cid=B.id
41.in, not in, exist, not exist的做用和區別?
in在什麼中
Not in 不在什麼中
Exists 存在
Not exists 不存在
42.怎麼找到數據庫的配置文件路徑?
在數據庫安裝目錄下,my.ini
43.簡述Cookie的設置及獲取過程
設置COOKIE的值:
Setcookie(名稱,值,保存時間,有效域);
獲取值:$_COOKIE['名稱'];
44.面向對象中接口和抽象類的區別及應用場景?
一、有抽象方法的類叫作抽象類,抽象類中不必定有抽象方法,抽象方法必須使用abstract關鍵字定義。
二、接口中所有是抽象方法,方法不用使用abstract定義。
三、當多個同類的類要設計一個上層,一般設計爲抽象類,當多個異構的類要設計一個上層,一般設計爲接口。
45.以下user表結構
名稱 |
類型 |
說明 |
備註 |
Uid |
Int unsigned |
主鍵 |
|
Name |
Varchar(20) |
|
|
Age |
Tinyint unsigned |
|
|
需求:
l 增長一個字段性別sex,寫出修改語句
Alert table user add sex enum(’0′,’1′);
查詢出年齡介於20歲到30歲之間的用戶
Select * from user where age>20 and age<30
若是是一個Web頻繁訪問的查詢,上題的查詢如何優化?
使用memcache緩存技術,在必定時間內將動態內容緩存到文件中,訪問動態頁面時,直接調用緩存文件而沒必要從新查詢數據庫。
46.echo(),print(),print_r()的區別?
echo是PHP語句, print和print_r是函數,語句沒有返回值,函數能夠有返回值(即使沒有用)
Print()只能打印出簡單類型變量的值(如int,string)
print_r()能夠打印出複雜類型變量的值(如數組,對象)
echo 輸出一個或者多個字符串
47.什麼是模板技術、可以使HTML和PHP分離開使用的模板?
模板技術就是使程序的邏輯代碼和界面分開的技術。
可以使HTML和PHP分開的模板有:Smarty、Template、PHPlib Template、FastTemplate
(-2-)
48.寫幾個魔術方法並說明做用?
__call()當調用不存在的方法時會自動調用的方法
__autoload()在實例化一個還沒有被定義的類是會自動調用次方法來加載類文件
__set()當給未定義的變量賦值時會自動調用的方法
__get()當獲取未定義變量的值時會自動調用的方法
__construct()構造方法,實例化類時自動調用的方法
__destruct()銷燬對象時自動調用的方法
__unset()當對一個未定義變量調用unset()時自動調用的方法
__isset()當對一個未定義變量調用isset()方法時自動調用的方法
__clone()克隆一個對象
__toString()當輸出一個對象時自動調用的方法
49.$_REQUEST、$_POST、$_GET、$_COOKIE、$_SESSION、$_FILE的意思是什麼?
它們都是PHP預約義變量
$_REQUEST用來獲取post或get方式提交的值
$_POST用來獲取post方式提交的值
$_GET用來獲取get方式提交的值
$_COOKIE用來獲取cookie存儲的值
$_SESSION用來獲取session存儲的值
$_FILE用來獲取上傳文件表單的值
50.數組中下標最好是什麼類型的,爲何?
數組的下標最好是數字類型的,數字類型的處理速度快。
51.++i和i++哪個效率高,爲何?
++i效率比i++的效率更高,由於++i少了一個返回i的過程。
52.magic_quotes_gpc()、magic_quotes_runtime()的意思是什麼?
Magic_quotes_gpc()是php配置文件中的,若是設置爲on則會自動POST,GET,COOKIE中的字符串進行轉義,在‘以前加\
Magic_quotes_runtime()是php中的函數,若是參數爲true則會數據庫中取出來的單引號、雙引號、反斜線自動加上反斜槓進行轉義。
53.框架中什麼是單一入口和多入口,單一入口的優缺點?
一、多入口就是經過訪問不一樣的文件來完成用戶請求。
單一入口指web程序全部的請求都指向一個腳本文件的。
二、單一入口更容易控制權限,方便對http請求能夠進行安全性檢查。
缺點:URL看起來不那麼美觀,特別是對搜索引擎來講不友好。
54.你對Memcach的理解,優勢有哪些?
Memcache是一種緩存技術,在必定的時間內將動態網頁通過解析以後保存到文件,下次訪問時動態網頁就直接調用這個文件,而沒必要在從新訪問數據庫。使用memcache作緩存的好處是:提升網站的訪問速度,減輕高併發時服務器的壓力。
Memcache的優勢:穩定、配置簡單、多機分佈式存儲、速度快。
55.對關係型數據庫而言,索引是至關重要的概念,請回答有關索引幾個問題:
a) 索引的目的是什麼?
一、快速訪問數據表中的特定信息,提升檢索速度
二、建立惟一性索引,保證數據庫表中每一行數據的惟一性
三、加速表和表之間的鏈接
四、使用分組和排序子句進行數據檢索時,能夠顯著減小查詢中分組和排序的時間
b) 索引對數據庫系統的負面影響是什麼?
負面影響:建立索引和維護索引須要耗費時間,這個時間隨着數據量的增長而增長;索引須要佔用物理空間,不光是表須要佔用數據空間,每一個索引也須要佔用物理空間;當對錶進行增、刪、改的時候索引也要動態維護,這樣就下降了數據的維護速度。
c) 爲數據表創建索引的原則有哪些?
一、在最頻繁使用的、用以縮小查詢範圍的字段上創建索引
二、在頻繁使用的、須要排序的字段上創建索引
d) 什麼狀況下不宜創建索引?
一、對於查詢中不多涉及的列或者重複值比較多的列,不宜創建索引
二、對於一些特殊的數據類型,不宜創建索引,好比文本字段(text)等。
56.web應用中,數據庫的讀取頻率遠高於寫入頻率, 如何優化MySQL而應對此種情景?
使用memcache緩存技術,將動態數據緩存到文件,訪問動態頁面時直接調用緩存文件,而沒必要從新訪問數據庫,這樣就減小了查詢數據庫的次數。
若是網站的訪問量很大,能夠把數據庫讀寫服務器分開,使用多臺服務器去處理數據庫查詢,使用較少的服務器去處理數據庫的寫入和修改。
57.請舉例說明在你的開發過程當中用什麼方法來加快頁面的加載速度
要用到服務器資源時纔打開,及時關閉服務器資源,數據庫添加索引,頁面可生成靜態,圖片等大文件單獨服務器。使用代碼優化工具。
58.include與require的區別?
(1)include()在執行文件時每次都要進行讀取和評估;require()文件只處理一次(實際上文件內容替換了require()語句)(2)require()一般放在PHP腳本程序的最前面include()的使用和require()同樣,通常放在流程控制的處理區段中,PHP腳本文件讀到include()語句時,纔將它包含的文件讀進來,這種方式,能夠把程序執行時的流程簡單化(3)require()和include()語句是語言結構,不是真正的函數,能夠像PHP的其餘語言結構同樣(4)include_once()和require_once()語句也是在腳本執行期間包括並運行指定文件,與include()require()惟一的區別是若是文件中的代碼已經被包括了,則不會再次包括.(5)require()包含文件失敗,中止執行,給出錯誤(致命的);(6)include()經常使用於動態包含.一般是自動加載的文件,即便加載出錯,整個程序仍是繼續執行一個頁面聲明,另外一個頁面調用包函文件失敗,繼續向下執行,返回一條警告
59.什麼是時間戳? 如何取得當前時間戳?
時間戳是從1970年1月1日 00:00:00到指定日期的秒數。
獲取當前時間戳:time()
60.瞭解XSS攻擊嗎? 如何防止 ?
XSS是跨站腳本攻擊,首先是利用跨站腳本漏洞以一個特權模式去執行攻擊者構造的腳本,而後利用不安全的Activex控件執行惡意的行爲。
使用htmlspecialchars()函數對提交的內容進行過濾,使字符串裏面的特殊符號實體化。
61.一個字節佔多少bit ? 一個IPv4地址佔幾個字節? 一個IPv6地址呢?
一個字節佔8bit,一個IPV4佔用4字節,一個IPV6佔用16字節。
62..M ADSL寬帶鏈接, 理想狀況下, 最大下載速度是多少KB/s ?
256KB/s
63.常見的英文提示
145.Fatal error: Call to undefined method ge_user() in /website/index.php on line 39
調用了未定義的方法ge_user(),檢查程序中有沒有定義此方法
146.Fatal error: Class ’client’ not found in /website/index.php on line 173
類client沒有找到,檢查文件中有沒有client類,或者有沒有包含client類文件
Warning: Cannot modify header information - headers already sent by (output started at /website/index.php:1) in /website/index.php on line 3
提示文件前面有輸出,檢查是否有輸出,或者編碼
148.Warning:session_start(): open(/website/tmp/sess_47e067121facf033785f9a1cb16d243b, O_RDWR) failed: No such file or directory (2) in /website/index.php on line 10
沒有找到文件或目錄,檢查文件是否存在
149.Parse error: syntax error, unexpected T_STRING in /website/index.php on line 18
18行語法錯誤,檢查語法
150.Warning:fopen(welcome.txt) [function.fopen]: failed to open stream: No such file or directory in /website/index.php on line 2
沒有找到welcome.txt文件,檢查文件是否存在
64. HTTP協議中GET、POST和HEAD的區別?
HEAD: 只請求頁面的首部。
GET: 請求指定的頁面信息,並返回實體主體。
POST: 請求服務器接受所指定的文檔做爲對所標識URI新從屬實體。
(1)HTTP 定義了與服務器交互的不一樣方法,最基本方法是 GET 和 POST。GET 適用於多數請求,而保留 POST 僅用於更新站點。
(2)在FORM提交時,如不指定Method,則默認爲GET請求,Form中提交數據將會附加在url以後,以?分開與url分開。字母數字字符原樣發送,但空格轉換爲「+「號,其它符號轉換爲%XX,其中XX爲 該符號以16進製表示的ASCII(或ISO Latin-1)值。GET請求提交的數據放置在HTTP請求協議頭中,而POST提交的數據則放在實體數據中;
GET方式提交的數據最多隻能有1024字節,而POST則沒有此限制。
(3)GET 這個是瀏覽器用來向服務器請求最經常使用的方法。POST這個方法也是用來傳送數據的,可是與GET不一樣的是,使用POST的時候,數據不是附在URI後面傳遞的,而是要作爲獨立的行來傳遞,此時還必需要發送一個Content_length標題,以標明數據長度,隨後一個空白行,而後就是實際傳送的數據。網頁的表單一般是用POST來傳送的。
請寫出PHP5權限控制修飾符(3分)
答:public(公共),private(私用),protected(繼承)
(-3-)
65.幾個重要的php.ini選項
Register Globals
php>=4.2.0,php.ini的register_globals選項的默認值預設爲Off,當register_globals的設定爲On時,程序能夠接收來自服務器的各類環境變量,包括表單提交的變量,並且因爲PHP沒必要事先初始化變量的值,從而致使很大的安全隱患。
safe_mode
安全模式,PHP用來限制文檔的存取、限制環境變量的存取,控制外部程序的執行。啓用安全模式必須設置php.ini中的safe_mode = On
1、限制文件存取
safe_mode_include_dir = 「/path1:/path2:/path3″
不一樣的文件夾用冒號隔開
2、限制環境變量的存取
safe_mode_allowed_env_vars = string
指定PHP程序能夠改變的環境變量的前綴,如:safe_mode_allowed_env_vars = PHP_ ,當這個選項的值爲空時,那麼php能夠改變任何環境變量
safe_mode_protected_env_vars = string
用來指定php程序不可改變的環境變量的前綴
3、限制外部程序的執行
safe_mode_exec_dir = string
此選項指定的文件夾路徑影響system、exec、popen、passthru,不影響shell_exec和「` `」。
disable_functions = string
不一樣的函數名稱用逗號隔開,此選項不受安全模式影響
magic_quotes
用來讓php程序的輸入信息自動轉義,全部的單引號(「’」),雙引號(「」」),反斜槓(「\」)和空字符(NULL),都自動被加上反斜槓進行轉義
magic_quotes_gpc = On 用來設置magic quotes 爲On,它會影響HTTP請求的數據(GET、POST、Cookies)
程序員也可使用addslashes來轉義提交的HTTP請求數據,或者用stripslashes來刪除轉義
一、命令注入(Command Injection)
二、eval注入(Eval Injection)
三、客戶端腳本攻擊(Script Insertion)
四、跨網站腳本攻擊(Cross Site Scripting, XSS)
五、SQL注入攻擊(SQL injection)
六、跨網站請求僞造攻擊(Cross Site Request Forgeries, CSRF)
七、Session 會話劫持(Session Hijacking)
八、Session 固定攻擊(Session Fixation)
九、HTTP響應拆分攻擊(HTTP Response Splitting)
十、文件上傳漏洞(File Upload Attack)
十一、目錄穿越漏洞(Directory Traversal)
十二、遠程文件包含攻擊(Remote Inclusion)
1三、動態函數注入攻擊(Dynamic Variable Evaluation)
1四、URL攻擊(URL attack)
1五、表單提交欺騙攻擊(Spoofed Form Submissions)
1六、HTTP請求欺騙攻擊(Spoofed HTTP Requests)
(-4-)