/** * 変数が空白かどうかをチェックする. * * 引数 $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); }
/** * 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(); } } } }