- 相關(guān)推薦
PHP初級(jí)開發(fā)者常見的5種疑問(wèn)
在php學(xué)習(xí)的過(guò)程中是不是也會(huì)面臨這樣那樣的疑問(wèn),不知道該問(wèn)誰(shuí),自己又不能解決,本文為大家總結(jié)php學(xué)習(xí)的基礎(chǔ)知識(shí):PHP初級(jí)開發(fā)者常見的5種疑問(wèn),歡迎好學(xué)上進(jìn)的你來(lái)看喲!
1、文件上傳需要注意哪些細(xì)節(jié)?
1) 首現(xiàn)要在php.ini中開啟文件上傳;
2) 在php.ini中有一個(gè)允許上傳的最大值,默認(rèn)是2MB。必要的時(shí)候可以更改;
3) 上傳表單一定要記住在form標(biāo)簽中寫上enctype="multipart/form-data";
4) 提交方式 method 必須是 post;
5) 設(shè)定 type="file" 的表單控件,并且必須具有name屬性值;
6) 為了上傳成功,必須保證上傳文件的大小是否超標(biāo)、文件類型是否符合要求,上傳后存放的'路徑是否存在;
7) 表單提交到接收頁(yè)面,接收頁(yè)面使用$_FILES來(lái)接收上傳的文件。$_FILES是個(gè)多維數(shù)組。
第一維下標(biāo)是上傳控件的name,二維下標(biāo)分別為name/type/tmp_name/size/error。
分別代表文件名、文件類型、上傳到臨時(shí)目錄下的臨時(shí)文件名、文件大小、是否有錯(cuò)誤。
如果是批量上傳,那么二維下標(biāo)就是數(shù)組,而并非是字符串。
8) 文件上傳后是被放置在服務(wù)器端臨時(shí)路徑下,需要使用move_uploaded_file ()函數(shù),才可以將上傳后的文件保存到指定目錄。
9) 為了避免上傳文件重名,可以通過(guò)上傳的文件名獲取到文件后綴,然后使用時(shí)間戳+文件后綴的方式為文件重新命名。
2、$_REQUEST、$_GET、$_POST、$_COOKIE 的關(guān)系和區(qū)別:
1.關(guān)系:$_REQUEST包含了$_GET、$_POST、$_COOKIE等的所有內(nèi)容,是它們的集合體。
2.通過(guò)$_REQUEST獲取變量值,PHP頁(yè)面因?yàn)椴淮_定它是哪種傳值方式,
因此會(huì)根據(jù)php.ini中的配置來(lái)接收值。
php.ini里可以設(shè)置,variables_order = “GPC”。其含義是GET,POST,COOKIE.
所以PHP頁(yè)面會(huì)先從$_GET中獲取,再?gòu)?_POST中獲取,然后從$_COOKIE中獲取。
新獲得的值會(huì)覆蓋之前獲取到的值。
因此從表現(xiàn)形式上看,$_REQUEST最后是獲取$_COOKIE中的'值,如果$_COOKIE中沒(méi)有值,
會(huì)獲取$_POST中的值,如果$_POST沒(méi)有獲取到 ,就去$_GET中獲取。
如果$_GET中也沒(méi)有該值,那么$_REQUEST就返回null。
3、什么是SQL注入?如何防止SQL注入?
SQL注入攻擊是黑客對(duì)數(shù)據(jù)庫(kù)進(jìn)行攻擊的常用手段之一。一部分程序員在編寫代碼的時(shí)候,沒(méi)有對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷,注入者可以在表單中輸入一段數(shù)據(jù)庫(kù)查詢代碼并提交,程序?qū)⑻峤坏男畔⑵礈惿梢粋(gè)完整sql語(yǔ)句,服務(wù)器被欺騙而執(zhí)行該條惡意的'SQL命令。注入者根據(jù)程序返回的結(jié)果,成功獲取一些敏感數(shù)據(jù),甚至控制整個(gè)服務(wù)器,這就是SQL注入。
要對(duì)提交的信息進(jìn)行過(guò)濾,對(duì)單引號(hào)進(jìn)行轉(zhuǎn)義。首先可以在php.ini中設(shè)置,讓所有的單引號(hào)在提交后都進(jìn)行轉(zhuǎn)義。或者使用addslashes().
4、MVC的概念是什么?
MVC(即模型-視圖-控制器)是80年代發(fā)明的一種軟件設(shè)計(jì)模式或者說(shuō)編程思想。
M指(Model)模型層,V是指(View)視圖層(顯示層或者用戶界面),C是指(Controller)控制層。
使用mvc的目的是實(shí)現(xiàn)M和V分離,從而使得一個(gè)程序可以輕松使用不同的用戶界面。
C存在的目的則是在M和V之間起到調(diào)節(jié)作用,確保M和V的同步,一旦M改變,V應(yīng)該能同步更新。
將M和V分離,就可以做到同一個(gè)網(wǎng)頁(yè),在不同節(jié)日到來(lái)的`時(shí)候能顯示不同的頁(yè)面風(fēng)格,這只需要提前制作多個(gè)視圖層模板頁(yè)面,而無(wú)需更改M層程序。
MVC做到了編程中的分工合作,代碼的可重用性得到最大化體現(xiàn),程序邏輯更加清晰而富有條理,便于后期維護(hù)管理。
在網(wǎng)站開發(fā)中,模型層一般負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)表信息進(jìn)行增刪改查,視圖層負(fù)責(zé)顯示頁(yè)面內(nèi)容,控制器層在M和V之間起到調(diào)節(jié)作用,控制器層決定調(diào)用哪個(gè)model類的哪個(gè)方法,執(zhí)行完畢后由控制器層決定將結(jié)果assign到哪個(gè)view層。
5、$this,self, parent分別代表什么?哪些場(chǎng)合下使用
$this代表的是當(dāng)前對(duì)象 self代表的是當(dāng)前的類 parent代表的是當(dāng)前類的父類
使用場(chǎng)合:
$this只能使用在當(dāng)前類中,通過(guò)$this->可以調(diào)用當(dāng)前類中的屬性和方法;
self只能在當(dāng)前類中使用,通過(guò)作用域操作符::訪問(wèn)當(dāng)前類中的'類常量、當(dāng)前類中的靜態(tài)屬性、當(dāng)前類中的方法;
parent只能使用在有父類的當(dāng)前類中,通過(guò)作用域操作符::訪問(wèn)父類中的類常量、父類中的靜態(tài)屬性、父類中的方法。
作用于操作符的使用場(chǎng)合
a)本類中:
i.self::類常量
ii.self::靜態(tài)屬性
iii.self::方法() parent::方法()
b)子類中:
i.parent::類常量
ii.parent::靜態(tài)屬性(public或者protected)
iii.parent::方法()(public或者protected)
c)類外:
i.類名::類常量
ii.類名::靜態(tài)屬性(public)
iii.類名::靜態(tài)方法(public)
【PHP初級(jí)開發(fā)者常見的5種疑問(wèn)】相關(guān)文章:
PHP開發(fā)者常犯的10個(gè)MySQL錯(cuò)誤08-29
PHP面試常見題型09-23
PHP面試常見題型問(wèn)答06-27
PHP常見漏洞的防范措施11-08
PHP網(wǎng)站常見的安全漏洞11-07
php常見的框架及優(yōu)缺點(diǎn)分析09-21
PHP常見面試題詳解08-09
PHP常見面試題及解析08-14