cakephp的 cake24CakeControllerBaseController.php

Posted 小白兔晒黑了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cakephp的 cake24CakeControllerBaseController.php相关的知识,希望对你有一定的参考价值。

<?php
/**
 * 该方法公共依赖层控制器
 * 在此控制器下新增的方法建议统一加上前缀 cake24_ 避免和之前的方法冲突
 * @author dutongzhen
 */
class BaseController extends Controller {

	/**
     *  报名入口,检查当前号码是否存在于系统,如存在以下板块,则将被重置到报名管理中
     *  2015-12-30
     *  Sherwin
     **/
    public function cake24_ck_baoming_reset($mobile) {
        $this->autoRender = false;
        $quest = false;
        // $mobile = $_GET[‘mobile‘];
/*        $this->loadModel("Baomings");
        $this->loadModel("RejectLogs");
        $this->loadModel("ResetLogs");*/
        $info = $this->Baomings->find("first", array(‘conditions‘ => array(‘Baomings.mobile‘ => $mobile), ‘order‘ => array(‘Baomings.id DESC‘)));
        $content = "";

        if (empty($info)) {
            return json_encode(array(‘status‘ => $quest, ‘baoming_id‘ => 0));
        }
/*
        echo "<pre>";
        print_r($info);*/

        $update  = array();

        if ($info[‘Baomings‘][‘is_conect‘] == 1 && $info[‘Baomings‘][‘yixiang‘] != 1 && $info[‘Baomings‘][‘is_fp‘] == 1 && $info[‘Baomings‘][‘mes_bak‘] == 1 && $info[‘Baomings‘][‘delay‘] == 0 && ($info[‘Baomings‘][‘status‘] == 0 || $info[‘Baomings‘][‘status‘] == 1) && ($info[‘Baomings‘][‘status_trace‘] == 0 || $info[‘Baomings‘][‘status_trace‘] == 1) && $info[‘Baomings‘][‘invalid‘] == 0 && $info[‘Baomings‘][‘decoration‘] != 1 && $info[‘Baomings‘][‘is_qy‘] == 0) {
            # 意向管理
            $quest = true;
            $content = "由业主主动报名,从意向管理重置到报名管理中";
            $update[‘is_fp‘] = 1;
        } else if ($info[‘Baomings‘][‘is_fp‘] == 1 && $info[‘Baomings‘][‘mes_bak‘] == 1 && ($info[‘Baomings‘][‘delay‘] == 1 || $info[‘Baomings‘][‘delay‘] == 2) && ($info[‘Baomings‘][‘status‘] == 0 || $info[‘Baomings‘][‘status‘] == 1) && ($info[‘Baomings‘][‘status_trace‘] == 0 || $info[‘Baomings‘][‘status_trace‘] == 1) && $info[‘Baomings‘][‘invalid‘] == 0 && $info[‘Baomings‘][‘decoration‘] == 0 && $info[‘Baomings‘][‘is_qy‘] == 0) {
            # 潜在管理
            $quest = true;
            $content = "由业主主动报名,从潜在管理重置到报名管理中";
            $update[‘is_fp‘] = 0;
            $update[‘ownercs‘] = 0;
        } else if ($info[‘Baomings‘][‘decoration‘] == 1 && $info[‘Baomings‘][‘is_qy‘] == 0) { 
            # 无装修需求
            $quest = true;
            $content = "由业主主动报名,从无装修需求重置到报名管理中";
            $update[‘is_fp‘] = 0;
            $update[‘ownercs‘] = 0;
        } else if ($info[‘Baomings‘][‘is_fp‘] == 1 && $info[‘Baomings‘][‘yixiang‘] != 1 && ($info[‘Baomings‘][‘status_trace‘] == 2 || $info[‘Baomings‘][‘status_trace‘] == 3) && $info[‘Baomings‘][‘is_qy‘] == 0) { 
            # 结束
            $quest = true;
            $content = "由业主主动报名,从结束管理重置到报名管理中";
            $update[‘is_fp‘] = 0;
            $update[‘ownercs‘] = 0;
        } else if ($info[‘Baomings‘][‘is_fp‘] == 1 && $info[‘Baomings‘][‘yixiang‘] != 1 && ($info[‘Baomings‘][‘status‘] == 2 || $info[‘Baomings‘][‘invalid‘] == 1) && $info[‘Baomings‘][‘is_qy‘] == 0) { 
            # 无效
            $quest = true;
            $content = "由业主主动报名,从无效管理重置到报名管理中";
            $update[‘is_fp‘] = 0;
            $update[‘ownercs‘] = 0;
        } else if ($info[‘Baomings‘][‘is_qy‘] == 1) {
            $quest = false;
        } else {
            return json_encode(array(‘status‘ => true, ‘baoming_id‘ => $info[‘Baomings‘][‘id‘]));
        }

        if ($quest == true) {
            $update[‘is_conect‘] = 0;
            $update[‘mes_bak‘] = 1;
            $update[‘delay‘] = 0;
            $update[‘status‘] = 0;
            $update[‘status_trace‘] = 1;
            $update[‘invalid‘] = 0;
            $update[‘yixiang‘] = 0;
            $update[‘allow‘] = 0;
            $update[‘is_qy‘] = 0;
            $update[‘decoration‘] = 0;
            $update[‘reset_time‘] = "‘" . date("Y-m-d H:i:s") . "‘";
            $update[‘reject_allot_status‘] = 0;
            $update[‘reject_over_status‘] = 0;
            $update[‘reject_invalid_status‘] = 0;
            $update[‘can_not_go‘] = 0;
            $update[‘can_not_cause‘] = null;

            $this->Baomings->updateAll($update, array(‘Baomings.id‘ => $info[‘Baomings‘][‘id‘]));

            $this->RejectLogs->updateAll(array(‘reset_tiger‘ => 1, ‘reset_time‘ => "‘" . date("Y-m-d H:i:s") . "‘"), array(‘baoming_id‘ => $info[‘Baomings‘][‘id‘], ‘type‘ => array(1,4,5), ‘ex_status‘ => 1));

            $this->ResetLogs->save(array(‘baoming_id‘ => $info[‘Baomings‘][‘id‘], ‘content‘ => $content, ‘create_time‘ => date("Y-m-d H:i:s"), ‘cs_id‘ => 0));
        }

        // echo $content . "<br />";
        return json_encode(array(‘status‘ => $quest, ‘baoming_id‘ => !empty($info[‘Baomings‘][‘id‘]) ? $info[‘Baomings‘][‘id‘] : 0));
    }

    /*
     *@数据返回类型
     *@par $arr 需要返回的数据(以数组的形式)
     *@par $return_type true /  false
     *@更新于 2017-04-24
     */
    private function bm_returns($arr, $return_type)
    {
        $return = json_encode($arr);
        if($return_type){

            return $return;
        }
        die($return);
    }

    /*
    * 记录是否是广告推广过来的用户
    * $putin 渠道来源
    */
    protected function cake24_set_unionOrigin($putin,$is_app=false){
        if(!$_POST || !empty($is_app)){
            if(!strpos($_SERVER[‘QUERY_STRING‘], ‘.png‘)&&!strpos($_SERVER[‘QUERY_STRING‘], ‘.jpg‘)&&!strpos($_SERVER[‘QUERY_STRING‘], ‘.gif‘)&&!strpos($_SERVER[‘QUERY_STRING‘], ‘.css‘)){
                $is_origin=1;//广告
                if( empty($putin) ){
                    $is_origin=2;//非广告
                    if( strpos($_SERVER[‘HTTP_REFERER‘],‘youjuke‘) && (strpos($_SERVER[‘HTTP_REFERER‘],‘putin‘) || strpos($_SERVER[‘HTTP_REFERER‘],‘bdjj‘)) ){
                        $is_origin=1;//广告
                    }
                }
                //$this->Cookie->write(‘unionOrigin‘, $is_origin, false, 86400);
                setcookie(‘unionOrigin‘,$is_origin,time()+86400,‘/‘);
            }
            
        }
    }

    /*
     *@更新服务咨询数据信息
     *@par $baoming_id 报名id
     *@author dtz 2017-03-28
     *注:如果已报名,未报名服务,这里不作处理;如果已报名和服务,对SERVICE表处理;如果仅新报名,按原有逻辑处理
     *处理逻辑为将baoming_service表中out_time改为当前一次的报名时间,out_type改为3,out_csid=0
     *@author dtz 2017-03-21
     *@更新于 2017-03-28
     */
    private function _cake24_check_service($baoming_id){

        if(!empty($baoming_id)){

            $conditions = [‘baoming_id‘ => $baoming_id];
            
            $serviceData = $this->BaomingService->find(‘first‘, [

                ‘conditions‘ => $conditions
            ]);

            if($serviceData[‘BaomingService‘][‘out_type‘] == 0){

                $up_service_data = [

                    ‘out_csid‘ => 0,
                    ‘out_type‘ => 3,
                    ‘out_time‘ => time()
                ];

                $this->BaomingService->updateAll($up_service_data, $conditions);
            }

        }
    }

    /** 
      * @服务咨询报名入口
      * @par $return true 返回插入数据的id false 不返回插入的id
      * @return  $baoming_id (报名id) 
      * @author dtz 2017-03-21
      * @更新于 2017-03-28
      * @注:曾经在服务咨询(zx_fuwu = 1)报过名的,并且out_type = 0的,除了zx_tuijian改为1以外,将baoming_service表中out_time改为当前一次的报名时间,out_type改为3,out_csid=0
      **/
    public function cake24_commit($return = false){

        unset($service_data);
        $baoming_id = $this->cake24_commit2(true, false, false, true);//服务咨询
        if(!empty($baoming_id)){

            //判断服务咨询报名是否存在
            $service_exist = $this->BaomingService->find(‘first‘, [

                ‘conditions‘ => [‘baoming_id‘ => $baoming_id]
            ]);

            if(!$service_exist){
                $service_data = [‘baoming_id‘ => $baoming_id, ‘last_plate‘ => 0, ‘create_time‘ => time()];

                //判断当前报名是否分配过客服(如果分配过需要baoming_service.is_fp_genzong 为1)
                $genzong_con = [‘baoming_id‘ => $baoming_id, ‘type‘ => 1, ‘f_cs !=‘ => NULL];
                $genzong_exist = $this->GenzongCsfp->find(‘count‘, [ ‘conditions‘ => $genzong_con ]);
                if($genzong_exist){

                    $service_data[‘is_fp_genzong‘] = 1;
                }


                if($this->BaomingService->save($service_data)){

                    //更新服务咨询数据信息
                    $this->_cake24_check_service($baoming_id);

                    //报名成功
                    if($return){

                        return $baoming_id;
                    }else{

                        $this->bm_returns( array(‘code‘ => 10200, ‘str‘ => ‘报名成功!‘), false );
                    }
                    
                }else{

                    //报名错误
                    $this->bm_returns( array(‘code‘ => 10400, ‘str‘ => ‘报名失败,请重试!‘), false );
                }
            }else{

                
                $this->bm_returns( array(‘code‘ => 10200, ‘str‘ => ‘您已报名!‘), false );
            }
        }else{

            //报名错误
            $this->bm_returns( array(‘code‘ => 10400, ‘str‘ => ‘报名失败,请重试!‘), false );
        }
    }

    /*
     * 将JSONP形式的报名数据提交统一改为内部调用
     * 并在cake24项目下新增报名数据录入接口
     * create date 2015-11-16
     * 更新于 2017-03-24
     * $is_zhuangxiu  true 其他装修报名 false  建材馆报名  
     * $return_type 返回类型
     * $service false(不是服务咨询报名),  true (是服务咨询报名)
     * app 过来的报名 统一添加参数 $REQUEST[‘find_cookies‘] = 1
     */
    public function cake24_commit2($return = false, $is_zhuangxiu = true, $return_type = false, $service = false) {
        $this->layout = false;
        $this->autoRender = false;

        $REQUEST = array_merge($_GET, $_POST);

        if (!empty($REQUEST[‘callback‘]) && preg_match(‘/^\w+$/‘, $REQUEST[‘callback‘])) {
            $callback = $REQUEST[‘callback‘];
        }

        $data = array();

        $require = array(‘name‘, ‘mobile‘);
        foreach ($require as $value) {
            
            if(empty($REQUEST[$value])){//判断关键数据是否为空,为空则返回错误

                $str = $value == ‘name‘ ? ‘姓名‘:‘手机号‘;

                $this->bm_returns( array(‘code‘ => 10402, ‘str‘ => $str.‘不能为空!‘, ‘data‘ => array()), $return_type );
            }

            $func = ‘cake24_ck‘ . $value;
            if($value == ‘mobile‘) {
                
                //U_ENCRYPT 作用是对手机进行加密处理
                $foo = !$data[$value] = $this->U_ENCRYPT($this->$func($REQUEST[$value]));
            }else{
                
                //对姓名进行过滤,去除掉特殊字符和如果姓名为空则标注为NONAME
                $foo = !$data[$value] = $this->$func($REQUEST[$value]);
            }
            if (empty($REQUEST[$value]) || !method_exists($this, $func) || $foo) {
                
                $this->bm_returns( array(‘code‘ => 10403, ‘str‘ => ‘提交错误,请不要填写特殊字符!‘, ‘data‘ => array()),$return_type );
            }
        }

        //对字段数据进行判断
        $fields = array(‘area‘, ‘budget‘, ‘loupan‘, ‘roomtype‘, ‘zxstyle‘, ‘zx_fangshi‘, ‘address‘, ‘bm_bak‘, ‘zxtype‘, ‘utm_page‘, ‘sex‘, ‘decoration_type‘, ‘district_id‘, ‘c_preferences‘,‘zhuangixu_status‘,‘c_experience‘);

        foreach ($REQUEST as $key => $value) {
            if (!in_array($key, $fields) || strlen($value) == 0) {
                continue;
            }

            $func = ‘cake24_ck‘ . $key;
            if (!method_exists($this, $func) || !$data[$key] = $this->$func($value)) {
                continue;
                
                $this->bm_returns( array(‘code‘ => 10403, ‘str‘ => ‘字段数据错误!‘, ‘data‘ => array(‘field‘ => $key)),$return_type );
            }
        }

        
        //判断是否有多个ip
        $ips = $this->cake24_getIP();
        if(strpos($ips, ‘,‘)){
            
            $explode = explode(‘,‘, $ips);
            $ips = trim($explode[0]);
        }

        //屏蔽掉局域网、外测和系统配置ip
        //true 当前ip需要屏蔽 , false 当前ip不需要屏蔽
        $ignore = $this->cake24_ignore_ip($ips);

        if( !$ignore ){//不需要屏蔽的ip,但不能重复报名超过10次
            
            $client_ip_count = $this->Baomings->find(‘count‘,array(
                    ‘conditions‘=>array(
                        ‘client_ip‘=>$ips,
                        ‘DATE_FORMAT(addtime,\‘%Y-%m-%d\‘)‘=>date(‘Y-m-d‘)
                    )
                )
            );
            
            //同一个ip下报名次数不能超过10次
            if( $client_ip_count >= 10 ){
                
                $this->bm_returns( array(‘code‘ => 10400, ‘str‘ => ‘报名次数过多,请稍后再试!‘, ‘data‘ => array(‘id‘ => 0)),$return_type );
            }
        }
        

        $city_id = (int)$REQUEST[‘city_id‘] ? (int)$REQUEST[‘city_id‘] : 0;
        $getcity = $this->cake24_getProvinces($city_id);
        $getcityid = $getcity[‘Cities‘][‘id‘] ? $getcity[‘Cities‘][‘id‘] : 72;
        $getprovinceid = $getcity[‘Cities‘][‘provinces_id‘] ? $getcity[‘Cities‘][‘provinces_id‘] : 9;

        $data[‘bm_laiyuan‘] = ‘baoming‘;
        $data[‘zx_jiaju‘] = !empty($REQUEST[‘zx_jiaju‘]) ? (int)$REQUEST[‘zx_jiaju‘] : 0;
        $data[‘addtime‘] = date(‘Y-m-d H:i:s‘);
        $data[‘mes_bak‘] = 1;
        $data[‘province_id‘] = $getprovinceid;
        $data[‘city_id‘] = $getcityid;
        $data[‘client_ip‘] = $ips;

        $union = array_key_exists(‘unionKey‘, $REQUEST) ? $REQUEST[‘unionKey‘] : $this->Cookie->read(‘unionKey‘);
        $name = ‘BM‘;
        if (!empty($union)) {
            
            list($name, $child) = explode(‘_‘, $union, 2);
            $name = strtoupper($name);

            //对推广渠道过滤特殊字符
            $name = $this->cake24_replace_text( $name );
            $child = $this->cake24_replace_text( $child );

            $data[‘from_union‘] = $name;
            $data[‘from_child‘] = $child;
            $data[‘newest_child‘] = $child;
            $this->loadModel("SemSources");
            $bm_laiyuan = $this->SemSources->field( ‘j_name‘ ,array(‘l_name‘=>$name,‘state‘=>0) );
            if( $bm_laiyuan ){
                
                if( $name == ‘LT‘ ){
                    
                    $data[‘from_child‘] = str_replace(‘+‘, ‘|‘, $child);
                }
                $data[‘bm_laiyuan‘] = $bm_laiyuan;
            }else{
                
                $data[‘bm_laiyuan‘] = ‘sem1‘;
            }             
        }

        if( in_array($name, [‘BDXK2‘,‘BDXK‘]) ){
            $data[‘is_origin‘] = 0;
        }else{
            //记录是否是广告推广过来的用户
            //app 过来的报名 统一添加参数 $REQUEST[‘find_cookies‘] = 1
            $data[‘is_origin‘] = $REQUEST[‘find_cookies‘] == 1 ? 0 : ($_COOKIE[‘unionOrigin‘] == 1 ? 0 : 1 );
            
            //自然流量(seo)报名来源记录
            if($data[‘is_origin‘]==1){
                $data[‘bm_laiyuan‘] = ‘baoming‘;
                $data[‘from_union‘] = NULL;
                $data[‘from_child‘] = ‘1‘;
            }
        }

        //按断客户端是否都是手机
        $form = $this->cake24_is_mobile();
        if ($form) {
            $data[‘detail_ly‘] = ‘mobile‘;
        } else {
            $data[‘detail_ly‘] = ‘pc‘;
        }
        

        $baomingModel = $this->Baomings->find(‘first‘, array(
                ‘conditions‘ => array(‘Baomings.mobile‘=>$data[‘mobile‘]), 
                ‘fields‘ => array(‘Baomings.id‘, ‘Baomings.zx_tuijian‘,‘Baomings.zx_jiaju‘,‘BaomingsPlus.periods‘, ‘zx_fuwu‘),
                ‘order‘ => array(‘Baomings.id desc‘)
            )
        );
        
        if(!$is_zhuangxiu && !$service){//建材馆报名非服务咨询
            
            $data[‘zx_tuijian‘] = 0;
            $data[‘zx_jiaju‘] = 1;

        }elseif($is_zhuangxiu && !$service){//装修非服务咨询
            $data[‘zx_tuijian‘] = 1;
            $data[‘zx_jiaju‘] = 0;

        }elseif ($service) {//服务咨询
            $data[‘zx_tuijian‘] = 0;
            $data[‘zx_jiaju‘] = 0;
            $data[‘zx_fuwu‘] = 1;
        }

        //$cake24_sjtest = ‘201603‘;//$this->cake24_sjtest();//期数
        $cake24_sjtest = $this->JcSetPeriod->field(‘periods‘,array(‘is_set‘=>1),‘JcSetPeriod.id desc‘);

        //没有数据添加  否则重置或修改
        if( !$baomingModel ){
            
            if (!$this->Baomings->save($data)) {        
                
                $this->bm_returns( array(‘code‘ => 10500, ‘str‘ => ‘错误提交!‘, ‘data‘ => array()),$return_type );
            }
            $this->U_SAVE_BM($this->Baomings->id, $REQUEST[‘mobile‘]);
            $this->BaomingsPlus->updateAll(array(‘periods‘=>"‘".$cake24_sjtest."‘",‘material_addtime‘=>time()),array(‘BaomingsPlus.baoming_id‘=>$this->Baomings->id));
        }else{
            
            $Baomings_id = $baomingModel[‘Baomings‘][‘id‘];
            
            //是建材特卖馆报名并且非服务咨询报名
            if(!$is_zhuangxiu && !$service){
                
                //不是同期的添加数据  否则修改参数   (取消期数报名)
                if($baomingModel[‘BaomingsPlus‘][‘periods‘] != $cake24_sjtest){
                    
                    $bm_updata = array(
                        ‘zx_jiaju‘ => 1,
                        ‘utm_page‘=>"‘".$data[‘utm_page‘]."‘",
                        ‘newest_child‘=>"‘".$data[‘newest_child‘]."‘",
                        ‘is_origin‘ => $data[‘is_origin‘]
                    );
                    $this->Baomings->updateAll( $bm_updata ,array(‘Baomings.id‘=>$Baomings_id));
                    //20170406 是建材报名 重置无建材活动需求字段BaomingPlus.unjchd 改为 0  连
                    $this->BaomingsPlus->updateAll(array(‘periods‘=>"‘".$cake24_sjtest."‘",‘material_addtime‘=>time(),‘unjchd‘=>0),array(‘BaomingsPlus.baoming_id‘=>$Baomings_id)); 
                    $this->Baomings->id = $Baomings_id;
                }else{
                    
                    //报名数据之前 zx_jiaju不等于1的
                    if($baomingModel[‘Baomings‘][‘zx_jiaju‘] != 1){
                        
                        $arrs[‘zx_jiaju‘] = 1;
                        //$arrs[‘from_child‘] = "‘".$data[‘from_child‘]."‘";
                        //$arrs[‘bm_laiyuan‘] = "‘".$data[‘bm_laiyuan‘]."‘";
                        $arrs[‘utm_page‘] = "‘".$data[‘utm_page‘]."‘";
                        $arrs[‘newest_child‘] = "‘".$data[‘newest_child‘]."‘";
                        $arrs[‘is_origin‘] = $data[‘is_origin‘];
                        $this->Baomings->updateAll($arrs,array(‘Baomings.id‘=>$Baomings_id));
                        $this->BaomingsPlus->updateAll(array(‘material_addtime‘=>time()),array(‘baoming_id‘=>$Baomings_id));
                        $this->Baomings->id = $Baomings_id;    
                    }else{
                        
                        //$arrs[‘from_child‘] = "‘".$data[‘from_child‘]."‘";
                        $arrs[‘utm_page‘] = "‘".$data[‘utm_page‘]."‘";
                        $arrs[‘newest_child‘] = "‘".$data[‘newest_child‘]."‘";
                        $arrs[‘is_origin‘] = $data[‘is_origin‘];
                        $this->Baomings->updateAll($arrs,array(‘Baomings.id‘=>$Baomings_id));
                        $this->Baomings->id = $Baomings_id;
                        $this->bm_returns( array(‘code‘ => 10400, ‘str‘ => ‘您已报名!‘, ‘data‘ => array()),$return_type );
                    }    
                }    
                
            //属于装修业务重置逻辑
            }elseif($is_zhuangxiu && !$service){  
                
                //更新服务咨询数据信息
                $this->_cake24_check_service($Baomings_id);

                //判断是否是有装修报名数据 调重置方法 否则更新
                if($baomingModel[‘Baomings‘][‘zx_tuijian‘] == 1){
                    
                    $json_decode = json_decode($this->cake24_ck_baoming_reset($data[‘mobile‘]),true);
                    $this->Baomings->id = $json_decode[‘baoming_id‘];
                }else{
                    
                    $arrs[‘zx_tuijian‘] = 1;
                    //$arrs[‘from_child‘] = "‘".$data[‘from_child‘]."‘";
                    //$arrs[‘bm_laiyuan‘] = "‘".$data[‘bm_laiyuan‘]."‘";
                    $this->Baomings->id = $Baomings_id;   
                }
                $arrs[‘utm_page‘] = "‘".$data[‘utm_page‘]."‘";
                $arrs[‘newest_child‘] = "‘".$data[‘newest_child‘]."‘";
                $arrs[‘is_origin‘] = $data[‘is_origin‘];
                $this->Baomings->updateAll($arrs,array(‘Baomings.id‘=>$this->Baomings->id));
            }elseif($service) {//服务咨询报名重置
                
                $arrs[‘zx_fuwu‘] = 1;
                $arrs[‘utm_page‘] = "‘".$data[‘utm_page‘]."‘";
                $arrs[‘newest_child‘] = "‘".$data[‘newest_child‘]."‘";
                $arrs[‘is_origin‘] = $data[‘is_origin‘];
                $this->Baomings->id = $Baomings_id;
                $this->Baomings->updateAll($arrs,array(‘Baomings.id‘=>$this->Baomings->id));
            }
                      
        }
        

        //报名页面来源过滤掉特殊字符
        if (preg_match(‘/([\w\x{4e00}-\x{9fa5}]+)-([\w\x{4e00}-\x{9fa5}]+)-([\w\x{4e00}-\x{9fa5}]+)-([\w\x{4e00}-\x{9fa5}]+)/u‘, $data[‘utm_page‘], $matches)) {
            list($channel, $page, $type, $name) = $this->Sources->setSources($matches[1], $matches[2], $matches[3], $matches[4]);
            $sources = array(‘channel_id‘ => $channel, ‘page_id‘ => $page, ‘type_id‘ => $type, ‘name_id‘ => $name, ‘baoming_id‘ => $this->Baomings->id, ‘addtime‘ => date(‘Y-m-d H:i:s‘));
            $this->BaomingSources->save($sources);
        }

        # 全站弹窗
        setcookie(‘pop_youjuke‘, 1, time() + 30 * 24 * 60 * 60, ‘/‘, ‘.‘.PRIMARY_DOMAIN);


        if($return){return $this->Baomings->id;}
        if (!empty($callback)) {
            
            die($callback . ‘(‘ . json_encode(array(‘code‘ => 10200, ‘str‘ => ‘提交成功!‘, ‘data‘ => array(‘id‘ => $this->Baomings->id, ‘cnzz‘ => ‘http://fuwu.‘ . PRIMARY_DOMAIN . ‘/index/bmResult?utm=‘ . $name))) . ‘)‘);
        } else {
            
            $this->bm_returns( array(‘code‘ => 10200, ‘str‘ => ‘提交成功!‘, ‘data‘ => array(‘id‘ => $this->Baomings->id)),$return_type );
            
        }
    }

    private function cake24_is_Baomings_chongzhi($data,$repeat)
    {
        $json_decode = json_decode($this->cake24_ck_baoming_reset($data[‘mobile‘]),true);
        //返回false 作为装修报名插入数据库 否则获取返回的报名id
        if(!$json_decode[‘status‘])
        {
            if (!$this->Baomings->save($data)) 
            {                     
                die(json_encode(array(‘code‘ => 10500, ‘str‘ => ‘错误提交!‘, ‘data‘ => array())));
            }
        }
        else
        {
            //建材报名
            if(!$repeat)
            {
                $arrs = array(‘zx_jiaju‘=>1);    
            }
            else
            {
                $arrs = array(‘zx_tuijian‘=>1);
            }
            $arrs[‘from_child‘] = "‘".$data[‘from_child‘]."‘";
            $arrs[‘bm_laiyuan‘] = "‘".$data[‘bm_laiyuan‘]."‘";
            $arrs[‘utm_page‘] = "‘".$data[‘utm_page‘]."‘";
            $this->Baomings->updateAll($arrs,array(‘Baomings.id‘=>$json_decode[‘baoming_id‘]));
            $this->Baomings->id = $json_decode[‘baoming_id‘];
        }
        return $this->Baomings->id;
    }


    //姓名(名称)格式判断
    private function cake24_ckname($value) {
        $value = trim($value);
        $value = $this->cake24_replace_specialChar($value);//过滤掉特殊字符
        if (!empty($value)) {
            return $value;
        }else{

            return ‘NONAME‘;//过滤掉特殊字符后,如果为空则赋值默认的值
        }
    }

    //手机号格式判断
    private function cake24_ckmobile($value) {
        if (preg_match(‘/^[1][3,4,5,7,8][0-9]{9}$/‘, $value)) {
            return $value;
        }
        return false;
    }

    //报名面积格式判断
    private function cake24_ckarea($value) {
        if (preg_match(‘/^\d{1,4}$/‘, $value)) {
            return $value;
        }
        return false;
    }

    //报名预算格式判断
    private function cake24_ckbudget($value) {
        if (preg_match(‘/^\d{1,4}(\.\d{1,4})?$/‘, $value)) {
            return $value;
        }
        return false;
    }

    //报名地址格式判断(去除掉特殊字符)
    private function cake24_ckaddress($value) {
        return strip_tags($value);
    }

    //报名楼盘格式判断(去除掉特殊字符)
    private function cake24_ckloupan($value) {
        return strip_tags($value);
    }

    //报名户型格式判断
    private function cake24_ckroomtype($value) {
        return is_numeric($value) ? $value : false;
    }

    private function cake24_ckzxstyle($value) {
        return is_numeric($value) ? $value : false;
    }

    private function cake24_ckzx_fangshi($value) {
        return $value;
        return is_numeric($value) ? $value : false;
    }

    private function cake24_ckbm_bak($value) {
        return strip_tags($value);
    }

    private function cake24_ckzxtype($value) {
        return is_numeric($value) ? $value : false;
    }

    //报名页面来源格式判断
    private function cake24_ckutm_page($value) {
        
        return $this->cake24_replace_text( $value );
    }

    //报名姓名判断
    private function cake24_cksex($value) {
        return in_array($value, array(1, 2)) ? $value : 2;
    }

    private function cake24_ckdecoration_type($value) {
        return is_numeric($value) ? $value : false;
    }

    //报名区域判断
    private function cake24_ckdistrict_id($value) {
        return is_numeric($value) ? $value : 717;
    }

    //报名偏好判断
    private function cake24_ckc_preferences($value) {
        return is_numeric($value) ? $value : false;
    }

    //报名装修状态判断
    private function cake24_ckzhuangixu_status($value) {
        return is_numeric($value) ? $value : false;
    }

    private function cake24_ckc_experience($value) {
        return is_numeric($value) ? $value : false;
    }

    //替换敏感字符
    protected function cake24_replace_text($text)
    {
        $text = str_replace(‘\\‘, ‘‘, $text);
        $text = preg_replace(‘/\/|\"|\‘|[><()=;#[email protected]#$%^&*?.+|]|(and)|(or)/i‘, ‘‘, $text);
        return $text;
    }

    /*
    *去除掉特殊字符(新)
    *date 2017-01-05
    */
    protected function cake24_replace_specialChar($strParam){
        
        return preg_replace("/[^\x{4e00}-\x{9fa5}a-zA-Z0-9]/iu",‘‘,$strParam);
    }

    //判断是否是电脑登录,还是手机登录
    public function cake24_is_mobile() {
        $user_agent = $_SERVER[‘HTTP_USER_AGENT‘];
        $mobile_agents = array("240x320", "acer", "acoon", "acs-", "abacho", "ahong", "airness", "alcatel", "amoi",
            "android", "anywhereyougo.com", "applewebkit/525", "applewebkit/532", "asus", "audio",
            "au-mic", "avantogo", "becker", "benq", "bilbo", "bird", "blackberry", "blazer", "bleu",
            "cdm-", "compal", "coolpad", "danger", "dbtel", "dopod", "elaine", "eric", "etouch", "fly ",
            "fly_", "fly-", "go.web", "goodaccess", "gradiente", "grundig", "haier", "hedy", "hitachi",
            "htc", "huawei", "hutchison", "inno", "ipad", "ipaq", "iphone", "ipod", "jbrowser", "kddi",
            "kgt", "kwc", "lenovo", "lg ", "lg2", "lg3", "lg4", "lg5", "lg7", "lg8", "lg9", "lg-", "lge-", "lge9", "longcos", "maemo",
            "mercator", "meridian", "micromax", "midp", "mini", "mitsu", "mmm", "mmp", "mobi", "mot-",
            "moto", "nec-", "netfront", "newgen", "nexian", "nf-browser", "nintendo", "nitro", "nokia",
            "nook", "novarra", "obigo", "palm", "panasonic", "pantech", "philips", "phone", "pg-",
            "playstation", "pocket", "pt-", "qc-", "qtek", "rover", "sagem", "sama", "samu", "sanyo",
            "samsung", "sch-", "scooter", "sec-", "sendo", "sgh-", "sharp", "siemens", "sie-", "softbank",
            "sony", "spice", "sprint", "spv", "symbian", "tablet", "talkabout", "tcl-", "teleca", "telit",
            "tianyu", "tim-", "toshiba", "tsm", "up.browser", "utec", "utstar", "verykool", "virgin",
            "vk-", "voda", "voxtel", "vx", "wap", "wellco", "wig browser", "wii", "windows ce",
            "wireless", "xda", "xde", "zte", "MicroMessenger");
        $is_mobile = false;
        foreach ($mobile_agents as $device) {
            if (stristr($user_agent, $device)) {
                $is_mobile = true;
                break;
            }
        }
        return $is_mobile;
    }

    //获取省信息
    public function cake24_getProvinces($cityid){
      
    if(!$cityid)
      {
        $getCity = $this->cake24_getCity( $this->cake24_getIP() );
        $city = in_array($getCity[‘city‘], array(‘上海‘,‘无锡‘)) ? $getCity[‘city‘]  : ‘上海‘;
        $conditions = array(‘Cities.name‘=>$city);
      }
      else
      {
        $conditions = array(‘Cities.id‘=>$cityid);
      }
      $Cities = $this->Cities->find(‘all‘,array(‘conditions‘=>$conditions));
      return $Cities[0];
    }

    public function cake24_getCity($ip){
        
        $this->layout = false;
        $this->autoRender = false;
        //$url="http://ip.taobao.com/service/getIpInfo.php?ip=".$ip;
        $url="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=".$ip;
        $ip = $this->cake24_curl_get($url);
        $ip = json_decode($ip,true);
        if($ip[‘ret‘] == -1)
        {
            return false;
        }
        return $ip;
        
    }

    //跨域获取信息
    public function cake24_curl_get($url){
        
        $to=2;

        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_TIMEOUT, $to);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        $data = curl_exec($curl);
        curl_close($curl);
        return $data;
    }

    //获取用户真实IP
    public function cake24_getIP() {
        if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
            $ip = getenv("HTTP_CLIENT_IP");
        else
            if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
                $ip = getenv("HTTP_X_FORWARDED_FOR");
            else
                if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
                    $ip = getenv("REMOTE_ADDR");
                else
                    if (isset ($_SERVER[‘REMOTE_ADDR‘]) && $_SERVER[‘REMOTE_ADDR‘] && strcasecmp($_SERVER[‘REMOTE_ADDR‘], "unknown"))
                        $ip = $_SERVER[‘REMOTE_ADDR‘];
                    else
                        $ip = "unknown";
        return ($ip);
    }


    

    #发送账户短信
    public function cake24_send_message($data){
        
        $mobile = $data[‘mobile‘];
        $content = $data[‘content‘];
        $source = $data[‘source‘];

        $times = $data[‘times‘] ? $data[‘times‘] : null;
        if (empty($mobile) || empty($content)) {
            return false;
        }

        if (empty($times)) {
            $times = 1;
        }

        $post[‘mobile‘] = is_array($mobile) ? join(‘,‘, $mobile) : $mobile;
        $post[‘content‘] = $content;
        $post[‘source‘] = $source;

        $sms_api = ‘http://sms.youjuke.com/sms/send_sms_api‘;


        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $sms_api);
        curl_setopt ( $ch, CURLOPT_POST, 1 );
        curl_setopt ( $ch, CURLOPT_HEADER, 0 );
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post );

        $output = curl_exec($ch);
        curl_close($ch);

        if (trim($output) == "失败" && $times <= 2) {
            $data[‘times‘] = !empty($data[‘times‘]) ? $data[‘times‘] + 1 : 1;
            $this->cake24_send_message($data);
        } else {
            //return true;
            return ‘成功‘;
        }

        //return false;
        return ‘失败‘;
    }

    //通过手机号查询手机号码的归属地信息 (已失效)
    public function cake24_phonesearch2($mobile){

        $ch = curl_init();
        $url = ‘http://apis.baidu.com/chazhao/mobilesearch/phonesearch?phone=‘.$mobile;
        $header = array(
            ‘apikey: c3aadd615ae4b6bfcbf8e4afc503fab7‘,
        );
        // 添加apikey到header
        curl_setopt($ch, CURLOPT_HTTPHEADER  , $header);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // 执行HTTP请求
        curl_setopt($ch , CURLOPT_URL , $url);
        $res = curl_exec($ch);

        return json_decode($res, TRUE);
    }

    //通过手机号查询手机号码的归属地信息
    public function cake24_phonesearch($mobile){

        $url = ‘http://sj.apidata.cn/?mobile=‘.$mobile;
        $ch = curl_init();
        // 执行HTTP请求
        curl_setopt($ch, CURLOPT_HTTPHEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // 执行HTTP请求
        curl_setopt($ch , CURLOPT_URL , $url);
        $res = curl_exec($ch); 

        curl_close($ch);
        $res = json_decode($res, TRUE);
        $data[‘error‘] = $res[‘status‘] == 1 ? 0 : 1;
        $data[‘message‘] = $res[‘message‘];
        $data[‘data‘] = $res[‘data‘];
        return $data;
    }

    //通过ip查询ip的归属地信息
    public function cake24_ipsearch($ip){

        //判断是否是合法的ip
        if(!filter_var($ip, FILTER_VALIDATE_IP)){return NULL;}
        
        $ch = curl_init();
        $url = ‘http://apis.baidu.com/apistore/iplookupservice/iplookup?ip=‘.$ip;
        $header = array(
            ‘apikey: c3aadd615ae4b6bfcbf8e4afc503fab7‘,
        );
        // 添加apikey到header
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // 执行HTTP请求
        curl_setopt($ch , CURLOPT_URL , $url);
        $res = curl_exec($ch);

        return json_decode($res, TRUE);
    }

    /*
     * 判断业主报名的地址,目前公司自支持上海和江苏地区
     * 如果报名的来源地址为非上海和江苏的 则录入报名里 zx_tuijian =0 反之则为 1
     */

    public function cake24_getbaoming_area($mobile, $ip=‘‘){

        //获取报名信息的ip地址
        if(empty($ip)){$ip = $this->cake24_getIP();}

        $ipAddress = $this->cake24_ipsearch($ip);
        $phoneAddress = $this->cake24_phonesearch($mobile);

        $ipresult = in_array($ipAddress[‘province‘], array(‘上海‘, ‘江苏‘));
        $mobileresult = in_array($phoneAddress[‘data‘][‘province‘], array(‘上海‘, ‘江苏‘));

        if($ipresult || $mobileresult){


            return 1;
        }else{

            return 0;
        }

    }

    //通过经纬度获取具体的地理位置
    public function cake24_getLocation($x, $y){

        $ch = curl_init();
        $url = ‘http://apis.baidu.com/3023/geo/address?l=‘.$x.‘,‘.$y;
        
        $header = array(
            ‘apikey: c3aadd615ae4b6bfcbf8e4afc503fab7‘,
        );
        // 添加apikey到header
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // 执行HTTP请求
        curl_setopt($ch , CURLOPT_URL , $url);
        $res = curl_exec($ch);

        $addressData = json_decode($res, true);
        $admName = $addressData[‘addrList‘][0][‘admName‘];
        $locationArr = explode(‘,‘, $admName);
        return $locationArr;

    }

    /*
    * 通过经纬度获取具体的地理位置(新)
    * $x,$y 经纬度
    * date 2016-10-24
    */
    public function cake24_getAddress($x, $y){

        $ch = curl_init();
        $url = ‘http://api.haoservice.com/api/getLocationinfor?latlng=‘.$x.‘,‘.$y.‘&type=2&key=9fba1a9b3c804d8680125836b560ea64‘;
        
        
        // 执行HTTP请求
        curl_setopt($ch, CURLOPT_HTTPHEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // 执行HTTP请求
        curl_setopt($ch , CURLOPT_URL , $url);
        $res = curl_exec($ch);

        $res_arr = json_decode($res, true);
        $addressData = $res_arr[‘result‘];

        return $addressData;

    }

    /*
    * 获取广告信息
    * $c_id 广告所属分类id
    * $fields 要获取的字段信息
    */
    public function cake24_GetAdve($c_id,$fields=array(),$intro=‘‘,$model=‘‘,$limit=‘‘)
    {
        if( !$c_id )
        {
            return false;
        }
        $this->loadModel("ItvAttribute");
        $this->loadModel("FirmItvDetails");
        $this->loadModel("Firms");
        if( $model )
        {
            $this->ItvAttribute->useDbConfig = $this->FirmItvDetails->useDbConfig = $this->Firms->useDbConfig = ‘youjk‘;
        }
        $image_url = ‘http://index.img.youjuke.com‘;
        $times = date(‘Y-m-d‘);
        $fields = array_merge($fields,array(‘itv_balance‘,‘total_cost‘,‘firm_id‘,‘is_itv‘,‘end_time‘));
        $ItvAttribute = $this->ItvAttribute->findAsFirms(‘all‘,array(
                ‘conditions‘=>array(
                    ‘status‘=>1,
                    ‘delete‘=>0,
                    ‘c_id‘ => $c_id,
                    ‘OR‘ => array(
                        array(‘is_itv‘=>1,‘start_time <=‘=>$times,‘end_time >=‘=>$times),
                        array(‘is_itv‘=>2)
                    )
                ),
                ‘fields‘ => $fields,
                ‘order‘ => array(‘is_itv asc‘),
                ‘limit‘ => $limit
            )
        );
        $data = array();
        foreach ($ItvAttribute as $key => $val) 
        {
            $val_key = $val[‘ItvAttribute‘];
            //广告扣费
            if( $val_key[‘is_itv‘] == 1 )
            {
                $this->FirmItvDetails->clear();
                //广告费未支付的扣除费用
                $is_exists = $this->FirmItvDetails->find(‘count‘,array(
                        ‘conditions‘=>array(‘firm_id‘=>$val_key[‘firm_id‘],‘itv_id‘=>$val_key[‘id‘],‘renew_time‘=>$val_key[‘end_time‘])
                    )
                );
                if( !$is_exists )
                {
                    //余额充足扣除广告费并且显示 否则跳出不显示
                    if( $val_key[‘itv_balance‘] >= $val_key[‘total_cost‘] )
                    {
                        $dataSource = $this->FirmItvDetails->getDataSource();
                        $dataSource->begin();
                        $fee_time = date(‘Y-m-d H:i:s‘);
                        $det_data[‘firm_id‘] = $val_key[‘firm_id‘];
                        $det_data[‘itv_id‘] = $val_key[‘id‘];
                        $det_data[‘note‘] = $intro.‘-广告扣费‘;
                        $det_data[‘type‘] = 2;
                        $det_data[‘amount‘] = ‘-‘.$val_key[‘total_cost‘];
                        $det_data[‘add_time‘] = $fee_time;
                        $det_data[‘renew_time‘] = $val_key[‘end_time‘];
                        if( !$this->FirmItvDetails->save( $det_data ) )
                        {
                            $dataSource->rollback();
                        }
                        else
                        {
                            $this->Firms->updateAll( array(‘itv_balance‘=>‘`itv_balance`-‘.$val_key[‘total_cost‘]) , array(‘Firms.id‘=>$val_key[‘firm_id‘]) );
                            $dataSource->commit();
                        }
                    }
                    else
                    {
                        continue;
                    }
                }
                
            }
            $c_id = $val_key[‘c_id‘];
            $img = $image_url.‘/‘.$val_key[‘c_id‘].‘/‘;
            $val_key[‘image‘] = $img.$val_key[‘image‘];
            $val_key[‘firm_logo‘] = $img.$val_key[‘firm_logo‘];
            $data[ $c_id ][] = $val_key;
        }
        return $data;
    }


    /*
    * 根据面积 计算几室几厅
    */
    protected function cake24_baojia_budget($total_area,$info=false)
    {
        $woshi = array();
        $keting = array();
        $chufang = array();
        $weishengjian = array();
        $yangtai = array();
        /*
          建筑面积*0.8=实际总面积
          60平米以下:1室1厅(厨房卫生间阳台固定4平米。卧室/厅=1/1)
          61-90:2室1厅(厨房卫生间阳台固定6平米。卧室1/卧室2/厅=3/2/3)
          91-110:3室1厅(厨房卫生间阳台固定8平米。卧室1/卧室2/卧室3/厅=3/2/2/3)
          111-130:3室2厅(厨房卫生间阳台固定8平米。卧室1/卧室2/卧室3/厅1/厅2=3/2/2/3/2)
          131-150:3室2厅2卫(厨房阳台固定面积8平米,卫生间6平米。卧室1/卧室2/卧室3/厅1/厅2=3/2/2/3/2)
          151-180:4室2厅1厨2卫1阳(厨房10平米,卫生间6平米,阳台8平米。卧室1/卧室2/卧室3/卧室4/厅1/厅2=3/2/2/2/3/2)
         */
        $real_area = $total_area * 0.8;
        if ($total_area > 0 && $total_area < 60) {
            $woshi["woshi_61"] = round(($real_area - 4 * 3) / 2, 1);
            $keting[‘keting_21‘] = round(($real_area - 4 * 3) / 2, 1);
            $chufang[‘chufang_11‘] = 4;
            $weishengjian[‘weishengjian_31‘] = 4;
            $yangtai[‘yangtai_31‘] = 4;
        } else if ($total_area >= 60 && $total_area < 90) {
            $woshi["woshi_61"] = round(($real_area - 6 * 3) * 3 / 8, 1);
            $woshi["woshi_62"] = round(($real_area - 6 * 3) * 2 / 8, 1);
            $keting[‘keting_21‘] = round(($real_area - 6 * 3) * 3 / 8, 1);
            $chufang[‘chufang_11‘] = 6;
            $weishengjian[‘weishengjian_31‘] = 6;
            $yangtai[‘yangtai_31‘] = 6;
        } else if ($total_area >= 90 && $total_area < 110) {
            $woshi["woshi_61"] = round(($real_area - 6 * 3) * 3 / 10, 1);
            $woshi["woshi_62"] = round(($real_area - 6 * 3) * 2 / 10, 1);
            $woshi["woshi_63"] = round(($real_area - 6 * 3) * 2 / 10, 1);
            $keting[‘keting_21‘] = round(($real_area - 6 * 3) * 3 / 10, 1);
            $chufang[‘chufang_11‘] = 8;
            $weishengjian[‘weishengjian_31‘] = 8;
            $yangtai[‘yangtai_31‘] = 8;
        } else if ($total_area >= 110 && $total_area < 130) {
            $woshi["woshi_61"] = round(($real_area - 6 * 3) * 3 / 12, 1);
            $woshi["woshi_62"] = round(($real_area - 6 * 3) * 2 / 12, 1);
            $woshi["woshi_63"] = round(($real_area - 6 * 3) * 2 / 12, 1);
            $keting[‘keting_21‘] = round(($real_area - 6 * 3) * 3 / 12, 1);
            $keting[‘keting_22‘] = round(($real_area - 6 * 3) * 2 / 12, 1);
            $chufang[‘chufang_11‘] = 8;
            $weishengjian[‘weishengjian_31‘] = 8;
            $yangtai[‘yangtai_31‘] = 8;
        } else if ($total_area >= 130 && $total_area < 150) {
            $woshi["woshi_61"] = round(($real_area - 22) * 3 / 12, 1);
            $woshi["woshi_62"] = round(($real_area - 22) * 2 / 12, 1);
            $woshi["woshi_63"] = round(($real_area - 22) * 2 / 12, 1);
            $keting[‘keting_21‘] = round(($real_area - 22) * 3 / 12, 1);
            $keting[‘keting_22‘] = round(($real_area - 22) * 2 / 12, 1);
            $chufang[‘chufang_11‘] = 8;
            $weishengjian[‘weishengjian_31‘] = 6;
            $yangtai[‘yangtai_31‘] = 8;
        } else if ($total_area >= 150) {
            $woshi["woshi_61"] = round(($real_area - 24) * 3 / 14, 1);
            $woshi["woshi_62"] = round(($real_area - 24) * 2 / 14, 1);
            $woshi["woshi_63"] = round(($real_area - 24) * 2 / 14, 1);
            $woshi["woshi_64"] = round(($real_area - 24) * 2 / 14, 1);
            $keting[‘keting_21‘] = round(($real_area - 24) * 3 / 14, 1);
            $keting[‘keting_22‘] = round(($real_area - 24) * 2 / 14, 1);
            $chufang[‘chufang_11‘] = 10;
            $weishengjian[‘weishengjian_31‘] = 6;
            $yangtai[‘yangtai_31‘] = 8;
        }

        $budget = $woshi;
        $budget = array_merge($budget,$keting,$chufang,$weishengjian,$yangtai);
        $jine = $this->cake24_show_zxbj( $budget );
        if( $info )
        {
            return $jine;
        }
        return round($jine[‘total_price‘], 2);
    }

    protected function cake24_show_zxbj( $budget=array() ) 
    {

        $this->layout = false;
        //房屋基础信息
        $i_p = 1; //总倍数
        //客厅  2
        $arr_keting = array();
        if (!empty($budget[‘keting_21‘])) {
            $arr_keting[] = $budget[‘keting_21‘];
        }
        if (!empty($budget[‘keting_22‘])) {
            $arr_keting[] = $budget[‘keting_22‘];
        }
        $c_kt = count($arr_keting);
        //$keting[‘keting_21‘] = $budget[‘keting_21‘];
        //$keting[‘keting_22‘] = $budget[‘keting_22‘];

        //卧室  6
        $arr_woshi = array();
        if (!empty($budget[‘woshi_61‘])) {
            $arr_woshi[] = $budget[‘woshi_61‘];
        }
        if (!empty($budget[‘woshi_62‘])) {
            $arr_woshi[] = $budget[‘woshi_62‘];
        }
        if (!empty($budget[‘woshi_63‘])) {
            $arr_woshi[] = $budget[‘woshi_63‘];
        }
        if (!empty($budget[‘woshi_64‘])) {
            $arr_woshi[] = $budget[‘woshi_64‘];
        }
        if (!empty($budget[‘woshi_65‘])) {
            $arr_woshi[] = $budget[‘woshi_65‘];
        }
        if (!empty($budget[‘woshi_66‘])) {
            $arr_woshi[] = $budget[‘woshi_66‘];
        }
        $c_ws = count($arr_woshi);

        //公用卫生间   3
        $arr_weishengjian = array();
        if (!empty($budget[‘weishengjian_31‘])) {
            $arr_weishengjian[] = $budget[‘weishengjian_31‘];
        }
        if (!empty($budget[‘weishengjian_32‘])) {
            $arr_weishengjian[] = $budget[‘weishengjian_32‘];
        }
        if (!empty($budget[‘weishengjian_33‘])) {
            $arr_weishengjian[] = $budget[‘weishengjian_33‘];
        }
        $c_wsj = count($arr_weishengjian);


        //厨房   1
        $arr_chufang = array();
        if (!empty($budget[‘chufang_11‘])) {
            $arr_chufang[] = $budget[‘chufang_11‘];
        }
        $c_cf = count($arr_chufang);

        //厅阳台   3
        $arr_yangtai = array();
        if (!empty($budget[‘yangtai_31‘])) {
            $arr_yangtai[] = $budget[‘yangtai_31‘];
        }
        if (!empty($budget[‘yangtai_32‘])) {
            $arr_yangtai[] = $budget[‘yangtai_32‘];
        }
        if (!empty($budget[‘yangtai_33‘])) {
            $arr_yangtai[] = $budget[‘yangtai_33‘];
        }
        $c_yt = count($arr_yangtai);

        //总面积
        $arr_areas = array_merge($arr_keting, $arr_woshi, $arr_weishengjian, $arr_chufang, $arr_yangtai);
        $areas = array_sum($arr_areas);
        //总价
        $total_price = 0;

        //家装基础施工报价清单
        //客厅工程
        $kt_sy = 0; //js索引初始值
        //$kt_total = 0;//客厅总价
        foreach ($arr_keting as $k => $val) {
            $arr_kt[$k][‘sy‘] = $kt_sy + $k; //js索引
            //墙面铲除墙面腻子层 qm_nzh
            $arr_kt[$k][‘gcl‘][‘qm_nzh‘] = $val * 2.67;
            $arr_kt[$k][‘gcj‘][‘qm_nzh‘] = $arr_kt[$k][‘gcl‘][‘qm_nzh‘] * 7 * $i_p;
            $arr_kt[$k][‘price‘] += $arr_kt[$k][‘gcj‘][‘qm_nzh‘];
            //墙面滚胶 qm_gj
            $arr_kt[$k][‘gcl‘][‘qm_gj‘] = $val * 2.67;
            $arr_kt[$k][‘gcj‘][‘qm_gj‘] = $arr_kt[$k][‘gcl‘][‘qm_gj‘] * 6 * $i_p;
            $arr_kt[$k][‘price‘] += $arr_kt[$k][‘gcj‘][‘qm_gj‘];
            //墙面批腻子 qm_pnz
            $arr_kt[$k][‘gcl‘][‘qm_pnz‘] = $val * 2.67;
            $arr_kt[$k][‘gcj‘][‘qm_pnz‘] = $arr_kt[$k][‘gcl‘][‘qm_pnz‘] * 19 * $i_p;
            $arr_kt[$k][‘price‘] += $arr_kt[$k][‘gcj‘][‘qm_pnz‘];
            //墙面手刷乳胶漆 qm_rjq(多乐士金装五合一,一底两面)
            $arr_kt[$k][‘gcl‘][‘qm_rjq‘] = $val * 2.67;
            $arr_kt[$k][‘gcj‘][‘qm_rjq‘] = $arr_kt[$k][‘gcl‘][‘qm_rjq‘] * 17 * $i_p;
            $arr_kt[$k][‘price‘] += $arr_kt[$k][‘gcj‘][‘qm_rjq‘];
            //顶面普通木龙骨石膏板吊顶 dm_sgb
            $arr_kt[$k][‘gcl‘][‘dm_sgb‘] = $val * 0.4;
            $arr_kt[$k][‘gcj‘][‘dm_sgb‘] = $arr_kt[$k][‘gcl‘][‘dm_sgb‘] * 130 * $i_p;
            $arr_kt[$k][‘price‘] += $arr_kt[$k][‘gcj‘][‘dm_sgb‘];
            //顶面铲除顶面腻子层 dm_nzh
            $arr_kt[$k][‘gcl‘][‘dm_nzh‘] = $val * 1.33;
            $arr_kt[$k][‘gcj‘][‘dm_nzh‘] = $arr_kt[$k][‘gcl‘][‘dm_nzh‘] * 7 * $i_p;
            $arr_kt[$k][‘price‘] += $arr_kt[$k][‘gcj‘][‘dm_nzh‘];
            //顶面滚胶 dm_gj
            $arr_kt[$k][‘gcl‘][‘dm_gj‘] = $val * 1.33;
            $arr_kt[$k][‘gcj‘][‘dm_gj‘] = $arr_kt[$k][‘gcl‘][‘dm_gj‘] * 6 * $i_p;
            $arr_kt[$k][‘price‘] += $arr_kt[$k][‘gcj‘][‘dm_gj‘];
            //顶面批腻子 dm_pnz
            $arr_kt[$k][‘gcl‘][‘dm_pnz‘] = $val * 1.33;
            $arr_kt[$k][‘gcj‘][‘dm_pnz‘] = $arr_kt[$k][‘gcl‘][‘dm_pnz‘] * 19 * $i_p;
            $arr_kt[$k][‘price‘] += $arr_kt[$k][‘gcj‘][‘dm_pnz‘];
            //顶面手刷乳胶漆 dm_rjq(金装五合一,一底两面)
            $arr_kt[$k][‘gcl‘][‘dm_rjq‘] = $val * 1.33;
            $arr_kt[$k][‘gcj‘][‘dm_rjq‘] = $arr_kt[$k][‘gcl‘][‘dm_rjq‘] * 17 * $i_p;
            $arr_kt[$k][‘price‘] += $arr_kt[$k][‘gcj‘][‘dm_rjq‘];

            $total_price += $arr_kt[$k][‘price‘];
        }
        

//卧室工程
        $ws_sy = $c_kt;
//$ws_total = 0;//卧室总价
        foreach ($arr_woshi as $k => $val) {
            $arr_ws[$k][‘sy‘] = $ws_sy + $k; //js索引
//墙面铲除墙面腻子层 qm_nzh
            $arr_ws[$k][‘gcl‘][‘qm_nzh‘] = $val * 2.5;
            $arr_ws[$k][‘gcj‘][‘qm_nzh‘] = $arr_ws[$k][‘gcl‘][‘qm_nzh‘] * 7 * $i_p;
            $arr_ws[$k][‘price‘] += $arr_ws[$k][‘gcj‘][‘qm_nzh‘];
//墙面滚胶 qm_gj
            $arr_ws[$k][‘gcl‘][‘qm_gj‘] = $val * 2.5;
            $arr_ws[$k][‘gcj‘][‘qm_gj‘] = $arr_ws[$k][‘gcl‘][‘qm_gj‘] * 6 * $i_p;
            $arr_ws[$k][‘price‘] += $arr_ws[$k][‘gcj‘][‘qm_gj‘];
//墙面批腻子 qm_pnz
            $arr_ws[$k][‘gcl‘][‘qm_pnz‘] = $val * 2.5;
            $arr_ws[$k][‘gcj‘][‘qm_pnz‘] = $arr_ws[$k][‘gcl‘][‘qm_pnz‘] * 19 * $i_p;
            $arr_ws[$k][‘price‘] += $arr_ws[$k][‘gcj‘][‘qm_pnz‘];
//墙面手刷乳胶漆 qm_nzc
            $arr_ws[$k][‘gcl‘][‘qm_nzc‘] = $val * 2.5;
            $arr_ws[$k][‘gcj‘][‘qm_nzc‘] = $arr_ws[$k][‘gcl‘][‘qm_nzc‘] * 17 * $i_p;
            $arr_ws[$k][‘price‘] += $arr_ws[$k][‘gcj‘][‘qm_nzc‘];
//顶面铲除顶面腻子层 dm_nzc
            $arr_ws[$k][‘gcl‘][‘dm_nzc‘] = $val * 1;
            $arr_ws[$k][‘gcj‘][‘dm_nzc‘] = $arr_ws[$k][‘gcl‘][‘dm_nzc‘] * 7 * $i_p;
            $arr_ws[$k][‘price‘] += $arr_ws[$k][‘gcj‘][‘dm_nzc‘];
//顶面滚胶 dm_gj
            $arr_ws[$k][‘gcl‘][‘dm_gj‘] = $val * 1;
            $arr_ws[$k][‘gcj‘][‘dm_gj‘] = $arr_ws[$k][‘gcl‘][‘dm_gj‘] * 6 * $i_p;
            $arr_ws[$k][‘price‘] += $arr_ws[$k][‘gcj‘][‘dm_gj‘];
//顶面批腻子 dm_pnz
            $arr_ws[$k][‘gcl‘][‘dm_pnz‘] = $val * 1;
            $arr_ws[$k][‘gcj‘][‘dm_pnz‘] = $arr_ws[$k][‘gcl‘][‘dm_pnz‘] * 19 * $i_p;
            $arr_ws[$k][‘price‘] += $arr_ws[$k][‘gcj‘][‘dm_pnz‘];
//顶面手刷乳胶漆 dm_rjq
            $arr_ws[$k][‘gcl‘][‘dm_rjq‘] = $val * 1;
            $arr_ws[$k][‘gcj‘][‘dm_rjq‘] = $arr_ws[$k][‘gcl‘][‘dm_rjq‘] * 17 * $i_p;
            $arr_ws[$k][‘price‘] += $arr_ws[$k][‘gcj‘][‘dm_rjq‘];
//门套打底(宽度≤200mm) mt_dd
            $arr_ws[$k][‘gcl‘][‘mt_dd‘] = $val * 0.5;
            $arr_ws[$k][‘gcj‘][‘mt_dd‘] = $arr_ws[$k][‘gcl‘][‘mt_dd‘] * 43 * $i_p;
            $arr_ws[$k][‘price‘] += $arr_ws[$k][‘gcj‘][‘mt_dd‘];
//大理石窗台板(宽度≤600-900MM) dls_ctb
            $arr_ws[$k][‘gcl‘][‘dls_ctb‘] = $val * 0.2;
            $arr_ws[$k][‘gcj‘][‘dls_ctb‘] = $arr_ws[$k][‘gcl‘][‘dls_ctb‘] * 230 * $i_p;
            $arr_ws[$k][‘price‘] += $arr_ws[$k][‘gcj‘][‘dls_ctb‘];

            $total_price += $arr_ws[$k][‘price‘];
        }
//---卧室1
        
//公用卫生间工程
        $wsj_sy = $c_kt + $c_ws;
//$wsj_total = 0;//卫生间总价
        foreach ($arr_weishengjian as $k => $val) {
            $arr_wsj[$k][‘sy‘] = $wsj_sy + $k; //js索引
//地面做二遍防水处理 dm_fscl
            $arr_wsj[$k][‘gcl‘][‘dm_fscl‘] = $val * 4;
            $arr_wsj[$k][‘gcj‘][‘dm_fscl‘] = $arr_wsj[$k][‘gcl‘][‘dm_fscl‘] * 55 * $i_p;
            $arr_wsj[$k][‘price‘] += $arr_wsj[$k][‘gcj‘][‘dm_fscl‘];
//铺贴地砖不拼花(含填缝) pt_dzb
            $arr_wsj[$k][‘gcl‘][‘pt_dzb‘] = $val * 1;
            $arr_wsj[$k][‘gcj‘][‘pt_dzb‘] = $arr_wsj[$k][‘gcl‘][‘pt_dzb‘] * 77 * $i_p;
            $arr_wsj[$k][‘price‘] += $arr_wsj[$k][‘gcj‘][‘pt_dzb‘];
//地面找平(30mm内) dm_zp
            $arr_wsj[$k][‘gcl‘][‘dm_zp‘] = $val * 1;
            $arr_wsj[$k][‘gcj‘][‘dm_zp‘] = $arr_wsj[$k][‘gcl‘][‘dm_zp‘] * 60 * $i_p;
            $arr_wsj[$k][‘price‘] += $arr_wsj[$k][‘gcj‘][‘dm_zp‘];
//淋浴房挡水槛(浅色,含磨边) lyf_dsk
            $arr_wsj[$k][‘gcl‘][‘lyf_dsk‘] = $val * 0.38;
            $arr_wsj[$k][‘gcj‘][‘lyf_dsk‘] = $arr_wsj[$k][‘gcl‘][‘lyf_dsk‘] * 150 * $i_p;
            $arr_wsj[$k][‘price‘] += $arr_wsj[$k][‘gcj‘][‘lyf_dsk‘];
//大理石门槛石宽度≤240MM dls_mks
            $arr_wsj[$k][‘gcl‘][‘dls_mks‘] = $val * 0.25;
            $arr_wsj[$k][‘gcj‘][‘dls_mks‘] = $arr_wsj[$k][‘gcl‘][‘dls_mks‘] * 115 * $i_p;
            $arr_wsj[$k][‘price‘] += $arr_wsj[$k][‘gcj‘][‘dls_mks‘];
//铺贴墙砖不拼花(含填缝) pt_qzb
            $arr_wsj[$k][‘gcl‘][‘pt_qzb‘] = $val * 3.8;
            $arr_wsj[$k][‘gcj‘][‘pt_qzb‘] = $arr_wsj[$k][‘gcl‘][‘pt_qzb‘] * 73 * $i_p;
            $arr_wsj[$k][‘price‘] += $arr_wsj[$k][‘gcj‘][‘pt_qzb‘];
//墙面磁砖倒角加工费 qm_czdj
            $arr_wsj[$k][‘gcl‘][‘qm_czdj‘] = $val * 3;
            $arr_wsj[$k][‘gcj‘][‘qm_czdj‘] = $arr_wsj[$k][‘gcl‘][‘qm_czdj‘] * 20 * $i_p;
            $arr_wsj[$k][‘price‘] += $arr_wsj[$k][‘gcj‘][‘qm_czdj‘];
//门套打底(宽度≤200mm) mt_dd
            $arr_wsj[$k][‘gcl‘][‘mt_dd‘] = $val * 1.25;
            $arr_wsj[$k][‘gcj‘][‘mt_dd‘] = $arr_wsj[$k][‘gcl‘][‘mt_dd‘] * 43 * $i_p;
            $arr_wsj[$k][‘price‘] += $arr_wsj[$k][‘gcj‘][‘mt_dd‘];
//地漏及安装 dl_az
            $arr_wsj[$k][‘gcl‘][‘dl_az‘] = $val * 0.5;
            $arr_wsj[$k][‘gcj‘][‘dl_az‘] = $arr_wsj[$k][‘gcl‘][‘dl_az‘] * 88 * $i_p;
            $arr_wsj[$k][‘price‘] += $arr_wsj[$k][‘gcj‘][‘dl_az‘];
//安装成品台盆柜(含面盆、面盆龙头) az_tpg
            $arr_wsj[$k][‘gcl‘][‘az_tpg‘] = $val * 0.25;
            $arr_wsj[$k][‘gcj‘][‘az_tpg‘] = $arr_wsj[$k][‘gcl‘][‘az_tpg‘] * 80 * $i_p;
            $arr_wsj[$k][‘price‘] += $arr_wsj[$k][‘gcj‘][‘az_tpg‘];
//冷热水龙头安装(面盆/浴缸/淋浴/洗衣机) lr_slt
            $arr_wsj[$k][‘gcl‘][‘lr_slt‘] = $val * 0.25;
            $arr_wsj[$k][‘gcj‘][‘lr_slt‘] = $arr_wsj[$k][‘gcl‘][‘lr_slt‘] * 80 * $i_p;
            $arr_wsj[$k][‘price‘] += $arr_wsj[$k][‘gcj‘][‘lr_slt‘];
//浴室浴配件安装(毛巾杆、浴巾架等) ys_ypj
            $arr_wsj[$k][‘gcl‘][‘ys_ypj‘] = $val * 0.25;
            $arr_wsj[$k][‘gcj‘][‘ys_ypj‘] = $arr_wsj[$k][‘gcl‘][‘ys_ypj‘] * 100 * $i_p;
            $arr_wsj[$k][‘price‘] += $arr_wsj[$k][‘gcj‘][‘ys_ypj‘];
//三角阀+软管(套) sjf_rg
            $arr_wsj[$k][‘gcl‘][‘sjf_rg‘] = $val * 0.75;
            $arr_wsj[$k][‘gcj‘][‘sjf_rg‘] = $arr_wsj[$k][‘gcl‘][‘sjf_rg‘] * 60 * $i_p;
            $arr_wsj[$k][‘price‘] += $arr_wsj[$k][‘gcj‘][‘sjf_rg‘];
//安装马桶 az_mt
            $arr_wsj[$k][‘gcl‘][‘az_mt‘] = $val * 0.25;
            $arr_wsj[$k][‘gcj‘][‘az_mt‘] = $arr_wsj[$k][‘gcl‘][‘az_mt‘] * 75 * $i_p;
            $arr_wsj[$k][‘price‘] += $arr_wsj[$k][‘gcj‘][‘az_mt‘];

            $total_price += $arr_wsj[$k][‘price‘];
        }
        
//厨房工程 总:1
        $cf_sy = $c_kt + $c_ws + $c_wsj;
//$cf_total = 0;//卧室总价
        foreach ($arr_chufang as $k => $val) {
            $arr_cf[$k][‘sy‘] = $cf_sy + $k; //js索引
//铺贴地砖不拼花(含填缝) pt_dz
            $arr_cf[$k][‘gcl‘][‘pt_dz‘] = $val * 1;
            $arr_cf[$k][‘gcj‘][‘pt_dz‘] = $arr_cf[$k][‘gcl‘][‘pt_dz‘] * 77 * $i_p;
            $arr_cf[$k][‘price‘] += $arr_cf[$k][‘gcj‘][‘pt_dz‘];
//地面找平(30mm内) dm_zp
            $arr_cf[$k][‘gcl‘][‘dm_zp‘] = $val * 1;
            $arr_cf[$k][‘gcj‘][‘dm_zp‘] = $arr_cf[$k][‘gcl‘][‘dm_zp‘] * 60 * $i_p;
            $arr_cf[$k][‘price‘] += $arr_cf[$k][‘gcj‘][‘dm_zp‘];
//大理石门槛石宽度≤240MM dls_mk
            $arr_cf[$k][‘gcl‘][‘dls_mk‘] = $val * 0.2;
            $arr_cf[$k][‘gcj‘][‘dls_mk‘] = $arr_cf[$k][‘gcl‘][‘dls_mk‘] * 115 * $i_p;
            $arr_cf[$k][‘price‘] += $arr_cf[$k][‘gcj‘][‘dls_mk‘];
//铺贴墙砖不拼花(含填缝) pt_qz
            $arr_cf[$k][‘gcl‘][‘pt_qz‘] = $val * 3.8;
            $arr_cf[$k][‘gcj‘][‘pt_qz‘] = $arr_cf[$k][‘gcl‘][‘pt_qz‘] * 73 * $i_p;
            $arr_cf[$k][‘price‘] += $arr_cf[$k][‘gcj‘][‘pt_qz‘];
//磁砖倒角加工费 cz_djjgf
            $arr_cf[$k][‘gcl‘][‘cz_djjgf‘] = $val * 2.4;
            $arr_cf[$k][‘gcj‘][‘cz_djjgf‘] = $arr_cf[$k][‘gcl‘][‘cz_djjgf‘] * 20 * $i_p;
            $arr_cf[$k][‘price‘] += $arr_cf[$k][‘gcj‘][‘cz_djjgf‘];
//门套打底(宽度≤200mm) mt_dd
            $arr_cf[$k][‘gcl‘][‘mt_dd‘] = $val * 1;
            $arr_cf[$k][‘gcj‘][‘mt_dd‘] = $arr_cf[$k][‘gcl‘][‘mt_dd‘] * 43 * $i_p;
            $arr_cf[$k][‘price‘] += $arr_cf[$k][‘gcj‘][‘mt_dd‘];
//厨房水槽安装(含冷热水龙头安装) cf_scaz
            $arr_cf[$k][‘gcl‘][‘cf_scaz‘] = $val * 0.2;
            $arr_cf[$k][‘gcj‘][‘cf_scaz‘] = $arr_cf[$k][‘gcl‘][‘cf_scaz‘] * 45 * $i_p;
            $arr_cf[$k][‘price‘] += $arr_cf[$k][‘gcj‘][‘cf_scaz‘];
//三角阀+软管(套) sjf_rg
            $arr_cf[$k][‘gcl‘][‘sjf_rg‘] = $val * 0.8;
            $arr_cf[$k][‘gcj‘][‘sjf_rg‘] = $arr_cf[$k][‘gcl‘][‘sjf_rg‘] * 60 * $i_p;
            $arr_cf[$k][‘price‘] += $arr_cf[$k][‘gcj‘][‘sjf_rg‘];

            $total_price += $arr_cf[$k][‘price‘];
        }
        
//厅阳台工程
        $yt_sy = $c_kt + $c_ws + $c_wsj + $c_cf;
        $yt_total = 0; //厅阳台总价
        foreach ($arr_yangtai as $k => $val) {
            $arr_yt[$k][‘sy‘] = $yt_sy + $k; //js索引
//铺贴地砖不拼花(含填缝,单边≥200mm) pt_dz
            $arr_yt[$k][‘gcl‘][‘pt_dz‘] = $val * 1;
            $arr_yt[$k][‘gcj‘][‘pt_dz‘] = $arr_yt[$k][‘gcl‘][‘pt_dz‘] * 77 * $i_p;
            $arr_yt[$k][‘price‘] += $arr_yt[$k][‘gcj‘][‘pt_dz‘];
//地面找平(30mm内) dm_zp
            $arr_yt[$k][‘gcl‘][‘dm_zp‘] = $val * 1;
            $arr_yt[$k][‘gcj‘][‘dm_zp‘] = $arr_yt[$k][‘gcl‘][‘dm_zp‘] * 60 * $i_p;
            $arr_yt[$k][‘price‘] += $arr_yt[$k][‘gcj‘][‘dm_zp‘];
//大理石门槛石宽度≤240MM dls_mk
            $arr_yt[$k][‘gcl‘][‘dls_mk‘] = $val * 0.63;
            $arr_yt[$k][‘gcj‘][‘dls_mk‘] = $arr_yt[$k][‘gcl‘][‘dls_mk‘] * 115 * $i_p;
            $arr_yt[$k][‘price‘] += $arr_yt[$k][‘gcj‘][‘dls_mk‘];
//铺贴墙砖不拼花(含填缝,单边≥200mm) pt_qz
            $arr_yt[$k][‘gcl‘][‘pt_qz‘] = $val * 2;
            $arr_yt[$k][‘gcj‘][‘pt_qz‘] = $arr_yt[$k][‘gcl‘][‘pt_qz‘] * 73 * $i_p;
            $arr_yt[$k][‘price‘] += $arr_yt[$k][‘gcj‘][‘pt_qz‘];
//顶面批腻子 dm_pnz
            $arr_yt[$k][‘gcl‘][‘dm_pnz‘] = $val * 1;
            $arr_yt[$k][‘gcj‘][‘dm_pnz‘] = $arr_yt[$k][‘gcl‘][‘dm_pnz‘] * 19 * $i_p;
            $arr_yt[$k][‘price‘] += $arr_yt[$k][‘gcj‘][‘dm_pnz‘];
//顶面手刷乳胶漆(金装五合一,一底两面) dm_rjq
            $arr_yt[$k][‘gcl‘][‘dm_rjq‘] = $val * 1;
            $arr_yt[$k][‘gcj‘][‘dm_rjq‘] = $arr_yt[$k][‘gcl‘][‘dm_rjq‘] * 17 * $i_p;
            $arr_yt[$k][‘price‘] += $arr_yt[$k][‘gcj‘][‘dm_rjq‘];

            $total_price += $arr_yt[$k][‘price‘];
        }
        
//水电及其安装
        $sd_sy = $c_kt + $c_ws + $c_wsj + $c_cf + $c_yt;
        $total_area = $areas;
        $shuidian_price = 0;
        $shuidian_gcl = array();
        $shuidian_gcj = array();

//电话线 sd_dhx
        $shuidian_gcl[‘sd_dhx‘] = $total_area * 0.25;
        $shuidian_gcj[‘sd_dhx‘] = $shuidian_gcl[‘sd_dhx‘] * 4 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_dhx‘];
//网络线 sd_wlx
        $shuidian_gcl[‘sd_wlx‘] = $total_area * 0.75;
        $shuidian_gcj[‘sd_wlx‘] = $shuidian_gcl[‘sd_wlx‘] * 5.3 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_wlx‘];
//弱电全套开关/插座(地插价格另计) sd_rdkg
        $shuidian_gcl[‘sd_rdkg‘] = $total_area * 0.11;
        $shuidian_gcj[‘sd_rdkg‘] = $shuidian_gcl[‘sd_rdkg‘] * 45 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_rdkg‘];
//视频线 sd_spx
        $shuidian_gcl[‘sd_spx‘] = $total_area * 0.63;
        $shuidian_gcj[‘sd_spx‘] = $shuidian_gcl[‘sd_spx‘] * 7.3 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_spx‘];
//安装弱电箱 sd_rdx
        $shuidian_gcl[‘sd_rdx‘] = $total_area * 0.01;
        $shuidian_gcj[‘sd_rdx‘] = $shuidian_gcl[‘sd_rdx‘] * 330 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_rdx‘];
//6分PVC线管(含管件) sd_pvc
        $shuidian_gcl[‘sd_pvc‘] = $total_area * 3.13;
        $shuidian_gcj[‘sd_pvc‘] = $shuidian_gcl[‘sd_pvc‘] * 5.3 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_pvc‘];
//1.5㎡电线 sd_15dx
        $shuidian_gcl[‘sd_15dx‘] = $total_area * 5.75;
        $shuidian_gcj[‘sd_15dx‘] = $shuidian_gcl[‘sd_15dx‘] * 4 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_15dx‘];
//2.5㎡电线 sd_25dx
        $shuidian_gcl[‘sd_25dx‘] = $total_area * 6.25;
        $shuidian_gcj[‘sd_25dx‘] = $shuidian_gcl[‘sd_25dx‘] * 4.9 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_25dx‘];
//4㎡电线 sd_4dx
        $shuidian_gcl[‘sd_4dx‘] = $total_area * 0.5;
        $shuidian_gcj[‘sd_4dx‘] = $shuidian_gcl[‘sd_4dx‘] * 7.3 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_4dx‘];
//安装强电箱箱体12路 sd_qdx
        $shuidian_gcl[‘sd_qdx‘] = $total_area * 0.01;
        $shuidian_gcj[‘sd_qdx‘] = $shuidian_gcl[‘sd_qdx‘] * 400 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_qdx‘];
//强电开关/插座(地插价格另计) sd_qdkg
        $shuidian_gcl[‘sd_qdkg‘] = $total_area * 0.56;
        $shuidian_gcj[‘sd_qdkg‘] = $shuidian_gcl[‘sd_qdkg‘] * 25 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_qdkg‘];
//开关插座暗盒 sd_kgah
        $shuidian_gcl[‘sd_kgah‘] = $total_area * 0.68;
        $shuidian_gcj[‘sd_kgah‘] = $shuidian_gcl[‘sd_kgah‘] * 8 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_kgah‘];
//安装灯头盒 sd_azdth
        $shuidian_gcl[‘sd_azdth‘] = $total_area * 0.38;
        $shuidian_gcj[‘sd_azdth‘] = $shuidian_gcl[‘sd_azdth‘] * 5.5 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_azdth‘];
//冷热水管 sd_lrsg
        $shuidian_gcl[‘sd_lrsg‘] = $total_area * 0.63;
        $shuidian_gcj[‘sd_lrsg‘] = $shuidian_gcl[‘sd_lrsg‘] * 45 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_lrsg‘];
//灯具安装 sd_djaz
        $shuidian_gcl[‘sd_djaz‘] = $total_area * 0.01;
        $shuidian_gcj[‘sd_djaz‘] = $shuidian_gcl[‘sd_djaz‘] * 400 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_djaz‘];
//砖墙管线开槽(含修粉) sd_qzgx
        $shuidian_gcl[‘sd_qzgx‘] = $total_area * 1;
        $shuidian_gcj[‘sd_qzgx‘] = $shuidian_gcl[‘sd_qzgx‘] * 10.5 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_qzgx‘];
//钢筋混凝土墙面凿槽(含修粉) sd_gjhyt
        $shuidian_gcl[‘sd_gjhyt‘] = $total_area * 0.38;
        $shuidian_gcj[‘sd_gjhyt‘] = $shuidian_gcl[‘sd_gjhyt‘] * 23 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_gjhyt‘];
//机器开孔(空调/脱排/浴霸) sd_jqkk
        $shuidian_gcl[‘sd_jqkk‘] = $total_area * 0.06;
        $shuidian_gcj[‘sd_jqkk‘] = $shuidian_gcl[‘sd_jqkk‘] * 40 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_jqkk‘];
//杂物费(按建筑面积计算) sd_zwf
        $shuidian_gcl[‘sd_zwf‘] = $total_area * 0.01;
        $shuidian_gcj[‘sd_zwf‘] = $shuidian_gcl[‘sd_zwf‘] * 250 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_zwf‘];
//垃圾清运费(新房,按建筑面积计算) sd_ljqyf
        $shuidian_gcl[‘sd_ljqyf‘] = $total_area * 0.73;
        $shuidian_gcj[‘sd_ljqyf‘] = $shuidian_gcl[‘sd_ljqyf‘] * 6 * $i_p;
        $shuidian_price += $shuidian_gcj[‘sd_ljqyf‘];

        $total_price += $shuidian_price;

        return array(‘total_price‘=>$total_price,‘arr_kt‘=>$arr_kt,‘arr_ws‘=>$arr_ws,‘arr_wsj‘=>$arr_wsj,‘arr_cf‘=>$arr_cf,‘arr_yt‘=>$arr_yt,‘arr_sd‘=>$shuidian_price);

    }




    ############################ U_DECRYPT ############################

    # 加密
    public function U_ENCRYPT($mobile) {
        return U_ENCRYPT($mobile);
        
        // $wMobile = array(
        //     ‘18601693057‘, # l
        //     ‘13918817036‘, # m
        //     ‘15001793098‘, # z
        //     ‘13611849697‘, # h
        //     ‘18605623290‘, # c
        //     ‘17051210248‘  # f
        // );
        // if (in_array($mobile, $wMobile)) {
        //     return U_ENCRYPT($mobile);
        // }
        // return $mobile;
    }

    # 解密
    public function U_DECRYPT($mobile) {
        if (strlen($mobile) == 16)
            return U_DECRYPT($mobile); # 新存入字段 解密后返回
        else
            return $mobile; # 旧存入字段 直接返回
    }

    # 保存明文
    public function U_SAVE_BM($bmid, $mobile) {
        $this->loadModel(‘BmLog‘);
        $data[‘baoming_id‘] = $bmid;
        $data[‘mobile‘] = $mobile;
        return $this->BmLog->save($data);
    }

    /**
      *获取当前页面报名人数(数据会有75秒的延迟)
      *该方法已被 function cake24_get_baomingNum() 替代
      *暂时废止
      *2017-03-13
      **/
    public function cake24_get_baoming_num($utm_page, $overTime = 75){
        
        if(empty($utm_page)){return 0;}

        $conditions = array(‘GlobalConfig.category_id‘ => 1); //1-报名页面来源
        $utmPageArr = $this->GlobalConfig->find(‘list‘, array(
            ‘conditions‘ => $conditions, 
            ‘fields‘ => array(‘GlobalConfig.short‘, ‘GlobalConfig.name‘))
        );

        //获取报名户型设计数量
        if ($this->Redis->get(‘UTMPAGE_‘.$utm_page)) {
            $baoming_num = $this->Redis->get(‘UTMPAGE_‘.$utm_page);
        } else {  
            
            $conditions = array(‘Baoming.utm_page LIKE‘=>$utmPageArr[$utm_page].‘%‘);
            $baoming_num = $this->Baoming->find(‘count‘,array(‘conditions‘=>$conditions));
            $this->Redis->setex(‘UTMPAGE_‘.$utm_page, $overTime, $baoming_num);
        }

        $this->set(‘baoming_num‘, $baoming_num);
    }

    /** 
      * @获取报名数量
      * @par $type    utm_page(获取指定页面报名数量),all(获取当前所有的报名数量),date(获取具体日期的报名数量),month(获取具体月份的报名数量)
      * @par $param   具体的数据
      * @par $fix_num 需要填充的数量
      * @par $return 是否返回数据  false (不返回数据,直接定义变量) , true (返回数据)
      * @par $overTime redis信息更新时间 默认为75 S
      * 注: 当参数错误、输入的日期格式不正确和找不到$type类型时,统一返回 0
      * @return  $baoming_num (报名数量) 直接定义变量
      * @author dtz 2017-03-13
      **/
    public function cake24_get_baomingNum($param, $type = ‘utm_page‘, $fix_num = 0, $return = false, $overTime = 75){

        unset($baoming_num);
        if(empty($param)){ return $baoming_num = 0; }

        $conditions = array(‘GlobalConfig.category_id‘ => 1); //1-报名页面来源
        $utmPageArr = $this->GlobalConfig->find(‘list‘, array(
            ‘conditions‘ => $conditions, 
            ‘fields‘ => array(‘GlobalConfig.short‘, ‘GlobalConfig.name‘))
        );

        //分析数据类型
        switch ($type) {
            case ‘utm_page‘://获取指定页面来源的报名数量
                $key = ‘GET_UTMPAGE_‘.$param;
                $conditions = array(‘`Baoming`.`utm_page`‘=>$utmPageArr[$param]);
                break;

            case ‘all‘://获取所有数据的报名数量
                $fix_num = 200000;//所有数据的基数同意是200000
                $key = ‘GET_‘.strtoupper($param);
                $conditions = [];
                break;

            case ‘date‘://获取指定日期的报名数量
                $is_date = $this->cake24_check_date($param);//判断是否是日期格式
                if($is_date){

                    $key = ‘GET_DATE_‘.$param;
                    $conditions = array(‘DATE_FORMAT(`addtime`,\‘%Y-%m-%d\‘)‘ => $param);

                }else{//如果日期格式不对则返回0

                    return 0;
                }
                break;
            case ‘month‘://获取指定月份的报名数量 (暫時不用)
                $is_month = $this->cake24_check_date($param);//判断是否是日期格式
                if($is_month){

                    $key = ‘GET_MONTH_‘.$param;
                    $conditions = array(‘DATE_FORMAT(`addtime`,\‘%Y-%m\‘)‘ => $param);
                }else{//如果月份格式不对则返回0

                    return 0;
                }
                break;

            
            default:
                return 0;//默认返回0
                break;
        }

        //获取各类型的报名数量
        if ($this->Redis->get($key)) {
            $baoming_num = $this->Redis->get($key);
        } else {
            
            $baoming_num = $this->Baoming->find(‘count‘,array(‘conditions‘ => $conditions));
            $this->Redis->setex($key, $overTime, $baoming_num);
        }

        //如果需要填充的数量部位0 则在原基础的数据上加上需要填充的数据
        if($fix_num != 0 && is_int($fix_num)){ $baoming_num += $fix_num; }

        if($return){

            return $baoming_num;
        }else{

            $this->set(‘baoming_num‘, $baoming_num);
        }

        
    }

    /** 
      * @判断日期格式时候正确
      * 功能 判断日期格式是否正确
      * 参数 $str 日期字符串, $format 日期格式
      * $format 支持 Y-m-d 和 Y/m/d 两种格式 Ymd暂时不兼容
      * 注意 : 在判斷月份的時候$format 格式必須也只是 Y-m-d 和 Y/m/d 不能寫成  Y-m 和 Y/m
      * @return  true 格式正确 , false 格式错误
      * @author dtz 2017-03-13
      **/
    protected function cake24_check_date($str, $format=‘Y-m-d‘){
        
        
        $date_type = preg_replace(‘/[\.a-zA-Z]/s‘, ‘‘, $format);//去除大小寫字母

        //$date_type[0] 的值为 - 或者 /
        //计算 $date_type[0] 在字符串中的次数 (如果是日期格式的话 $date_type[0] 符号不会超过2个,如果超过2个则直接返回 false)
        $substr_count = substr_count($str, $date_type[0]);
        if(in_array($substr_count, array(1, 2))){

            if($substr_count == 1){ $str .= $date_type[0].‘01‘; }
        }else{

            return false;
        }

        $unixTime  = strtotime($str);
        if(!is_numeric($unixTime)) return false; //如果不是数字格式,则直接返回 

        $checkDate = date($format, $unixTime);
        $checktime = strtotime($checkDate);
        if($unixTime == $checktime){
            return true;
        }else{ 
            return false; 
        } 
    } 

    /** 
      * @屏蔽掉局域网、外测和系统配置ip
      * @par $ip  当前ip地址
      * @return  true 当前ip需要屏蔽 , false 当前ip不需要屏蔽
      * @author dtz 2017-03-06
      **/
    protected function cake24_ignore_ip($ip){

        //判断是否是合法的公共IPv4地址  
        if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE)){

            return true;//局域网的ip需要屏蔽
        }

        if(strpos($ip, ‘,‘)){
            
            $explode = explode(‘,‘, $ip);
            $ip = trim($explode[0]);
        }

        $this->loadModel("ApplicationConfig");
        $ipData = $this->ApplicationConfig->find(‘list‘,array(
                ‘conditions‘=>array(
                    ‘project‘=>array(‘now_ipaddress‘,‘budding_ipaddress‘)
                ),
                ‘fields‘ => array(‘text‘,‘text‘)
            )
        );
        
        $check_ip_arr = explode(‘.‘, $ip);//要检测的ip拆分成数组
        $ipArr  = [‘116.62.40.158‘, ‘180.173.90.62‘];//公司外测的ip也可以添加局域网ip段,但如果要加局域网ip段的话就和代码功能重复,在此加局域网ip段需要注释掉
        $ignoreIpArr  = array_merge(array_values($ipData), $ipArr);
        
        if(!in_array($ip, $ignoreIpArr)){

            foreach ($ignoreIpArr as $key => $value) {
                
                if(strpos($value, ‘*‘) !== false ){//发现有*号替代符

                    $arr = explode(‘.‘, $value);
                    $bl = true;//用于记录循环检测中是否有匹配成功的

                    foreach ($arr as $k => $val) {
                        if($val != ‘*‘){//不等于* 就要进来检测,如果为*符号替代符就不检查

                            if($val != $check_ip_arr[$k]){
                                $bl = false;
                                break;//终止检查本个ip 继续检查下一个ip
                            }
                        }
                    }
                }
            }

        }else{

            $bl = true;
        }

        return $bl;
    }

    /** 
      * 格式化网址 
      * par $url 待格式化的网址
      * return  处理后的网址
      * Recoded By dtz
      * date 2017-02-06
      **/ 
    protected function cake24_filterUrl($url = ‘‘){
     
        $url = trim(strtolower($url));
        $url = trim(preg_replace(‘/^http:\/\//‘, ‘‘, $url));
        if ($url == ‘‘){

            return false;
        }else{
            return urlencode(‘http://‘ . $url);
        }
        
    }

    //拼接请求地址,此地址你可以在官方的文档中查看到
    protected function cake24_sinaShortenUrl($long_url){
        
        //新浪
        /*$url = ‘http://api.t.sina.com.cn/short_url/shorten.json?source=31641035&url_long=‘ . $long_url;
        //获取请求结果
        $result = $this->curlQuery($url);*/
        //下面这行注释用于调试,你可以把注释去掉看看从sina返回的信息是什么东西
        //print_r($result);exit();
        //百度
        $ch = curl_init();
        $url = ‘http://apis.baidu.com/3023/shorturl/shorten?url_long=‘.$long_url;
        $header = array(
            ‘apikey: c3aadd615ae4b6bfcbf8e4afc503fab7‘,
        );
        // 添加apikey到header
        curl_setopt($ch, CURLOPT_HTTPHEADER  , $header);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // 执行HTTP请求
        curl_setopt($ch , CURLOPT_URL , $url);
        $result = curl_exec($ch);

        //解析json
        $json = json_decode($result,true);
        $url_short = $json[‘urls‘][0][‘url_short‘];
        //异常情况返回false
        if (isset($json[‘error‘]) || $url_short == ‘‘)
        {
            return false;
        }
        else
        {
            return $url_short;
        }

    }

  /** 
  * @去除XSS(跨站脚本攻击)的函数 
  * @par $val 字符串参数,可能包含恶意的脚本代码如<script language="javascript">alert("hello world");</script> 
  * @return  处理后的字符串 
  * @Recoded By Androidyue 
  **/  
  public function cake24_remove_xss($val) 
  {    
     // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed    
     // this prevents some character re-spacing such as <java\0script>    
     // note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs  
     $val = preg_replace(‘/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/‘, ‘‘, $val);    
     
     // straight replacements, the user should never need these since they‘re normal characters    
     // this prevents like <IMG [email protected]:alert(‘XSS‘)>    
     $search = ‘abcdefghijklmnopqrstuvwxyz‘;   
     $search .= ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ‘;    
     $search .= ‘[email protected]#$%^&*()‘;   
     $search .= ‘~`";:?+/={}[]-_|\‘\\‘;   
     for ($i = 0; $i < strlen($search); $i++) {   
        // ;? matches the ;, which is optional   
        // 0{0,7} matches any padded zeros, which are optional and go up to 8 chars   
     
        // @ @ search for the hex values   
        $val = preg_replace(‘/(&#[xX]0{0,8}‘.dechex(ord($search[$i])).‘;?)/i‘, $search[$i], $val); // with a ;   
        // @ @ 0{0,7} matches ‘0‘ zero to seven times    
        $val = preg_replace(‘/(&#0{0,8}‘.ord($search[$i]).‘;?)/‘, $search[$i], $val); // with a ;   
     }   
     
     // now the only remaining whitespace attacks are \t, \n, and \r   
     $ra1 = Array(‘javascript‘, ‘vbscript‘, ‘expression‘, ‘applet‘, ‘meta‘, ‘xml‘, ‘blink‘, ‘link‘, ‘style‘, ‘script‘, ‘embed‘, ‘object‘, ‘iframe‘, ‘frame‘, ‘frameset‘, ‘ilayer‘, ‘layer‘, ‘bgsound‘, ‘title‘, ‘base‘);   
     $ra2 = Array(‘onabort‘, ‘onactivate‘, ‘onafterprint‘, ‘onafterupdate‘, ‘onbeforeactivate‘, ‘onbeforecopy‘, ‘onbeforecut‘, ‘onbeforedeactivate‘, ‘onbeforeeditfocus‘, ‘onbeforepaste‘, ‘onbeforeprint‘, ‘onbeforeunload‘, ‘onbeforeupdate‘, ‘onblur‘, ‘onbounce‘, ‘oncellchange‘, ‘onchange‘, ‘onclick‘, ‘oncontextmenu‘, ‘oncontrolselect‘, ‘oncopy‘, ‘oncut‘, ‘ondataavailable‘, ‘ondatasetchanged‘, ‘ondatasetcomplete‘, ‘ondblclick‘, ‘ondeactivate‘, ‘ondrag‘, ‘ondragend‘, ‘ondragenter‘, ‘ondragleave‘, ‘ondragover‘, ‘ondragstart‘, ‘ondrop‘, ‘onerror‘, ‘onerrorupdate‘, ‘onfilterchange‘, ‘onfinish‘, ‘onfocus‘, ‘onfocusin‘, ‘onfocusout‘, ‘onhelp‘, ‘onkeydown‘, ‘onkeypress‘, ‘onkeyup‘, ‘onlayoutcomplete‘, ‘onload‘, ‘onlosecapture‘, ‘onmousedown‘, ‘onmouseenter‘, ‘onmouseleave‘, ‘onmousemove‘, ‘onmouseout‘, ‘onmouseover‘, ‘onmouseup‘, ‘onmousewheel‘, ‘onmove‘, ‘onmoveend‘, ‘onmovestart‘, ‘onpaste‘, ‘onpropertychange‘, ‘onreadystatechange‘, ‘onreset‘, ‘onresize‘, ‘onresizeend‘, ‘onresizestart‘, ‘onrowenter‘, ‘onrowexit‘, ‘onrowsdelete‘, ‘onrowsinserted‘, ‘onscroll‘, ‘onselect‘, ‘onselectionchange‘, ‘onselectstart‘, ‘onstart‘, ‘onstop‘, ‘onsubmit‘, ‘onunload‘,‘onxload‘);   
     $ra = array_merge($ra1, $ra2);   
     
     $found = true; // keep replacing as long as the previous round replaced something   
     while ($found == true) {   
        $val_before = $val;   
        for ($i = 0; $i < sizeof($ra); $i++) {   
           $pattern = ‘/‘;   
           for ($j = 0; $j < strlen($ra[$i]); $j++) {   
              if ($j > 0) {   
                 $pattern .= ‘(‘;    
                 $pattern .= ‘(&#[xX]0{0,8}([9ab]);)‘;   
                 $pattern .= ‘|‘;    
                 $pattern .= ‘|(&#0{0,8}([9|10|13]);)‘;   
                 $pattern .= ‘)*‘;   
              }   
              $pattern .= $ra[$i][$j];   
           }   
           $pattern .= ‘/i‘;    
           $replacement = substr($ra[$i], 0, 2).‘<x>‘.substr($ra[$i], 2); // add in <> to nerf the tag    
           $val = preg_replace($pattern, $replacement, $val); // filter out the hex tags    
           if ($val_before == $val) {    
              // no replacements were made, so exit the loop    
              $found = false;    
           }    
        }    
     }    
     $val = preg_replace(‘/\>|\<|\"|\‘|[()=]|(alert)|(if)/i‘, ‘‘, $val);  
     $val = preg_replace(‘/(xrame)|(onxload)|(body)|(prompt)/i‘,‘‘,$val);
     return $val;    
  }    

}

 

以上是关于cakephp的 cake24CakeControllerBaseController.php的主要内容,如果未能解决你的问题,请参考以下文章

php [cakephp:MediaController]用文件二进制文件返回cake的响应对象。 #cakephp

Cakephp cake_core_ 缓存无法写入“cake_dev_en-us”

CakePHP 1.2 应用程序具有非常规的 Cake 路径抛出错误

php [cakephp:API组件和控制器]用于ajax请求和Server-Sent事件的Cake模块。 #cakephp

CakePhp : Cake bake 在 Ubuntu 上不起作用。 (PDO异常)

未定义变量:$_SESSION