= 2; $i--) { $path_old = "$path." . ($i - 1); $path_new = "$path.$i"; if (file_exists($path_old)) { rename($path_old, $path_new); } } // 現在ファイルのアーカイブ rename($path, "$path.1"); } /*---------------------------------------------------------------------- * [名称] gfMakePassword * [概要] ランダムパスワード生成(英数字) * [引数] パスワードの桁数 * [戻値] ランダム生成されたパスワード * [依存] なし * [注釈] - *----------------------------------------------------------------------*/ function gfMakePassword($pwLength) { // 乱数表のシードを決定 srand((double)microtime() * 54234853); // パスワード文字列の配列を作成 $character = 'abcdefghkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ2345679'; $pw = preg_split('//', $character, 0, PREG_SPLIT_NO_EMPTY); $password = ''; for ($i = 0; $i<$pwLength; $i++) { $password .= $pw[array_rand($pw, 1)]; } return $password; } /*---------------------------------------------------------------------------------------------------------------------- * [名称] gfMailHeaderAddr * [概要] 入力されたメールアドレスをメール関数用の宛先に変換 * [引数] 「メールアドレス」または「名前<メールアドレス>」、複数アドレス指定時はカンマ区切りで指定する。 * [戻値] 「メールアドレス」または「JIS_MIMEにコード変換した名前 <メールアドレス>」、複数アドレス指定時はカンマ区切りで返却する。 * [依存] なし * [注釈] - *----------------------------------------------------------------------------------------------------------------------*/ function gfMailHeaderAddr($str) { $addrs = explode(',', $str); //アドレスを配列に入れる $mailaddrs = array(); foreach ($addrs as $addr) { if (preg_match("/^(.+)<(.+)>$/", $addr, $matches)) { //引数が「名前<メールアドレス>」の場合 $mailaddrs[] = mb_encode_mimeheader(trim($matches[1])).' <'.trim($matches[2]).'>'; } else { //メールアドレスのみの場合 $mailaddrs[] = trim($addr); } } return implode(', ', $mailaddrs); //複数アドレスはカンマ区切りにする } /** * バックトレースをテキスト形式で出力する * * 現状スタックトレースの形で出力している。 * @param array $arrBacktrace バックトレース * @return string テキストで表現したバックトレース */ function toStringBacktrace($arrBacktrace) { $string = ''; foreach (array_reverse($arrBacktrace) as $backtrace) { if (strlen($backtrace['class']) >= 1) { $func = $backtrace['class'] . $backtrace['type'] . $backtrace['function']; } else { $func = $backtrace['function']; } $string .= $backtrace['file'] . '(' . $backtrace['line'] . '): ' . $func . "\n"; } return $string; } /** * エラー型から該当する定数名を取得する * * 該当する定数がない場合、$error_type を返す。 * @param integer $error_type エラー型 * @return string|integer エラー定数名 */ function getErrorTypeName($error_type) { $arrDefinedConstants = get_defined_constants(true); // PHP の歴史対応 $arrDefinedCoreConstants = array(); // PHP >= 5.3.1, PHP == 5.3.0 (not Windows) if (isset($arrDefinedConstants['Core'])) { $arrDefinedCoreConstants = $arrDefinedConstants['Core']; } // PHP < 5.3.0 elseif (isset($arrDefinedConstants['internal'])) { $arrDefinedCoreConstants = $arrDefinedConstants['internal']; } // PHP == 5.3.0 (Windows) elseif (isset($arrDefinedConstants['mhash'])) { $arrDefinedCoreConstants = $arrDefinedConstants['mhash']; } foreach ($arrDefinedCoreConstants as $constant_name => $constant_value) { if (substr($constant_name, 0, 2) === 'E_' && $constant_value == $error_type) { return $constant_name; } } return $error_type; } /** * 現在の URL を取得する * * @return string 現在のURL */ function getUrl() { $url = ''; if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') { $url = 'https://'; } else { $url = 'http://'; } $url .= $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; if (strlen($_SERVER['QUERY_STRING']) >= 1) { $url .= '?' . $_SERVER['QUERY_STRING']; } return $url; } /** * 管理機能かを判定 * * @return bool 管理機能か */ function isAdminFunction() { return defined('ADMIN_FUNCTION') && ADMIN_FUNCTION === true; } /** * フロント機能かを判定 * * @return bool フロント機能か */ function isFrontFunction() { return defined('FRONT_FUNCTION') && FRONT_FUNCTION === true; } /** * インストール機能かを判定 * * @return bool インストール機能か */ function isInstallFunction() { return defined('INSTALL_FUNCTION') && INSTALL_FUNCTION === true; } /** * XML宣言を出力する. * * XML宣言があると問題が発生する UA は出力しない. * * @return string XML宣言の文字列 */ function printXMLDeclaration() { $ua = $_SERVER['HTTP_USER_AGENT']; if (!preg_match('/MSIE/', $ua) || preg_match('/MSIE 7/', $ua)) { echo '' . "\n"; } } }