溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP初級(jí)開發(fā)者常見的5種疑問是怎樣的

發(fā)布時(shí)間:2021-09-28 11:01:07 來源:億速云 閱讀:110 作者:柒染 欄目:大數(shù)據(jù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)PHP初級(jí)開發(fā)者常見的5種疑問是怎樣的,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

一、文件上傳需要注意哪些細(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). 表單提交到接收頁面,接收頁面使用$_FILES來接收上傳的文件。$_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). 為了避免上傳文件重名,可以通過上傳的文件名獲取到文件后綴,然后使用時(shí)間戳+文件后綴的方式為文件重新命名。

二、$_REQUEST、$_GET、$_POST、$_COOKIE 的關(guān)系和區(qū)別:

1.關(guān)系:$_REQUEST包含了$_GET、$_POST、$_COOKIE等的所有內(nèi)容,是它們的集合體。

2.通過$_REQUEST獲取變量值,PHP頁面因?yàn)椴淮_定它是哪種傳值方式,

因此會(huì)根據(jù)php.ini中的配置來接收值。

php.ini里可以設(shè)置,variables_order = “GPC”。其含義是GET,POST,COOKIE.

所以PHP頁面會(huì)先從$_GET中獲取,再從$_POST中獲取,然后從$_COOKIE中獲取。

新獲得的值會(huì)覆蓋之前獲取到的值。

因此從表現(xiàn)形式上看,$_REQUEST最后是獲取$_COOKIE中的值,如果$_COOKIE中沒有值,

會(huì)獲取$_POST中的值,如果$_POST沒有獲取到 ,就去$_GET中獲取。

如果$_GET中也沒有該值,那么$_REQUEST就返回null。

三、什么是SQL注入?如何防止SQL注入?

SQL注入攻擊是黑客對(duì)數(shù)據(jù)庫進(jìn)行攻擊的常用手段之一。一部分程序員在編寫代碼的時(shí)候,

沒有對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷,注入者可以在表單中輸入一段數(shù)據(jù)庫查詢代碼并提交,

程序?qū)⑻峤坏男畔⑵礈惿梢粋€(gè)完整sql語句,服務(wù)器被欺騙而執(zhí)行該條惡意的SQL命令。注入者根據(jù)程序返回的結(jié)果,

成功獲取一些敏感數(shù)據(jù),甚至控制整個(gè)服務(wù)器,這就是SQL注入。

要對(duì)提交的信息進(jìn)行過濾,對(duì)單引號(hào)進(jìn)行轉(zhuǎn)義。

首先可以在php.ini中設(shè)置,讓所有的單引號(hào)在提交后都進(jìn)行轉(zhuǎn)義。或者使用addslashes().

四、 MVC的概念是什么?

MVC(即模型-視圖-控制器)是80年代發(fā)明的一種軟件設(shè)計(jì)模式或者說編程思想。

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)頁,在不同節(jié)日到來的時(shí)候能顯示不同的頁面風(fēng)格,這只需要提前制作多個(gè)視圖層模板頁面,

而無需更改M層程序。

MVC做到了編程中的分工合作,代碼的可重用性得到最大化體現(xiàn),程序邏輯更加清晰而富有條理,便于后期維護(hù)管理。

在網(wǎng)站開發(fā)中,

模型層一般負(fù)責(zé)對(duì)數(shù)據(jù)庫表信息進(jìn)行增刪改查,

視圖層負(fù)責(zé)顯示頁面內(nèi)容,

控制器層在M和V之間起到調(diào)節(jié)作用,控制器層決定調(diào)用哪個(gè)model類的哪個(gè)方法,

執(zhí)行完畢后由控制器層決定將結(jié)果assign到哪個(gè)view層。

五、$this,self, parent分別代表什么?哪些場(chǎng)合下使用

$this代表的是當(dāng)前對(duì)象 self代表的是當(dāng)前的類 parent代表的是當(dāng)前類的父類

使用場(chǎng)合:

$this只能使用在當(dāng)前類中,通過$this->可以調(diào)用當(dāng)前類中的屬性和方法;

self只能在當(dāng)前類中使用,通過作用域操作符::訪問當(dāng)前類中的類常量、當(dāng)前類中的靜態(tài)屬性、當(dāng)前類中的方法;

parent只能使用在有父類的當(dāng)前類中,通過作用域操作符::訪問父類中的類常量、父類中的靜態(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種疑問是怎樣的了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI