コード例 #1
0
 public function getLegalParam($tag, $legalType, $legalList = array(), $default = null)
 {
     $param = $this->getRequest()->get($tag, $default);
     if ($param !== null) {
         switch ($legalType) {
             case 'eid':
                 //encrypted id
                 if ($param) {
                     return aesDecrypt(hex2bin($param), WAYGER_AES_KEY);
                 } else {
                     return null;
                 }
                 break;
             case 'id':
                 if (preg_match('/^\\d{1,20}$/', strval($param))) {
                     return strval($param);
                 }
                 break;
             case 'time':
                 return intval($param);
                 break;
             case 'int':
                 $val = intval($param);
                 if (count($legalList) == 2) {
                     if ($val >= $legalList[0] && $val <= $legalList[1]) {
                         return $val;
                     }
                 } else {
                     return $val;
                 }
                 break;
             case 'str':
                 $val = strval($param);
                 if (count($legalList) == 2) {
                     if (strlen($val) >= $legalList[0] && strlen($val) <= $legalList[1]) {
                         return $val;
                     }
                 } else {
                     return $val;
                 }
                 break;
             case 'trim_spec_str':
                 $val = trim(strval($param));
                 if (!preg_match("/['.,:;*?~`!@#\$%^&+=)(<>{}]|\\]|\\[|\\/|\\\\|\"|\\|/", $val)) {
                     if (count($legalList) == 2) {
                         if (strlen($val) >= $legalList[0] && strlen($val) <= $legalList[1]) {
                             return $val;
                         }
                     } else {
                         return $val;
                     }
                 }
                 break;
             case 'enum':
                 if (in_array($param, $legalList)) {
                     return $param;
                 }
                 break;
             case 'array':
                 if (count($legalList) > 0) {
                     return explode($legalList[0], strval($param));
                 } else {
                     if (empty($param)) {
                         return array();
                     }
                     return explode(',', strval($param));
                 }
                 break;
             case 'json':
                 return json_decode(strval($param), true);
                 break;
             case 'raw':
                 return $param;
                 break;
             case 'email':
                 return \Swoole\Validate::regx('email', $param);
                 break;
             case 'tel':
                 return \Swoole\Validate::regx('tel', $param);
                 break;
             case 'phone':
                 return \Swoole\Validate::regx('phone', $param);
                 break;
             case 'domain':
                 return \Swoole\Validate::regx('domain', $param);
                 break;
             case 'date':
                 return \Swoole\Validate::regx('date', $param);
                 break;
             case 'datetime':
                 return \Swoole\Validate::regx('datetime', $param);
                 break;
             case 'time':
                 return \Swoole\Validate::regx('time', $param);
                 break;
             default:
                 break;
         }
     }
     return false;
 }
コード例 #2
0
 /**
  * 添加访问规则
  * @param $type
  * @param $ip
  * @throws Swoole\Exception\InvalidParam
  */
 function addAllowIP($ip)
 {
     if (Swoole\Validate::ip($ip)) {
         $this->ipWhiteList[$ip] = true;
         $this->verifyIp = true;
     } else {
         throw new Swoole\Exception\InvalidParam("require ip address.");
     }
 }