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,$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攻击,也就是你必须验证用户的输入 操作数据的时候避免不必要的字符导致错误 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
