PHP get Global Varable

php 在 4.x 版以後要抓全域變數都要用 $_POST, $_GET, $_COOKIE... etc.
雖然只要在 php.ini 中, 去設定
register_globals
就可以了,
不過為了安全考量, 還是別這樣子改比較好,
但是自己懶得打那麼長的字怎麼辦?
所以還是來寫個小程式來搞定它.

foreach ($_REQUEST as $key => $val) {
$$key = $val;
}

這是全域的處理法, 還是不太建議使用,

因為這就跟之前一樣意思了, 還是有限制的使用比較好,

自己一定知道前一頁是如何傳送變數過來的,

所以用以下此程式碼會比較好一點.

foreach ($_POST as $key => $val) {
$$key = $val;
}

$_POST 可改為 $_COOKIE, $_SESSION, $_GET ... 等.

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈PHP get Global Varable〉中有 7 則留言

  1. 哈~ 這方法不錯, 不過他有特別警告就是了.. 😛
    Do not use extract() on untrusted data, like user-input ($_GET, ...). If you do, for example, if you want to run old code that relies on register_globals temporarily, make sure you use one of the non-overwriting extract_type values such as EXTR_SKIP and be aware that you should extract in the same order that's defined in variables_order within the php.ini.

  2. 抱歉,走投無路了,借個版面請教您一個問題,打擾之處請見諒!!
    我自己有設計了一個登入的程式,每當第一次登入的時候就會產生2個session的暫存檔,一個有資料一個沒有資料,然後程式會告知我沒有登入要先登入,然後我再登入一次就可以順利進入了!
    如果登出後,只要我沒有關閉瀏覽器,再次進入的時候就沒有上述的問題,請問這是什麼狀況啊?
    我使用的是php5.2.4,apache2.2.4,mysql5
    未避免佔用太多版面,如果需要看程式碼,煩請您告知,我再貼上來,謝謝你!!

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料