基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
当你的数据中有一些 ” ‘ set_magic_quotes_runtime() 可以让程序员在代码中动态开启或关闭 magic_quotes_runtime, magic_quotes_gpc 作用范围是:WEB客户服务端; magic_quotes_runtime 作用范围:从文件中读取的数据或执行exec()的结果或是从SQL查询中得到的; 所以 magic_quotes_gpc的设定值将会影响通过Get/Post/Cookies获得的数据, 代码如下: if (!get_magic_quotes_gpc()) { new_addslashes($_GET); new_addslashes($_POST); new_addslashes($_COOKIE); } function new_addslashes($string) { if (is_array($string)) { foreach ($string as $key => $value) { $string[$key] = new_addslashes($value); } } else { $string = addslashes($string); } return $string; } 另一示例: 代码如下: $data1 = $_POST['aaa'];
$data2 = implode(file('1.txt')); if (get_magic_quotes_gpc()) { //把数据$data1直接写入数据库 } else { $data1 = addslashes($data1); //把数据$data1写入数据库 } if (get_magic_quotes_runtime()){ //把数据$data2直接写入数据库 //从数据库读出的数据要经过一次stripslashes()之后输出 } else { $data2 = addslashes($data2); //把数据$data2写入数据库 //从数据库读出的数据直接输出 } ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 经验总结:一、对于GPC,不管系统有没有开启magic_quotes_gpc(即php.ini中magic_quotes_gpc = On),我们统一开启 magic_quotes_gpc,对get、post、cookie的内容进行转义。操作如下: 代码如下: function saddslashes($string) { if (is_array($string)) { foreach ($string as $key => $val) { $string[$key] = saddslashes($val); } } else { $string = addslashes($string); } return $string; } //GPC过滤 $magic_quote = get_magic_quotes_gpc(); if(empty($magic_quote)) { $_GET = saddslashes($_GET); $_POST = saddslashes($_POST); } //COOKIE,给cookie值转义 $prelength = strlen($_SC['cookiepre']); foreach ($_COOKIE as $key => $val) { if(substr($key,$prelength) == $_SC['cookiepre']) { $_SCOOKIE[(substr($key,$prelength))] = empty($magic_quote) ? saddslashes($val) : $val; } } 二、对于magic_quotes_runtime,我们统一关闭它,即set_magic_quotes_runtime(0);不让从数据库读取出来的数据的单引号、双引号和反斜杠都自动被加上。这样,对数据库的操作如下:添加数据到数据库之前,我们手动对数据进行addslashes(),而从数据库取出数据时,则作相反操作,即stripslashes()。三、对于要序列化的内容,要保持裸数据,即要去掉转义,stripslashes(),然后在把序列化过的内容保存到数据库当中(注意,序列化过的内容是不带单引号(')、双引号(”)、反斜线()的),示例如下: $feedarr['body_data'] = serialize(stripslashes($body_data)); ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 出现Function set_magic_quotes_runtime() is deprecated 问题?在安装PHPCMS出现Deprecated: Function set_magic_quotes_runtime() is deprecated 错误,查了一下网络及资料发现是PHP5.3和PHP6.0之后移除了set_magic_quotes_runtime()函数。 view sourceprint? 或 view sourceprint? 或 view sourceprint? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |