首页 > 代码库 > 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,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,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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。