Dedecms5.1随便搜索一串数字出错
提示信息如下:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server
version for the right syntax to use near ‘) limit 500′ at line 1 – Execute Query False!
Select aid from dede_full_search where arcrank > -1 and () limit 500
因搜索未过滤html标签,导致用户可以在搜索出注入html代码,该补丁修改该问题和utf-8版tag标签找不到以及部分用户尾部丢0的问题
覆盖补丁后请在后台 内容维护 搜索关键词管理 处删除不正常的关键词。
解决方法:官方已经出补丁了
非5.1版请修改 plus/search.php文件
把Copy code$keyword = ereg_replace(”[|"rnt%*?()$;,'%-]“,” “,trim($keyword));
替换为Copy code$keyword = ereg_replace(”[|"rnt%*?()$;,'%<>]“,” “,trim($keyword));
2 提高DEDE搜索功能准确度的方法
请原来的模板的
<form action=”{dede:field name=’phpurl’/}/search.php” name=”formsearch”>
<input type=”hidden” name=”kwtype” value=”0″>
改成
<form action=”{dede:field name=’phpurl’/}/search.php” name=”formsearch”>
<input type=”hidden” name=”kwtype” value=”1″>
即0改成1
采用“仅搜索标题”的搜索方式,
<option value=”title” selected>搜索标题</option> 可将这个设为默认,或者干脆删除下面的智能模糊,那个太不准。
<option value=”titlekeyword”>智能搜索</option>
高级搜索中,可以将模板中的“与”改成默认
<input type=”radio” name=”kwtype” value=”1″ checked=”checked”/>
与
<input name=”kwtype” type=”radio” value=”0″ />
或
“与”应该就是value=”1″的意思,下面的同样采用“仅搜索标题”的方式
总的说来就是“与”(value=”1″)+“仅搜索标题”=准确
3 站内搜索增加个仅搜索当前频道功能
其实自己有搜索框加一个栏目选择的项就行了,系统不必要自动去生成高级搜索里可选的条件,你全都可以用
<select name=”channeltype” id=”channeltype” style=”width:100″>
<option value=”0″ selected>–不限–</option>
<option value=’4′>Flash</option>
<option value=’3′>软件</option>
<option value=’2′>图片集</option>
<option value=’1′>普通文章</option>
</select>
如果不想用户选择,你直接加
<input type=’hidden’ name=’channeltype’ value=”{dede:field name=’channeltype’/}”>
这样也行
4 如何设置让搜索条可以搜一个汉字
需要修改2个地方
/plus/search.php
if($keyword==”"||strlen($keyword)<1){
ShowMsg(”关键字不能小于1个字节!”,”-1″);
exit();
}
/include/inc_arcsearch_view.php
codeif(strlen($k)<2) continue;
5 文章关键字自动对应搜索的办法
{dede:field name=’keywords’ runphp=’yes’ }
if(!empty(@me)){
$kws = explode(’ ‘,@me);
@me = “”;
foreach($kws as $k){
@me .= “<a href=’/cms/plus/search.php?keyword=”.urlencode($k).”‘ >$k</a> “;
}
@me= str_replace(’+’, ‘ ‘,trim(@me));
}