发新话题
打印

Mysql_real_escape_string( )(07/24/8)

Mysql_real_escape_string( )(07/24/8)

Mysql_real_escape_string( )
htmlentities()
没有人管了 ,我就这两个了
学会怎么调试程序,学会怎么设计模式,学会怎么配置环境,学会怎么带项目,学会怎么分析客户需求

TOP

gang  刚看到这个函数,以前都没看到过不懂~~~
去看下资料~~~~~~
*********************************
天地自在,任我逍遥
http://www.dophp.net/
dophp@qq.com
**********************************

TOP

没有人管就大家一起努力
交流QQ群2:16142493
智能手机软件下载
PHP新手不可错过一帖
PHP新手如何获得积分
论坛需要你,我们大家需要你!

TOP

mysql_real_escape_string(string,connection)函数的作用是:转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集。如果函数执行成功,将返回转义后的字符串;如果执行失败将返回False。

mysqll_escape_string()函数的作用是:转义 SQL 语句中使用的字符串中的特殊字符,不考虑连接的当前字符集。
复制内容到剪贴板
代码:
<?php

function check_input($value)
{

// Stripslashes
if (get_magic_quotes_gpc())
  {

  $value = stripslashes($value);

  }

// Quote if not a number
if (!is_numeric($value))
  {

  $value = "'" . mysql_real_escape_string($value) . "'";

  }
return $value;
}

$con = mysql_connect("localhost", "peter", "abc123");

if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

// Make a safe 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);

?>
[ 本帖最后由 极品黑公子 于 2007-8-23 13:34 编辑 ]
学会怎么调试程序,学会怎么设计模式,学会怎么配置环境,学会怎么带项目,学会怎么分析客户需求

TOP

这个函数和 set_magic_quotes_runtime(0);好象差不多,不知道有啥区别。。
小黑UPUPUP!
我不是天使但我拥有天堂,我不是海豚但我翱翔海洋,我没有翅膀但我俯视阳光,我没有三叶草但我手捧希望...

TOP

magic_quotes_runtime 是php.ini里面的环境配置变量,可以直接在php.ini里面设置
set_magic_quotes_runtime() 就是它的设置的开关,0 为关闭 1为打开
打开后PHP将会为所有的溢出字符,当遇到反斜杆、单引号,将会自动加上一个反斜杆
保护系统和数据库的安全。
magic_quotes_runtime会影响从文件中读取的数据或从数据库查询得到的数据而mysql_real_escape_string(string,connection)只针对 mysql语句里的特殊字符除% 和 -
magic_quotes_runtime 作用范围:
             从文件中读取的数据或执行exec()的结果或是从SQL查询中得到的;
作用时间:
            每次当脚本访问运行状态中产生的数据.
负面影响:依赖于平台,移植性可能差点儿 这点和 mysqll_escape_string()相似

从数据库读出的数据要用stripslashes()
将字符$str="123456'"写入数据库
get_magic_quotes_runtime()on时
insert后数据库结果为123456'就是单引号也是其中一部分
而从库里读出来的时候为12345\'转达义了所以要用stripslashes()

两个函数作用一样,只是针对的对象不一样
还有 mysql_real_escape_string(string,connection)是根据connection mysql db来确定字符集的
学会怎么调试程序,学会怎么设计模式,学会怎么配置环境,学会怎么带项目,学会怎么分析客户需求

TOP

magic_quotes_gpc 作用范围是:WEB客户服务端;作用时间:请求开始是,例如当脚本运行时.
magic_quotes_runtime 作用范围:从文件中读取的数据或执行exec()的结果或是从SQL查询中得到的;作用时间:每次当脚本访问运行状态中产生的数据.

所以:
magic_quotes_gpc的设定值将会影响通过Get/Post/Cookies获得的数据
magic_quotes_runtime的设定值将会影响从文件中读取的数据或从数据库查询得到的数据


通用做法见下面代码:
复制内容到剪贴板
代码:
$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写入数据库

    //从数据库读出的数据直接输出
}

//补充:magic_quotes_runtime的值可用set_magic_quotes_runtime()函数来设定
转自:http://callof.net/site/Article.Asp?id=2019
学会怎么调试程序,学会怎么设计模式,学会怎么配置环境,学会怎么带项目,学会怎么分析客户需求

TOP

magic_quotes_gpc 和magic_quotes_runtime做的一些相应处理还不是很好,上面只是讲区别
学会怎么调试程序,学会怎么设计模式,学会怎么配置环境,学会怎么带项目,学会怎么分析客户需求

TOP

发新话题