<dl id="wlinv"><menu id="wlinv"><thead id="wlinv"></thead></menu></dl><sup id="wlinv"><pre id="wlinv"></pre></sup>
<em id="wlinv"></em>
      <menuitem id="wlinv"><meter id="wlinv"><video id="wlinv"></video></meter></menuitem>

        <dl id="wlinv"><ins id="wlinv"></ins></dl>

        <dl id="wlinv"></dl>
        加入收藏 | 设为首页 | 我要投稿 | RSS中药方rss
        中药方大全小图标
        您?#40763;?#30340;位置:首页 > 其他 > 网站日记

        帝国sms结合项函数的优化

        提示: 手机抄药方--选中文字可生成二维码  来源:原创  作者:海蓝

        帝国cms官方的结合项函数,不太严谨,导致url地址参数重复,不美观,甚至会被恶意篡改


        网上有朋友给出了优化方案,思路是先按照帝国官方插件的思路走,最后统一处理重复的参数。


        我这里给出另外一种方法,思路是生成url的时候就过滤掉重复。这样也方便后续的伪静态处理。


        代码如下:

        //显示结合项筛选选项
        function user_ShowFieldandChange($ecms=0){
        	global $public_r;
        
        	//------- 函数参数设置开始 -----
        
        	//要显示的结合项字段列表,多个字段用半角逗号“,”隔开
        	$fieldandvar='myarea,sex,age';
        
        	//字段显示选项设置,多项用双“#”号隔开,格式:选项说明|==|内容1,值1##内容2,值2
        	$fieldandval=array();
        	$fieldandval['myarea']='<b>地区:</b>|==|不限,##东城,东城区##朝阳,朝阳区##崇文,崇文区##宣武,宣武区##海淀,海淀区##丰台,丰台区';
        	$fieldandval['sex']='<b>性别:</b>|==|不限,##男,男##女,女##人妖,人妖';
        	$fieldandval['age']='<b>年龄:</b>|==|不限,##1-10,1__10##11-20,11__20##21-30,21__30##31-40,31__40##41-50,41__50##50岁以上,51__200';
        
        	//正常链?#21451;?#24335;
        	$fieldandcss='fieldandcss';
        
        	//已选的选项链?#21451;?#24335;
        	$changefieldandcss='changefieldandcss';
        
        	//字段与字段的显示间隔符,格式:开始显示?#22336;鹼结束显示?#22336;?
        	$fieldexp='<table><tr><td>|</td></tr></table>';
        
        	//选项与选项的显示间隔符,格式:开始显示?#22336;鹼结束显示?#22336;?
        	$valexp='| ';
        
        	//------- 函数参数设置结束 -----
        
        
        	$userfunecmsver=function_exists('ehtmlspecialchars')?1:0;
        	//附加参数
        	$urlcs='ph=1';
        	$mid=(int)$_GET['mid'];
        	if($mid)
        	{
        		$urlcs.='&mid='.$mid;
        	}
        	if($_GET['classid'])
        	{
        		$classid=RepPostVar($_GET['classid']);
        		$urlcs.='&classid='.$classid;
        	}
        	else
        	{
        		if(!$_GET['mid']&&!$_GET['ttid']&&!$_GET['ztid'])
        		{
        			$classid=intval($GLOBALS['navclassid']);
        			$urlcs.='&classid='.$classid;
        		}
        	}
        	if($_GET['ttid'])
        	{
        		$ttid=RepPostVar($_GET['ttid']);
        		$urlcs.='&ttid='.$ttid;
        	}
        	if($_GET['ztid'])
        	{
        		$ztid=RepPostVar($_GET['ztid']);
        		$urlcs.='&ztid='.$ztid;
        	}
        	if($_GET['firsttitle'])
        	{
        		$firsttitle=(int)$_GET['firsttitle'];
        		$urlcs.='&firsttitle='.$firsttitle;
        	}
        	if($_GET['isgood'])
        	{
        		$isgood=(int)$_GET['isgood'];
        		$urlcs.='&isgood='.$isgood;
        	}
        	if($_GET['endtime'])
        	{
        		$starttime=RepPostVar($_GET['starttime']);
        		$endtime=RepPostVar($_GET['endtime']);
        		$urlcs.='&starttime='.$starttime.'&endtime='.$endtime;
        	}
        	$line=(int)$_GET['line'];
        	if($line)
        	{
        		$urlcs.='&line='.$line;
        	}
        	$tempid=(int)$_GET['tempid'];
        	if($tempid)
        	{
        		$urlcs.='&tempid='.$tempid;
        	}
        	if($_GET['orderby'])
        	{
        		$orderby=RepPostVar($_GET['orderby']);
        		$myorder=(int)$_GET['myorder'];
        		$urlcs.='&orderby='.$orderby.'&myorder='.$myorder;
        	}
        	//间隔?#22336;?
        	$fieldexpr=explode('|',$fieldexp);
        	$valexpr=explode('|',$valexp);
        	//输出选项
        	$fr=explode(',',$fieldandvar);
        	$fcount=count($fr);
        	$allstr='';
        	$urladd=$urlcs;
            	foreach($fr as $field){
        		if($_GET[$field])
        		{
        			$getval=$userfunecmsver==1?ehtmlspecialchars($_GET[$field],ENT_QUOTES):htmlspecialchars($_GET[$field],ENT_QUOTES);
        			$urladd.='&'.$field.'='.urlencode($getval);
        		}
        	}
                
        	foreach($fr as $field)
        	{
        		
        		//选项链接
        		$getval='';
        		if($_GET[$field])
        		{
        			$getval=$userfunecmsver==1?ehtmlspecialchars($_GET[$field],ENT_QUOTES):htmlspecialchars($_GET[$field],ENT_QUOTES);
        			
        		}
                        $myurladd=preg_replace('/&'.$field.'=[^&]+/i','',$urladd);
        		//选项说明
        		$vsayr=explode('|==|',$fieldandval[$field]);
        		//选项内容
        		$valallstr='';
        		$vr=explode('##',$vsayr[1]);
        		$vcount=count($vr);
        		for($vi=0;$vi<$vcount;$vi++)
        		{
        			$vtr=explode(',',$vr[$vi]);
        			if($getval==$vtr[1])
        			{
        				$css=$changefieldandcss;
        			}
        			else
        			{
        				$css=$fieldandcss;
        			}
        			$valallstr.=$valexpr[0].'<a href="'.$public_r['newsurl'].'e/action/ListInfo.php?'.$myurladd.'&'.$field.'='.urlencode($vtr[1]).'" class="'.$css.'">'.$vtr[0].'</a>'.$valexpr[1];
        		}
        		$allstr.=$fieldexpr[0].$vsayr[0].$valallstr.$fieldexpr[1];
        	}
        	
        	return $allstr;
        }

        如何懒得添加css的话,可以处理下下$allstr,动态添加css,代码片段如下:

        $allstr=<<<jhc
        	<script>
        	function loadCssCode(code){var style = document.createElement('style');
        	     style.type = 'text/css';    
        	     style.rel = 'stylesheet';    
        	     try{        //for Chrome Firefox Opera Safari        
        	     style .appendChild(document.createTextNode(code));
        	     }catch(ex){        //for IE        
        	     style.styleSheet.cssText = code;    }    
        	     var head = document.getElementsByTagName('head')[0];    
        	     head.appendChild(style);}loadCssCode('.fieldandcss{} .changefieldandcss{background:#4598D2;color:#fff;}');
        	</script>
        	$allstr
        jhc;
        	return $allstr;


        tags: 插件 返回顶部
        推荐资讯
        视频:田纪钧讲关节不痛的秘密、膝关节拉筋法
        视频:田纪钧讲关节不
        白露到了,你还好吗?
        白露到了,你还好吗?
        尿疗与断食
        尿疗与断食
        给风疹反复发作女孩的药方(组图)
        给风疹反复发作女孩的
        相关文章
        ?#25913;?#26356;新
        ?#25913;?#28909;门
        1. 帝国cms7.2后台信息列表页批量添加tags
        2. 帝国cms百度主动推送插件支?#22336;?#39029;推送
        3. 帝国cms之批量替换字段值
        4. 如何禁止内容关键字替换ALT和A标签中的关键
        5. 帝国cms7.2改用百度编辑器
        6. 帝国cms获取?#40763;?#39029;的地址
        7. 【帝国cms插件】之三级联动+伪静态
        8. 帝国cms插件大全
        9. 显示二维码
        10. 帝国cms在模板中修改字段值
        时时彩单期计划软件
        <dl id="wlinv"><menu id="wlinv"><thead id="wlinv"></thead></menu></dl><sup id="wlinv"><pre id="wlinv"></pre></sup>
        <em id="wlinv"></em>
            <menuitem id="wlinv"><meter id="wlinv"><video id="wlinv"></video></meter></menuitem>

              <dl id="wlinv"><ins id="wlinv"></ins></dl>

              <dl id="wlinv"></dl>
              <dl id="wlinv"><menu id="wlinv"><thead id="wlinv"></thead></menu></dl><sup id="wlinv"><pre id="wlinv"></pre></sup>
              <em id="wlinv"></em>
                  <menuitem id="wlinv"><meter id="wlinv"><video id="wlinv"></video></meter></menuitem>

                    <dl id="wlinv"><ins id="wlinv"></ins></dl>

                    <dl id="wlinv"></dl>