删除php 5.4,php – 解決register_globals在PHP 5.4之後移除的方案

php – 解決register_globals在PHP 5.4之後移除的方案

2013-04-30 / JSN / 0 Comments / 2,627 views

register_globals

在 PHP 5.3.0 起廢棄並在PHP 5.4.0 起移除。

這功能這樣子運作的:

當你有一筆$_POST[a] = 123;

嚴謹的寫法應該是

$a = $_POST[a];

echo $a; //輸出123

但如果php.ini中register_globals = On

你只需要

echo $a; // 輸出123

方便,但是很不安全。不安全請參考官網說明。

但當遇到專案非常龐大,有時候改版須要一個一個檢查又沒有時間,

你需要使用原來的register_globals功能來應急一下,

PHP下面的版有網友寫出一個function可供網友貼到你的全域文件。

這樣在php 5.4 以後就可以照常運作了(等同register_globals = On)。

轉自http://tw1.php.net/manual/en/security.globals.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

;html-script:false]

/**

* function to emulate the register_globals setting in PHP

* for all of those diehard fans of possibly harmful PHP settings :-)

* @author Ruquay K Calloway

* @param string $order order in which to register the globals, e.g. 'egpcs' for default

*/

functionregister_globals($order='egpcs')

{

// define a subroutine

if(!function_exists('register_global_array'))

{

functionregister_global_array(array$superglobal)

{

foreach($superglobalas$varname=>$value)

{

global$$varname;

$$varname=$value;

}

}

}

$order=explode("rn",trim(chunk_split($order,1)));

foreach($orderas$k)

{

switch(strtolower($k))

{

case'e':register_global_array($_ENV);break;

case'g':register_global_array($_GET);break;

case'p':register_global_array($_POST);break;

case'c':register_global_array($_COOKIE);break;

case's':register_global_array($_SERVER);break;

}

}

}

register_globals();

分享,才能讓我知道對你有幫助:

相關文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值