警告
$_REQUEST 默认填充的方式可能导致奇怪的错误,因为配置指令“variables_order”的默认设置不佳。
示例:在电子商店中,您希望根据用户偏好显示价格。用户可以切换货币,或者使用之前的选择。默认情况下,以下代码将不会按预期工作
<?php
if ($_REQUEST['currency']) {
$currency = $_REQUEST['currency']; setcookie('currency', $_REQUEST['currency'], 0, 'eshop.php'); }
else {
$currency = 'USD';
}
echo '所有价格均以 ', $currency;
echo '<a href="eshop.php?currency=USD">切换到 USD</a>';
echo '<a href="eshop.php?currency=EUR">切换到 EUR</a>';
?>
无论用户选择什么,都会使用 cookie 值,因此除非您更改默认的“request_order”或“variables_order”,否则 $_REQUEST[something] 变量将永远使用 cookie 值,而不管用户的“REQUEST”是什么。
修复方案 1
<?php
ini_set('request_order', 'CGP'); .
.
.
?>
修复方案 2
要非常小心和耐心,使用 $_GET、$_POST 和 $_COOKIE,而不是方便的 $_REQUEST。祝您好运。