21,891
社区成员
发帖
与我相关
我的任务
分享$nql = "INSERT INTO `dh_member` (`email`,`tel`,`upass`,`unick`,`sri`,`sex`,`photo`,`add`,`sgao`,`xli`,`xlit`,`ysru`,`ysrid`,`sxiao`,`xzuo`,`zwjsao`,`hyzkuang`,`addip`,`addipt`,`mck`) VALUES ('". $email ."','". $tel ."','". mysqli_real_escape_string($upass) ."','". mysqli_real_escape_string($unick) ."','". $sri ."','". $sex ."','". $photo ."','". $add ."',". $sgao .",". $xli .",'". $xlit ."',". $yxin .",'". $yxint ."','". $sxiao ."','". $xzuo ."','". mysqli_real_escape_string($zwjsao) ."','". $hyzkuang ."','". getIPaddress() ."','". getIPS138(getIPaddress()) ."',". $site["examine"] .")";
if (!get_magic_quotes_gpc())
{
$a = addslashes($_GET['a']);
}
插入的值,不管是字符串还是数字,还是日期什么的,都可以用单引号包含起来
$sql="****id='{$id}',name='{$name}'*****";
因为你前面addslashes了变量的值,这样的话,不管变量的值是什么,它都逃不出你写的引号。。
$nql = "INSERT INTO `dh_member` (`email`,`tel`,`upass`,`unick`,`sri`,`sex`,`photo`,`add`,`sgao`,`xli`,`xlit`,`ysru`,`ysrid`,`sxiao`,`xzuo`,`zwjsao`,`hyzkuang`,`addip`,`addipt`,`mck`) VALUES ('". $email ."','". $tel ."','". mysqli_real_escape_string($upass) ."','". mysqli_real_escape_string($unick) ."','". $sri ."','". $sex ."','". $photo ."','". $add ."',". $sgao .",". $xli .",'". $xlit ."',". $yxin .",'". $yxint ."','". $sxiao ."','". $xzuo ."','". mysqli_real_escape_string($zwjsao) ."','". $hyzkuang ."','". getIPaddress() ."','". getIPS138(getIPaddress()) ."',". $site["examine"] .")";
这是拼装 SQL 指令,不存在安全问题 意思是足够安全么?
与 addslashes 的作用一样,只不过 mysql 函数库为库函数完备才增加了 mysqli_real_escape_string ,我在网上看的说mysqli_real_escape_string是在入库的时候会转义,但是实际存到数据库中却不含转义符的,是这样么?
比如我有个注册登录页面,密码变量带有单双引号,(magic_quotes_sybase 开启了),注册时候:
$sql = "INSERT INTO user (uname,upass) VALUES ('". $uname ."','". $upass ."')";
判断登录的时候:
$sql = "select * from user where uname='". $uname ."', upass='". $upass ."'";
那如果magic_quotes_sybase 没有开启:
$sql = "INSERT INTO user (uname,upass) VALUES ('". addslashes($uname) ."','". addslashes($upass) ."')";
判断登录的时候:
$sql = "select * from user where uname='". addslashes($uname) ."', upass='". addslashes($upass) ."'";
是这样的道理么?
按你的是 用花括号 代替原来的“” ,安全性更高么?
谢谢啊 , 那意思就是为ON,就没必要(addslashes或mysqli_real_escape_string)转义了吧,是这样么?
我刚用PHP,可能问的有点弱智...见笑了