get_magic_quotes_gpc函数是一个用来判断是否为用户提供的数据增加斜线了,这个在php.ini配置文件中哦,下面我来介绍一下get_magic_quotes_gpc()函数说明.
get_magic_quotes_gpc函数介绍
取得 PHP 环境变数 magic_quotes_gpc 的值,属于 PHP 系统功能。
语法: long get_magic_quotes_gpc(void);
返回值: 长整数
本函数取得 PHP 环境配置的变量 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。返回 0 表示关闭本功能;返回 1 表示本功能打开。
当 magic_quotes_gpc 打开时,所有的 ‘ (单引号), ” (双引号), (反斜线) and 空字符会自动转为含有反斜线的溢出字符。
magic_quotes_gpc设置是否自动为GPC(get,post,cookie)传来的数据中的'”加上反斜线。可以用get_magic_quotes_gpc()检测系统设置。
如果没有打开这项设置,可以使用addslashes()函数添加,它的功能就是给数据库查询语句等的需要在某些字符前加上了反斜线。
这些字符是单引号(')、双引号(”)、反斜线()与 NUL(NULL 字符)。
默认情况下,PHP 指令 magic_quotes_gpc 为 on,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。
不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。
例
利用 get_magic_quotes_gpc()预防数据库攻击的正确做法
代码如下
<?php function check_input($value) { // 去除斜杠 if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // 如果不是数字则加引号 if (!is_numeric($value)) { $value = “‘” . mysql_real_escape_string($value) . “‘”; } return $value; } $con = mysql_connect(“localhost”, “hello”, “321″); if (!$con) { die(‘Could not connect: ‘ . mysql_error()); } // 进行安全的 SQL $user = check_input($_POST['user']); $pwd = check_input($_POST['pwd']); $sql = “SELECT * FROM users WHERE user=$user AND password=$pwd”; mysql_query($sql); mysql_close($con); ?>
总结如下:
1. 对于magic_quotes_gpc=on的情况,
我们可以不对输入和输出数据库的字符串数据作
addslashes()和stripslashes()的操作,数据也会正常显示。
如果此时你对输入的数据作了addslashes()处理,
那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。
2. 对于magic_quotes_gpc=off 的情况
必须使用addslashes()对输入数据进行处理,但并不需要使用stripslashes()格式化输出
因为addslashes()并未将反斜杠一起写入数据库,只是帮助mysql完成了sql语句的执行
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持小牛知识库!
关于函数的事情,总是说不完的,下面就罗列一些编写函数的注意事项。特别声明,这些事项不是我总结的,我是从一本名字为《Learning Python》的书里面抄过来的,顺便写成了汉语,当然,是按照自己的视角翻译的,里面也夹杂了一些自己的观点。看官也可以理解为源于《Learning Python》但又有点儿不同。 函数具有独立性。也就是常说的不要有太强的耦合性。要让函数能够独立于外部的东西。参数和ret
本文向大家介绍PHP中的zip_entry_compressed_size()函数,包括了PHP中的zip_entry_compressed_size()函数的使用技巧和注意事项,需要的朋友参考一下 zip_entry_compressed_size()函数返回zip归档条目的压缩文件大小。 语法 参数 zip_entry-邮政编码条目资源。需要。 返回 zip_entry_compressed_
问题内容: 是否有一个PHP函数以与MySQL函数相同的格式返回日期和时间? 我知道如何使用来做,但是我在问是否只有一个功能。 例如,返回: 问题答案: 除了日期功能:
本文向大家介绍PHP中的hebrevc()函数,包括了PHP中的hebrevc()函数的使用技巧和注意事项,需要的朋友参考一下 该函数用于通过换行转换将逻辑希伯来语文本转换为可视文本。还将新行(\ n)转换为<br>。 语法 参数 str-希伯来语输入字符串 maxcharline-每行将返回的最大字符数。 返回 该函数返回可视字符串。 以下是一个例子- 示例 以下是输出- 输出结果
本文向大家介绍PHP中的array_fill_keys()函数,包括了PHP中的array_fill_keys()函数的使用技巧和注意事项,需要的朋友参考一下 array_fill_keys()函数用指定键的值填充数组。它返回填充的数组。 语法 参数 keys-用作键的值的数组。 值-这将被用来填充值。 返回 array_fill_keys()函数返回已填充的数组。 示例 输出结果 让我们来看另一
本文向大家介绍PHP中的array_fill()函数,包括了PHP中的array_fill()函数的使用技巧和注意事项,需要的朋友参考一下 array_fill()函数用于用值填充数组。它返回填充的数组。它返回填充的数组。 语法 参数 start_index-返回的数组的第一个索引。需要。 num-要插入的元素数。需要。 value-将填充数组的值。需要。 返回 array_fill()函数返回已