TCExam文件代码注释分析(shard/config/tcd_config.php),此版本为:12.0.012
<?php define ('K_TCEXAM_VERSION', '12.0.012'); define ('K_LANGUAGE', 'cn'); //默认语言种类 define ('K_LANGUAGE_SELECTOR', false); //是否可以选择语言 define ('K_AVAILABLE_LANGUAGES', serialize(array( //语言种类 'ar' => 'Arabian', 'az' => 'Azerbaijani', 'bg' => 'Bulgarian', 'br' => 'Brazilian Portuguese', 'cn' => 'Chinese', 'de' => 'German', 'el' => 'Greek', 'en' => 'English', 'es' => 'Spanish', 'fr' => 'French', 'hi' => 'Hindi', 'he' => 'Hebrew', 'hu' => 'Hungarian', 'id' => 'Indonesian', 'it' => 'Italian', 'jp' => 'Japanese', 'mr' => 'Marathi', 'ms' => 'Malay (Bahasa Melayu)', 'nl' => 'Dutch', 'pl' => 'Polish', 'ro' => 'Romanian', 'ru' => 'Russian', 'tr' => 'Turkish', 'vn' => 'Vietnamese' ))); ini_set('zend.ze1_compatibility_mode', false); //php.ini此项配置是:如果要在PHP5上运行php4特定的程序,就要设置为true require_once('../../shared/config/tce_paths.php'); require_once('../../shared/config/tce_general_constants.php'); define ('K_OTP_LOGIN', false); //如果这里设置为true,就表示需要用密码进行一次登录验证 define ('K_BRUTE_FORCE_DELAY_RATIO', 2); //Ratio at which the delay will be increased after every failed login attempt define ('K_QUESTION_DIFFICULTY_LEVELS', 10); //Number of difficulty levels for questions. define('K_ENABLE_VIRTUAL_KEYBOARD', true); //If true enable virtual keyboard on some textarea fields define ('K_TEST_INFO_HEIGHT', 400); //Popup window height in pixels for test info.弹出窗口的高度,以像素为单位 define ('K_TEST_INFO_WIDTH', 700); //弹出窗口的宽度,以像素为单位 define ('K_ANSWER_TEXTAREA_COLS', 70); //Number of columns for answer textarea define ('K_ANSWER_TEXTAREA_ROWS', 15); //Number of rows for answer textarea define ('K_ENABLE_QUESTION_EXPLANATION', true); //If true enable explanation field for questions define ('K_ENABLE_ANSWER_EXPLANATION', true); //If true enable explanation field for answers define ('K_DISPLAY_TEST_DESCRIPTION', true); //If true display test description before executing the test define ('K_SHORT_ANSWERS_BINARY', false); //If true compare short answers in binary mode define ('K_SESSION_LIFE', K_SECONDS_IN_HOUR); //User's session life time in seconds /** * When an alternate authentication method is used, * if this constant is true the default user groups for the selected * authentication method are always added to the user. */ define ('K_USER_GROUP_RSYNC', false); define ('K_TIMESTAMP_FORMAT', 'Y-m-d H:i:s'); //Define timestamp format using PHP notation (do not change) 定义php的时间显示格式(不要修改) define ('K_QUESTION_LINE_MAX_LENGTH', 70); //Define max line length in chars for question navigator on test execution interface define ('K_CHECK_SESSION_FINGERPRINT', false); //If true, check for possible session hijacking (set to false if you have login problems) define ('K_STRONG_PASSWORD_ENCRYPTION', true); //If true uses a strong encryption algorithm for passwords 使用一个强大的加密算法对密码进行加密 /**************************start 客户端cookie设置*******************************/ define ('K_COOKIE_DOMAIN', ''); //Cookie domain define ('K_COOKIE_PATH', '/'); //Cookie path define ('K_COOKIE_SECURE', false); //If true use secure cookies define ('K_COOKIE_EXPIRE', K_SECONDS_IN_DAY); //Expiration time for cookies /** * Various pages redirection modes after login (valid values are 1, 2, 3 and 4). * 1 = relative redirect. * 2 = absolute redirect. * 3 = html redirect. * 4 = full redirect. */ define ('K_REDIRECT_LOGIN_MODE', 4); define ('K_PASSWORD_RESET', TRUE); //If true enable password reset feature define ('K_LOGOUT_URL', ''); //URL to be redirected at logout (leave empty for default),退出时url重定向 /********************************start 报错设置 **********************************/ define ('K_ERROR_TYPES', E_ALL | E_STRICT); //定义错误调试类型 //define ('K_ERROR_TYPES', E_ERROR | E_WARNING | E_PARSE); define ('K_USE_ERROR_LOG', false); //Enable error logs (../log/tce_errors.log) 是否记录错误日志 define ('K_ENABLE_JSERRORS', false); //是否在弹出框中显示错误提示 define ('K_TIMEZONE', 'UTC'); //设置系统时区 define('K_EXTEND_TIME_MINUTES', 5); //Default minutes used to extend test duration 默认分钟用来延长测试时间 require_once('../../shared/code/tce_functions_errmsg.php'); //引入错误处理文件 /********************************start 语言设置 *********************************/ if(isset($_REQUEST['lang']) AND (strlen($_REQUEST['lang']) == 2) AND (array_key_exists($_REQUEST['lang'],unserialize(K_AVAILABLE_LANGUAGES)))){ //用户自己选择语言操作 define ('K_USER_LANG', $_REQUEST['lang']); setcookie('SessionUserLang', K_USER_LANG, time() + K_COOKIE_EXPIRE, K_COOKIE_PATH, K_COOKIE_DOMAIN, K_COOKIE_SECURE); //在用户客户端给他生成语言cookie,记住他的选择 } elseif (isset($_COOKIE['SessionUserLang']) AND (strlen($_COOKIE['SessionUserLang']) == 2) AND (array_key_exists($_COOKIE['SessionUserLang'],unserialize(K_AVAILABLE_LANGUAGES)))){ //读取cookie中用户选择的语言 define ('K_USER_LANG', $_COOKIE['SessionUserLang']); } else{ //否则就是用系统配置中“默认语言” define ('K_USER_LANG', K_LANGUAGE); } /********************************start XML文件处理设置 *****************************/ require_once('../../shared/code/tce_tmx.php'); // istantiate new TMXResourceBundle object $lang_resources = new TMXResourceBundle(K_PATH_TMX_FILE, K_USER_LANG, K_PATH_LANG_CACHE.basename(K_PATH_TMX_FILE, '.xml').'_'.K_USER_LANG.'.php'); $l = $lang_resources->getResource(); // language array ini_set('arg_separator.output', '&'); //默认值:& php能自动生成URL,并使用标准的&符号分隔输入变量。该配置可以更改此约定 //date_default_timezone_set(K_TIMEZONE); /********************************start php版本设置 *********************************/ if(!defined('PHP_VERSION_ID')){ $version = PHP_VERSION; define('PHP_VERSION_ID', (($version{0} * 10000) + ($version{2} * 100) + $version{4})); } if(PHP_VERSION_ID < 50300) { @set_magic_quotes_runtime(false); //disable magic quotes ini_set('magic_quotes_gpc', 'On'); ini_set('magic_quotes_runtime', 'Off'); ini_set('register_long_arrays', 'On'); //ini_set('register_globals', 'On'); } // --- get 'post', 'get' and 'cookie' variables /********************************start 对输入字符(包括cookie)字符串安全过滤 *********************************/ foreach ($_REQUEST as $postkey => $postvalue){ if (($postkey{0} != '_') AND (!preg_match('/[A-Z]/', $postkey{0}))) { if (!get_magic_quotes_gpc() AND !is_array($postvalue)) { // emulate magic_quotes_gpc $postvalue = addslashes($postvalue); $_REQUEST[$postkey] = $postvalue; if(isset($_GET[$postkey])){ $_GET[$postkey] = $postvalue; } elseif(isset($_POST[$postkey])) { $_POST[$postkey] = $postvalue; } elseif(isset($_COOKIE[$postkey])) { $_COOKIE[$postkey] = $postvalue; } } $$postkey = $postvalue; } }