PHP 變數覆蓋 extract

2021-09-05 01:17:50 字數 854 閱讀 2053

這個函式 是因為看了下 phpcms 前台 getshell 發現這些函式果然乙個都不能漏。

該函式官方文件 在此  ,多翻官方文件,好多人跟我說過這個習慣 :)

原因 無非是 變數覆蓋,至於 能造成什麼危害 就看下邊**怎麼寫了。

int extract ( array &$array [, int $flags = extr_overwrite [, string $prefix = null ]] )

flags

extr_overwrite

如果有衝突,覆蓋已有的變數。

extr_skip

如果有衝突,不覆蓋已有的變數。

extr_prefix_same

如果有衝突,在變數名前加上字首 prefix。

extr_prefix_all

給所有變數名加上字首 prefix。

extr_prefix_invalid

僅在非法/數字的變數名前加上字首 prefix。

extr_if_exists

僅在當前符號表中已有同名變數時,覆蓋它們的值。其它的都不處理。 舉個例子,以下情況非常有用:定義 一些有效變數,然後從 $_request 中僅匯入這些已定義的變數。

extr_prefix_if_exists

僅在當前符號表中已有同名變數時,建立附加了字首的變數名,其它的都不處理。

extr_refs

將變數作為引用提取。這有力地表明了匯入的變數仍然引用了 array 引數的值。可以單獨使用這個標誌或 者在 flags 中用 or 與其它任何標誌結合使用。

如果沒有指定 flags,則被假定為 extr_overwrite。

extract 變數覆蓋

php extract 函式從陣列中把變數匯入到當前的符號表中。對於陣列中的每個元素,鍵名用於變數名,鍵值用於變數值。下面是php的超級全域性變數,可以了解乙個特性,全是陣列。gl obal s,所有 全域性變數 陣列g lo bals 所有全 局變數數 組 server,伺服器環境變數陣列 ge ...

PHP變數覆蓋

register globals用來註冊全域性變數 當register globals全域性變數設定開啟時,傳遞過來的值會被直接註冊為全域性變數而使用,這會造成全域性變數覆蓋 新版本沒有這個東西了,大概在5.2版本以後就消失了php version 5.2 parse str name bill a...

php安全 變數覆蓋

php.ini註冊全域性變數 將表單傳入的資料作為全域性變數,例如 接受表單傳遞的值 變數username未定義,被get請求變數覆蓋。注 5.4以上版本已刪除 5.3以下需手動新增 遍歷鍵值 echo a 輸出為get請求的值,變數a被覆蓋。extract array 將陣列轉換為變數,鍵為變數名...