首页 > 代码库 > cakephp的 \cake24\Cake\Controller\BaseController.php

cakephp的 \cake24\Cake\Controller\BaseController.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 = http://www.mamicode.com/$this->BaomingService->find(‘first‘, ["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 = http://www.mamicode.com/array("‘".$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 = http://www.mamicode.com/trim($value);"|\‘|[><()=;#!@#$%^&*?.+|]|(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 = http://www.mamicode.com/curl_exec($curl);"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 = http://www.mamicode.com/json_decode($res, true);"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 = http://www.mamicode.com/array();"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 = http://www.mamicode.com/$this->ApplicationConfig->find(‘list‘,array("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 SRC=http://www.mamicode.com/@avascript:alert(‘XSS‘)>    ";:?+/={}[]-_|\‘\\‘;        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的 \cake24\Cake\Controller\BaseController.php