php 内部字符串中英文翻译,php分割中英文字符串的几种方...-解析php中$_REQUEST的用法-php数组全排列的非递归算法的实例代码_169IT.COM...

有关php中$_REQUEST的用法,很多资料上都有介绍。

在php手册中,这个变量解释为:"默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组。"

注意其中包含cookie的内容,做个测试:

$_COOKIE['name'] = "aaa";

print_r($_REQUEST);

?>

输出结果:

Array ( )

并没有取到cookie的内容呀,为什么呢?

再看手册,下面有一行:

5.3.0 引入 request_order。该指令会影响 $_REQUEST 的内容

我的php版本是5.3.17,打开php.ini,找到request_order:

; This directive determines which super global data (G,P,C,E & S) should

; be registered into the super global array REQUEST. If so, it also determines

; the order in which that data is registered. The values for this directive are

; specified in the same manner as the variables_order directive, EXCEPT one.

; Leaving this value empty will cause PHP to use the value set in the

; variables_order directive. It does not mean it will leave the super globals

; array REQUEST empty.

; Default Value: None

; Development Value: "GP"

; Production Value: "GP"

; http://php.net/request-order

request_order = "GP"

翻译:

这条指令确定了哪些超全局数据该被注册到超全局数组REQUEST中,这些超全局数据包括G(GET),P(POST),C(COOKIE),E(ENV),S(SERVER)。这条指令同样指定了这些数据的注册顺序,换句话说GP和PG是不一样的。注册的顺序是从左至右,即右侧的值会覆盖左侧的。比如,当设置为GPC时,COOKIE > POST > GET,依次覆盖。如果这个项被设置为空,php将会使用指令variables_order的值来指定。

如果将php.ini中的request_order设置为"GPC"后,运行下面的程序post.php,看看结果如何:

error_reporting(0);

setcookie("value", "cookie", time()+3600);

echo "===GET===
";

echo $_GET['value'] . "
";

echo "===POST===
";

echo $_POST['value'] . "
";

echo "===COOKIE===
";

echo $_COOKIE['value'] . "
";

echo "===REQUEST===
";

echo $_REQUEST['value'] . "
";

?>

输出结果:

===GET===

get

===POST===

post

===COOKIE===

cookie

===REQUEST===

cookie

可以看到cookie的值被取到了。

为了使程序兼容更多的版本,不要在程序中使用$_REQUEST这个超全局变量。

当程序确实需要接收get和post过来的参数时,可以用下面的方法代替:

$_REQ = array_merge($_GET, $_POST);

完整代码:

error_reporting(0);

setcookie("value", "cookie", time()+3600);

$_REQ = array_merge($_GET, $_POST);

echo "===GET===
";

echo $_GET['value'] . "
";

echo "===POST===
";

echo $_POST['value'] . "
";

echo "===COOKIE===
";

echo $_COOKIE['value'] . "
";

echo "===REQUEST===
";

echo $_REQ['value'] . "
";

?>

输出结果:

===GET===

get

===POST===

post

===COOKIE===

cookie

===REQUEST===

post

另外,判断是post还是get请求的页面,最好使用:

代码示例:

$_SERVER['REQUEST_METHOD']

方法。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值