比如面向过程的写法 。=以帝国为例- /*** 日志* @param array $info*/ private function debug(array $info){ $time = date('Y-m-d H:i:s'); array_unshift($info, $time); $info = array_map('json_encode', $info); file_put_contents(self::LOG_PATH . 'websocket_debug.log', implode(' | ', $info) . "\r\n", FILE_APPEND); } //增加adds private function AddAddsData($data){ if(!MAGIC_QUOTES_GPC){ $data=addslashes($data); } return $data; } //处理编码字符 private function CkPostStrChar($val){ if(substr($val,-1)==""){ $this->shutdownServer();//强制断开所有链接 } } //验证编码字符 private function CkPostStrCharYh($val){ if($val!=addslashes($val)){ exit(0); } return $val; } //htmlspecialchars处理 private function ehtmlspecialchars($val,$flags=ENT_COMPAT){ if(PHP_VERSION>='5.4.0'){ $val=htmlspecialchars($val,$flags,'UTF-8'); }else{ $val=htmlspecialchars($val,$flags); } return $val; } //入库处理提交字符 private function RepPostStr($val,$ecms = 0, $phck = 0){ if($phck==1){ $this->CkPostStrCharYh($val); } $val=$this->ehtmlspecialchars($val,ENT_QUOTES); if($ecms==0){ $this->CkPostStrChar($val); $val=$this->AddAddsData($val); $this->FWClearGetText($val);//触发防火墙 } return $val; } //入库处理提交字符2 private function RepPostStr2($val, $phck = 0){ if($phck==1){ $this->CkPostStrCharYh($val); } $this->CkPostStrChar($val); $val=$this->AddAddsData($val); $this->FWClearGetText($val);//触发防火墙 return $val; } //参数处理函数默认 private function RepPostVar($val){ if($val!=addslashes($val)){ return''; // 结束函数执行 } $this->CkPostStrChar($val); $val=str_replace("%","",$val); $val=str_replace(" ","",$val); $val=str_replace("`","",$val); $val=str_replace("\t","",$val); $val=str_replace("%20","",$val); $val=str_replace("%27","",$val); $val=str_replace("*","",$val); $val=str_replace("'","",$val); $val=str_replace(""","",$val); $val=str_replace("/","",$val); $val=str_replace(";","",$val); $val=str_replace("#","",$val); $val=str_replace("--","",$val); $val=$this->RepPostStr($val,1); $val=addslashes($val); $this->FWClearGetText($val);//触发防火墙 return $val; } //参数处理函数2 public function RepPostVar2($val){ if($val!=addslashes($val)){ $this->shutdownServer();//强制断开所有链接 } $this->CkPostStrChar($val); $val=str_replace("%","",$val); $val=str_replace("`","",$val); $val=str_replace("\t","",$val); $val=str_replace("%20","",$val); $val=str_replace("%27","",$val); $val=str_replace("*","",$val); $val=str_replace("'","",$val); $val=str_replace(""","",$val); $val=str_replace("/","",$val); $val=str_replace(";","",$val); $val=str_replace("#","",$val); $val=str_replace("--","",$val); $val=$this->RepPostStr($val,1); $val=addslashes($val); $this->FWClearGetText($val);//触发防火墙 return $val; }
复制代码 $this->ehtmlspecialchars($val, ENT_QUOTES)这里调用了 ehtmlspecialchars 方法,这个方法可能是自定义的,从代码中使用 $this 来看,它是一个类的成员方法。那如果是帝国这样面向过程的直接函数不是更好吗?ehtmlspecialchars($val, ENT_QUOTES)。这样不仅仅更方便草根理解还不用重点去研究类里面的函数。 |