发新话题
打印

【已经解决】开发某插件的一些困惑,寻求解答

【已经解决】开发某插件的一些困惑,寻求解答

数据库设定:
引用:
`title` varchar(50) NOT NULL,
`description` varchar(255) NOT NULL,
要求title字段不支持html格式,description支持html格式。并且必须防止SQL注射。
于是乎写了如下PHP语句(仅贴出与此两个字段有关的语句):
复制内容到剪贴板
代码:
}elseif ($action == 'add'){
         if(submitcheck('idauthfieldaddsubmit')) {
                         $newtitle = cutstr(dhtmlspecialchars($newtitle),50);
                         $newdescription = cutstr(daddslashes($newdescription),255);
                         $db->query("INSERT INTO {$tablepre}idauthfieldsvar (...,title,description,...) VALUES (..., '$newtitle', '$newdescription',...)");
                                         showmessage('成功添加一条新的认证项目!', "idauthsetcp.php?action=index");
         }
         include template('idauth_set_add');
}
调试环境:PHP 5.2.5,MYSQL 5.0,Windows XP SP2,Apache2,插件运行平台:Discuz! 6.1F

调试的时候遇到的困惑,希望得到解答:
1、在数据库已经定义了varchar的字符段大小后还需不需要使用cutstr来进行字符截取?

查看dz代码,相关的地方似乎都使用了cutstr来截取字符,但问题是一个汉字是两个字符,DZ的cutstr函数截取的不很好。比如title字段输入50个“日”字,cutstr函数就只是截取了前25个并且写入数据库(如图中infofieldid为9处所示),但事实上这50个“日”字的字符串本来符合varchar(50)的要求。
另外在实际应用中,发现MySQL会自动帮你截取字符串。比如66个“日”字的字符串,在执行数据库INSERT的操作过程中,MYSQL会自动截取到50个“日”字的字符串来符合varchar(50)的要求,这样一来又似乎失去了使用cutstr的需要(如图中infofieldid为10处所示)。
如此一来,在数据库已经定义了varchar的字符段大小后还需不需要使用cutstr来进行字符截取?

2、对字符串进行dhtmlspecialchars处理之后还需不需要使用daddslashes进行转义?
由于title要求不能支持html格式,因此对$newtitle进行dhtmlspecialchars处理,然后就写入数据库(如图中infofieldid为7,8处所示)。
但现在非常关心的一件事情是,进行了dhtmlspecialchars处理之后,还需不需要使用daddslashes进行转义以防止SQL注入?也就是说,在进行了dhtmlspecialchars处理的前提下,用了daddslashes和没用daddslashes对防止SQL注射有没有影响?

[ 本帖最后由 horseluke 于 2008-10-9 14:43 编辑 ]
附件: 您所在的用户组无法下载或查看附件
本人从事乱改代码职业,warning & fatal error经验丰富,目前失业中……
游走在电脑技术和自行车的大菜鸟

TOP

与该问题对应的该插件截图

本人从事乱改代码职业,warning & fatal error经验丰富,目前失业中……
游走在电脑技术和自行车的大菜鸟

TOP

本人从事乱改代码职业,warning & fatal error经验丰富,目前失业中……
游走在电脑技术和自行车的大菜鸟

TOP

原来是开发认证插件了
又是收费的插件

TOP

引用:
原帖由 044003 于 2008-10-16 07:00 发表
原来是开发认证插件了
又是收费的插件
很负责任的告诉你,这个免费 ,虽然我要一大笔钱来开销自行车旅游的费用
(假如真做收费的话,就应该利用用户定制栏的内容来作认证,更加简单,论坛升级也方便;现在做这个只是尝试剥离这类功能来了解DZ的运作方式)
该插件打算在fd率先放出
开发进度:http://u.discuz.net/home/space-763441-do-blog-id-17085.html

[ 本帖最后由 horseluke 于 2008-10-17 16:56 编辑 ]
本人从事乱改代码职业,warning & fatal error经验丰富,目前失业中……
游走在电脑技术和自行车的大菜鸟

TOP

发新话题