php数据库安全字符,php mysql_real_escape_string构建安全的SQL语句

mysql_real_escape_string介绍

mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。

mysql_real_escape_string 优于addslashes。因为 mysql_real_escape_string考虑到字符集的问题因此可以安全用于 mysql_query()。另外需要注意的是mysql_real_escape_string()不能转义%及_,只能转义一下字符:

\x00

\n

\r

\

'

"

\x1a

注意:有些时候需要将mysql_real_escape_string与mysql_set_charset一起使用。

mysql_real_escape_string语法及参数

语法:

mysql_real_escape_string(sql_str,con)

参数:

参数

描述

sql_str

必需。需要转义的SQL语句

con

可选。mysql连接标识符,如果没有设置该参数,则直接使用上一个mysql连接标识符

mysql_real_escape_string构建安全的SQL语句

本实例介绍了使用mysql_real_escape_string函数处理表单提交过来的数据,从而构建一个安全的SQL语句,避免了SQL注入攻击。

function opendatabase ($host,$user,$pass) {

try {

if ($db = mysql_connect ($host,$user,$pass)){

return $db;

} else {

throw new exception ("Sorry, could not connect to mysql.");

}

} catch (exception $e) {

echo $e->getmessage ();

}

}

/* http://www.manongjc.com/article/1241.html */

function selectdb ($whichdb, $db){

try {

if (!mysql_select_db ($whichdb,$db)){

throw new exception ("Sorry, database could not be opened.");

}

} catch (exception $e) {

echo $e->getmessage();

}

}

function closedatabase ($db){

mysql_close ($db);

}

$db = opendatabase ("localhost","root","");

selectdb ("mydatabase",$db);

$_POST['user'] = "myname";

$_POST['pass'] = "mypassword";

function validatelogin ($user,$pass){

mysql_real_escape_string ($user);

mysql_real_escape_string ($pass);

$thequery = "SELECT * FROM userlogin WHERE username='$user' AND password='$pass'";

if ($aquery = mysql_query ($thequery)){

if (mysql_num_rows ($aquery) > 0){

return true;

} else {

return false;

}

} else {

echo mysql_error();

}

}

if (validatelogin ($_POST['user'],$_POST['pass'])){

echo "You have successfully logged in.";

} else {

echo "Sorry, you have an incorrect username and/or password.";

}

closedatabase ($db);

?>

mysql_real_escape_string()函数在本实例的主要作用:

防止SQL Injection攻击,也就是你必须验证用户的输入

操作数据的时候避免不必要的字符导致错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值