我今天在看一本php和MySql范例精讲的书 里面有一段代码没有看懂.我看的是一个注册系统的代码其中的一个文件的内容如下:
<?php
// set true if production environment else false for development
define ('IS_ENV_PRODUCTION', true);
// configure error reporting options
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', !IS_ENV_PRODUCTION);//
ini_set('error_log', 'log/phperror.txt');//设置错误日志的错放位置
// set time zone to use date/time functions without warnings
date_default_timezone_set('America/New_York');//设置时区
// compensate for magic quotes if necessary
if (get_magic_quotes_gpc())
{
function _stripslashes_rcurs($variable, $top = true)
{
$clean_data = array();
foreach ($variable as $key => $value)
{
$key = ($top) ? $key : stripslashes($key);
$clean_data[$key] = (is_array($value)) ?
stripslashes_rcurs($value, false) : stripslashes($value);
}
return $clean_data;
}
$_GET = _stripslashes_rcurs($_GET);
$_POST = _stripslashes_rcurs($_POST);
// $_REQUEST = _stripslashes_rcurs($_REQUEST);
// $_COOKIE = _stripslashes_rcurs($_COOKIE);
}
?>
这是一个公共文件的代码,其他的所有的文件都包含了这个文件.里面有基础不懂的地方: $clean_data[$key] = (is_array($value)) ? stripslashes_rcurs($value, false) : stripslashes($value);这是第二个冒号表达式其中stripslashes_rcurs这个函数定义的时候是有下划线的_stripslashes_rcurs为什么都用的时候没有了呢??
我经反复核查我没写错代码!!! 请高手解答
<?php
// set true if production environment else false for development
define ('IS_ENV_PRODUCTION', true);
// configure error reporting options
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', !IS_ENV_PRODUCTION);//
ini_set('error_log', 'log/phperror.txt');//设置错误日志的错放位置
// set time zone to use date/time functions without warnings
date_default_timezone_set('America/New_York');//设置时区
// compensate for magic quotes if necessary
if (get_magic_quotes_gpc())
{
function _stripslashes_rcurs($variable, $top = true)
{
$clean_data = array();
foreach ($variable as $key => $value)
{
$key = ($top) ? $key : stripslashes($key);
$clean_data[$key] = (is_array($value)) ?
stripslashes_rcurs($value, false) : stripslashes($value);
}
return $clean_data;
}
$_GET = _stripslashes_rcurs($_GET);
$_POST = _stripslashes_rcurs($_POST);
// $_REQUEST = _stripslashes_rcurs($_REQUEST);
// $_COOKIE = _stripslashes_rcurs($_COOKIE);
}
?>
这是一个公共文件的代码,其他的所有的文件都包含了这个文件.里面有基础不懂的地方: $clean_data[$key] = (is_array($value)) ? stripslashes_rcurs($value, false) : stripslashes($value);这是第二个冒号表达式其中stripslashes_rcurs这个函数定义的时候是有下划线的_stripslashes_rcurs为什么都用的时候没有了呢??
我经反复核查我没写错代码!!! 请高手解答
你可以在你的网址后面加上“?a[]=7&a[]=3”测试一下
define ('IS_ENV_PRODUCTION', false);
不然不会显示错误
你要带上这种数组参数才会报错“?a[]=7&a[]=3”
测试如下(我环境的get_magic_quotes_gpc是off的) 测试参数为xxxx.php?a=1:<?php
define ('IS_ENV_PRODUCTION', true);
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', !IS_ENV_PRODUCTION);//
ini_set('error_log', 'log/phperror.txt');//设置错误日志的错放位置
date_default_timezone_set('America/New_York');//设置时区if (!get_magic_quotes_gpc()){
echo "START<br>";
function test(){
echo "TEST!!!!<br>";
} function _stripslashes_rcurs($variable, $top = true){
echo "<br>进入 _stripslashes_rcurs<br>";
$clean_data = array(); foreach ($variable as $key => $value){
echo "<br>进入for <br>";
$key = ($top) ? $key : stripslashes($key);
$clean_data[$key] = (!is_array($value)) ? _stripslashes_rcurs($value, false) : stripslashes($value);
}
return $clean_data;
} $_GET = _stripslashes_rcurs($_GET);
//$_POST = _stripslashes_rcurs($_POST);
// $_REQUEST = _stripslashes_rcurs($_REQUEST);
// $_COOKIE = _stripslashes_rcurs($_COOKIE);}打印结果:
/*********************/
START进入 _stripslashes_rcurs进入for进入 _stripslashes_rcurs
/***********************/如果将_stripslashes_rcurs换成stripslashes_rcurs,则不会进入_stripslashes_rcurs函数。
define ('IS_ENV_PRODUCTION', true);
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', !IS_ENV_PRODUCTION);//
ini_set('error_log', 'log/phperror.txt');//设置错误日志的错放位置
date_default_timezone_set('America/New_York');//设置时区if (!get_magic_quotes_gpc()){
echo "START<br>";
function test(){
echo "TEST!!!!<br>";
} function _stripslashes_rcurs($variable, $top = true){
echo "<br>进入 _stripslashes_rcurs<br>";
$clean_data = array(); foreach ($variable as $key => $value){
echo "<br>进入for <br>";
$key = ($top) ? $key : stripslashes($key);
$clean_data[$key] = (!is_array($value)) ? _stripslashes_rcurs($value, false) : stripslashes($value);
}
return $clean_data;
} $_GET = _stripslashes_rcurs($_GET);
//$_POST = _stripslashes_rcurs($_POST);
// $_REQUEST = _stripslashes_rcurs($_REQUEST);
// $_COOKIE = _stripslashes_rcurs($_COOKIE);}