在这篇文章中,我们将为您详细介绍php中get_magic_quotes_gpc()函数说明的内容,并且讨论关于phpget函数的相关问题。此外,我们还会涉及一些关于get_magic_quotes_
在这篇文章中,我们将为您详细介绍php中get_magic_quotes_gpc()函数说明的内容,并且讨论关于php get函数的相关问题。此外,我们还会涉及一些关于get_magic_quotes_gpc()不能用怎么处理、get_magic_quotes_gpc()函数、get_magic_quotes_gpc()函数用法介绍、get_magic_quotes_gpc解决办法的知识,以帮助您更全面地了解这个主题。
本文目录一览:- php中get_magic_quotes_gpc()函数说明(php get函数)
- get_magic_quotes_gpc()不能用怎么处理
- get_magic_quotes_gpc()函数
- get_magic_quotes_gpc()函数用法介绍
- get_magic_quotes_gpc解决办法
php中get_magic_quotes_gpc()函数说明(php get函数)
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()预防数据库攻击的正确做法
代码如下
总结如下:
1. 对于magic_quotes_gpc=on的情况,
我们可以不对输入和输出数据库的字符串数据作
addslashes()和stripslashes()的操作,数据也会正常显示。
如果此时你对输入的数据作了addslashes()处理,
那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。
2. 对于magic_quotes_gpc=off 的情况
必须使用addslashes()对输入数据进行处理,但并不需要使用stripslashes()格式化输出
因为addslashes()并未将反斜杠一起写入数据库,只是帮助MysqL完成了sql语句的执行
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持小编!
get_magic_quotes_gpc()不能用怎么处理
get_magic_quotes_gpc()不能用怎么办
刚学php三天,希望高手们多多指教,谢谢哈
我用的编译软件是php5.4 。我在我的程序中使用了echo get_magic_quotes_gpc()函数来判断环境,从而决定输入数据库的信息是否需要设置转码。代码写好后在编译软件上没有显示错误,但是我打开浏览器却显示Deprecated: Function get_magic_quotes_gpc() is deprecated in.....。 于是我写了个测试用的语句echo get_magic_quotes_gpc();结果在浏览器上还是如此。
请问这种问题怎么解决,或者还有没有其它的方法来判断输入数据库的信息是否需要转码?
------解决方案--------------------
这个函数已经抛弃了,所以也就不需要再使用了.
可以使用addslashes()对提交的变量进行过滤.
------解决方案--------------------
到了php5.4 已经移除了这个功能。你直接用mysql_real_escape_string() 或者 addslashes 进行转义。
get_magic_quotes_gpc()函数
get_magic_quotes_gpc
()函数
在PHP中()函数是内置的函数,这个函数的作用就是得到php.ini设置中magic_quotes_gpc选项的值。
那么就先说一下magic_quotes_gpc选项:
如果magic_quotes_gpc=On,PHP解析器就会自动为post、get、cookie过来的数据增加转义字符“”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误。
在magic_quotes_gpc=On的情况下,如果输入的数据有
单引号(’)、双引号(”)、反斜线()与 NUL(NULL 字符)等字符都会被加上反斜线。这些转义是必须的,如果这个选项为off,那么我们就必须调用addslashes这个函数来为字符串增加转义。
正是因为这个选项必须为On,但是又让用户进行配置的矛盾,在PHP6中删除了这个选项,一切的编程都需要在magic_quotes_gpc=Off下进行了。在这样的环境下如果不对用户的数据进行转义,后果不仅仅是程序错误而已了。同样的会引起数据库被注入攻击的危险。所以从现在开始大家都不要再依赖这个设置为On了,以免有一天你的服务器需要更新到PHP6而导致你的程序不能正常工作。
当magic_quotes_gpc=On的时候,函数()就会返回1
当magic_quotes_gpc=Off的时候,函数()就会返回0
因此可以看出这个()函数的作用就是得到环境变量magic_quotes_gpc的值。既然在PHP6中删除了magic_quotes_gpc这个选项,那么在PHP6中这个函数我想也已经不复存在了。
get_magic_quotes_gpc()函数用法介绍
magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据,如包括有:post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误
在magic_quotes_gpc=On的情况下,如果输入的数据有
单引号(’)、双引号(”)、反斜线()与 NUL(NULL 字符)等字符都会被加上反斜线。这些转义是必须的,如果这个选项为off,那么我们就必须调用addslashes这个函数来为字符串增加转义。
正是因为这个选项必须为On,但是又让用户进行配置的矛盾,在PHP6中删除了这个选项,一切的编程都需要在magic_quotes_gpc=Off下进行了。在这样的环境下如果不对用户的数据进行转义,后果不仅仅是程序错误而已了。同样的会引起数据库被注入攻击的危险。所以从现在开始大家都不要再依赖这个设置为On了,以免有一天你的服务器需要更新到PHP6而导致你的程序不能正常工作。
代码如下 复制代码
当magic_quotes_gpc=On的时候,函数get_magic_quotes_gpc()就会返回1
当magic_quotes_gpc=Off的时候,函数get_magic_quotes_gpc()就会返回0
因此可以看出这个get_magic_quotes_gpc()函数的作用就是得到环境变量magic_quotes_gpc的值。既然在PHP6中删除了magic_quotes_gpc这个选项,那么在PHP6中这个函数我想也已经不复存在了。
php 判断是否开启get_magic_quotes_gpc功能了,以方便我们是否决定使用addslashes这个函数了。
代码如下 复制代码
function SQLString($c, $t){
$c=(!get_magic_quotes_gpc())?addslashes($c):$c;
switch($t){
case ''text'':
$c=($c!='''')?"''".$c."''":''NULL'';
break;
case ''search'':
$c="''%%".$c."%%''";
break;
case ''int'':
$c=($c!='''')?intval($c):''0'';
break;
}
return $c;
}
预防数据库攻击的正确做法
代码如下 复制代码
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);
?>
get_magic_quotes_gpc解决办法
get_magic_quotes_gpc
大虾们,请教个问题哈。
我的php.ini中有关post/get数据中包含引号、反斜线自动转义的设置为
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off
; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off
; Use Sybase-style magic quotes (escape '' with '''' instead of \'').
magic_quotes_sybase = Off
,可是我不明白函数get_magic_quotes_gpc()的输出居然为int(1),为啥呢,不应该是int(0)吗?
求解答。
------解决方案--------------------
输出 phpinfo();看看你所看到的php.ini是不是输出的相同路径文件.另外是否修改后有重启apache.
关于php中get_magic_quotes_gpc()函数说明和php get函数的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于get_magic_quotes_gpc()不能用怎么处理、get_magic_quotes_gpc()函数、get_magic_quotes_gpc()函数用法介绍、get_magic_quotes_gpc解决办法的相关知识,请在本站寻找。
本文标签: