首頁  >  文章  >  後端開發  >  PHP初級開發者常見的5種疑問

PHP初級開發者常見的5種疑問

怪我咯
怪我咯原創
2017-01-16 11:34:501318瀏覽

一、文件上傳需要注意哪些細節?怎麼把檔案儲存到指定目錄?怎麼避免上傳文件重名問題?

1). 首現要在php.ini中開啟檔案上傳;

2). 在php.ini中有一個允許上傳的最大值,預設是2MB。必要的時候可以更改;

3). 上傳表單一定要記住在form標籤中寫上enctype="multipart/form-data";

4). 提交方式method 必須是post;

5).設定type="file" 的表單控制項,且必須具有name屬性值;

6). 為了上傳成功,必須保證上傳檔案的大小是否超標、檔案類型是否符合要求,上傳後存放的路徑是否存在;

7). 表單提交到接收頁面,接收頁面使用$_FILES來接收上傳的文件。 $_FILES是個多維數組。

第一維下標是上傳控制項的name,二維下標分別為name/type/tmp_name/size/error。

分別代表檔案名稱、檔案類型、上傳到暫存目錄下的暫存檔名稱、檔案大小、是否有錯誤。

如果是批次上傳,那麼二維下標就是數組,而並非是字串。

8). 檔案上傳後是被放置在伺服器端臨時路徑下,需要使用move_uploaded_file ()函數,才可以將上傳後的檔案儲存到指定目錄。

9). 為了避免上傳檔案重名,可以透過上傳​​的檔案名稱取得到檔案後綴,然後使用時間戳記+檔案後綴的方式為檔案重新命名。

二、$_REQUEST、$_GET、$_POST、$_COOKIE 的關係和區別:

  1. 關係:$_REQUEST包含了$_GET、$_POST、$_COOKIE的所有內容,是它們的集合體。

  2. $_GET、$_POST、$_COOKIE在$_REQUEST中都有一份副本。改變$_REQUEST的值不影響$_GET等,反之亦然。

  3. GET和POST同名的情況下,$_REQUEST取的是POST的值。 COOKIE與GET或POST重名的情況下,$_REQUEST取的是COOKIE的值。 COOKIE的優先權最高。錯誤。

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

SQL注入攻擊是駭客對資料庫攻擊的常用手段之一。一部分程式設計師在編寫程式碼的時候,

沒有對使用者輸入資料的合法性進行判斷,注入者可以在表單中輸入一段資料庫查詢程式碼並提交,

程式將提交的資訊拼湊產生一個完整sql語句,伺服器被欺騙而執行該條惡意的SQL指令。注入者根據程式回傳的結果,

成功取得一些敏感數據,甚至控制整個伺服器,這就是SQL注入。

要將提交的資訊過濾,對單引號進行轉義。

首先可以在php.ini中設置,讓所有的單引號在提交後都進行轉義。或是使用addslashes().

四、 MVC的概念是什麼?

MVC(即模型-視圖-控制器)是80年代發明的軟體設計模式或說程式設計想法。

M指(Model)模型層,V是指(View)視圖層(顯示層或使用者介面),C是指(Controller)控制層。

使用mvc的目的是實現M和V分離,從而使得一個程式可以輕鬆使用不同的使用者介面。

C存在的目的則是在M和V之間起到調節作用,確保M和V的同步,一旦M改變,V應該能同步更新。

將M和V分離,就可以做到同一個網頁,在不同節日到來的時候能顯示不同的頁面風格,這只需要提前製作多個視圖層模板頁面,

而無需更改M層程序。

MVC做到了程式設計中的分工合作,程式碼的可重用性已最大化體現,程式邏輯更加清晰而富有條理,便於後期維護管理。

在網站開發中,

模型層一般負責對資料庫表格資訊進行增刪改查,

視圖層負責顯示頁面內容,

控制器層在M和V之間起到調節作用,控制器層決定呼叫哪個model類別的哪個方法,

執行完畢後由控制器層決定將結果assign到哪個view層。

五、$this,self, parent分別代表什麼?哪些場合下使用

$this代表的是當前物件self代表的是當前的類別parent代表的是當前類別的父類

使用場合:

$this只能使用在當前類別中,透過$this- >可以呼叫目前類別中的屬性和方法;

self只能在目前類別中使用,透過作用域操作符::存取目前類別中的類別常數、目前類別中的靜態屬性、目前類別中的方法;

parent只能使用在有父類別的目前類別中,透過作用域運算元::存取父類別中的類別常數、父類別中的靜態屬性、父類別中的方法。

作用於操作符的使用場合

a)本類中:

i.self::類別常數

ii.self::靜態屬性

iii.self::方法() parent::方法( )

b)子類別中:

i.parent::類別常數

ii.parent::靜態屬性(public或protected)

iii.parent::方法()(public或protected)

iii.parent::方法()(public或protected)

c )類外:🎜🎜i.類別名稱::類別常數🎜

ii.類別名稱::靜態屬性(public)

iii.類別名稱::靜態方法(public)


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn