Ejemplo n.º 1
0
 /**
  * 変数が空白かどうかをチェックする.
  *
  * 引数 $val が空白かどうかをチェックする. 空白の場合は true.
  * 以下の文字は空白と判断する.
  * - ' ' (ASCII 32 (0x20)), 通常の空白
  * - "\t" (ASCII 9 (0x09)), タブ
  * - "\n" (ASCII 10 (0x0A)), リターン
  * - "\r" (ASCII 13 (0x0D)), 改行
  * - "\0" (ASCII 0 (0x00)), NULバイト
  * - "\x0B" (ASCII 11 (0x0B)), 垂直タブ
  *
  * 引数 $val が配列の場合は, 空の配列の場合 true を返す.
  *
  * 引数 $greedy が true の場合は, 全角スペース, ネストした空の配列も
  * 空白と判断する.
  *
  * @param mixed $val チェック対象の変数
  * @param boolean $greedy '貧欲'にチェックを行う場合 true
  * @return boolean $val が空白と判断された場合 true
  */
 function isBlank($val, $greedy = true)
 {
     if (is_array($val)) {
         if ($greedy) {
             if (empty($val)) {
                 return true;
             }
             $array_result = true;
             foreach ($val as $in) {
                 /*
                  * SC_Utils_Ex への再帰は無限ループやメモリリークの懸念
                  * 自クラスへ再帰する.
                  */
                 $array_result = SC_Utils::isBlank($in, $greedy);
                 if (!$array_result) {
                     return false;
                 }
             }
             return $array_result;
         } else {
             return empty($val);
         }
     }
     if ($greedy) {
         $val = preg_replace('/ /', '', $val);
     }
     $val = trim($val);
     if (strlen($val) > 0) {
         return false;
     }
     return true;
 }
 /**
  * APIのリクエスト基本パラメーターのチェック
  *
  * @param object $objFormParam
  * @return array $arrErr
  */
 protected function checkParam($objFormParam)
 {
     $arrErr = $objFormParam->checkError();
     if (!preg_match("/^[a-zA-Z0-9\\-\\_]+\$/", $objFormParam->getValue('Operation')) && !SC_Utils::isBlank($objFormParam->getValue('Operation'))) {
         $arrErr['ECCUBE.Operation.ParamError'] = 'Operationの値が不正です。';
     }
     if (!preg_match("/^[a-zA-Z0-9\\-\\_]+\$/", $objFormParam->getValue('Service')) && !SC_Utils::isBlank($objFormParam->getValue('Service'))) {
         $arrErr['ECCUBE.Service.ParamError'] = 'Serviceの値が不正です。';
     }
     if (!preg_match("/^[a-zA-Z0-9\\-\\_]+\$/", $objFormParam->getValue('Style')) && !SC_Utils::isBlank($objFormParam->getValue('Style'))) {
         $arrErr['ECCUBE.Style.ParamError'] = 'Styleの値が不正です。';
     }
     if (!preg_match("/^[a-zA-Z0-9\\-\\_]+\$/", $objFormParam->getValue('Validate')) && !SC_Utils::isBlank($objFormParam->getValue('Validate'))) {
         $arrErr['ECCUBE.Validate.ParamError'] = 'Validateの値が不正です。';
     }
     if (!preg_match("/^[a-zA-Z0-9\\-\\_\\.]+\$/", $objFormParam->getValue('Version')) && !SC_Utils::isBlank($objFormParam->getValue('Version'))) {
         $arrErr['ECCUBE.Version.ParamError'] = 'Versionの値が不正です。';
     }
     return $arrErr;
 }
 function testIsBlank()
 {
     $val = "";
     $this->assertTrue(SC_Utils::isBlank($val));
     $valIsNotBlank = "..  a \n\t";
     $this->assertTrue(SC_Utils::isBlank($val));
     $wideSpace = " ";
     $this->assertTrue(SC_Utils::isBlank($wideSpace));
     // greedy is false
     $this->assertFalse(SC_Utils::isBlank($wideSpace, false));
     $array = array();
     $this->assertTrue(SC_Utils::isBlank($array));
     $nestsArray = array(array(array()));
     $this->assertTrue(SC_Utils::isBlank($nestsArray));
     // greedy is false
     $this->assertFalse(SC_Utils::isBlank($nestsArray, false));
     $nestsArrayIsNotBlank = array(array(array('1')));
     $this->assertFalse(SC_Utils::isBlank($nestsArrayIsNotBlank));
     // greedy is false
     $this->assertFalse(SC_Utils::isBlank($nestsArrayIsNotBlank, false));
     $wideSpaceAndBlank = array(array(" \n "));
     $this->assertTrue(SC_Utils::isBlank($wideSpaceAndBlank));
     // greedy is false
     $this->assertFalse(SC_Utils::isBlank($wideSpaceAndBlank, false));
     $wideSpaceIsNotBlank = array(array(" \na "));
     $this->assertFalse(SC_Utils::isBlank($wideSpaceIsNotBlank));
     // greedy is false
     $this->assertFalse(SC_Utils::isBlank($wideSpaceIsNotBlank, false));
     $zero = 0;
     $this->assertFalse(SC_Utils::isBlank($zero));
     $this->assertFalse(SC_Utils::isBlank($zero, false));
     $emptyArray[0] = "";
     $this->assertTrue(SC_Utils::isBlank($emptyArray));
 }
 public function testIsBlank_通常の文字が含まれている場合_falseが返る()
 {
     $input = " AB \n\t";
     $this->assertFalse(SC_Utils::isBlank($input), $input);
 }
Ejemplo n.º 5
0
 /**
  * POST アクセスの妥当性を検証する.
  *
  * 生成されたトランザクショントークンの妥当性を検証し,
  * 不正な場合はエラー画面へ遷移する.
  *
  * この関数は, 基本的に init() 関数で呼び出され, POST アクセスの場合は自動的に
  * トランザクショントークンを検証する.
  * ページによって検証タイミングなどを制御する必要がある場合は, この関数を
  * オーバーライドし, 個別に設定を行うこと.
  *
  * @access protected
  * @param  boolean $is_admin 管理画面でエラー表示をする場合 true
  * @return void
  */
 public function doValidToken($is_admin = false)
 {
     if ($is_admin) {
         $mode = $this->getMode();
         if ($_SERVER['REQUEST_METHOD'] == 'POST' || !SC_Utils::isBlank($mode)) {
             if (!SC_Helper_Session_Ex::isValidToken(false)) {
                 SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
                 SC_Response_Ex::actionExit();
             }
         }
     } else {
         if ($_SERVER['REQUEST_METHOD'] == 'POST') {
             if (!SC_Helper_Session_Ex::isValidToken(false)) {
                 SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, '', true);
                 SC_Response_Ex::actionExit();
             }
         }
     }
 }