
Ветеран

Сообщений: 877
Зарегистрирован: 05.08.2011 11:53
|
Небольшая проверка, чтобы файл не вызывали напрямую:
GeSHi: PHPif (eregi("maincore.php", $_SERVER['PHP_SELF'])) { die(); }
Добавлено за 0.043 секунд, используя GeSHi 1.0.8.10
Включаем режим отображения ошибок:
GeSHi: PHP
Добавлено за 0.041 секунд, используя GeSHi 1.0.8.10
Это функция для подсчёта времени исполнения, возвращает секунды с микросекундами:
GeSHi: PHPfunction get_microtime() { return ((float)$usec + (float)$sec); }
Добавлено за 0.048 секунд, используя GeSHi 1.0.8.10
Фиксируется время начала загрузки:
define("START_TIME", get_microtime());
[/geshi]
GeSHi: PHP Защитные меры: // Prevent any possible XSS attacks via $_GET. foreach ($_GET as $check_url) { if ((eregi("<[^>]*script*\"?[^>]*>", $check_url)) || (eregi("<[^>]*object*\"?[^>]*>", $check_url)) || (eregi("<[^>]*iframe*\"?[^>]*>", $check_url)) || (eregi("<[^>]*applet*\"?[^>]*>", $check_url)) || (eregi("<[^>]*meta*\"?[^>]*>", $check_url)) || (eregi("<[^>]*style*\"?[^>]*>", $check_url)) || (eregi("<[^>]*form*\"?[^>]*>", $check_url)) || (eregi("\([^>]*\"?[^)]*\)", $check_url)) || (eregi("\"", $check_url))) { } } }
Добавлено за 0.044 секунд, используя GeSHi 1.0.8.10
Здесь можно включить сжатие страниц, по умолчанию выключено:
GeSHi: PHP// Start Output Buffering //ob_start("ob_gzhandler"); //Uncomment this line to enable output compression.
Добавлено за 0.039 секунд, используя GeSHi 1.0.8.10
Ищем файл config.php. Тот каталог, в котором он расположен, считается корневым каталогом сайта. Путь к нему запоминается в константе BASEDIR:
GeSHi: PHP// Locate config.php and set the basedir path $folder_level = ""; $i = 0; $folder_level .= "../"; $i++; if ($i == 5) { die("Config file not found"); } } require_once $folder_level."config.php"; define("BASEDIR", $folder_level);
Добавлено за 0.042 секунд, используя GeSHi 1.0.8.10
Проверяется содержимое config.php. Если база данных не определена, запускается программа установки:
GeSHi: PHP// If config.php is empty, activate setup.php script if (!isset($db_name)) { redirect ("setup.php"); }
Добавлено за 0.040 секунд, используя GeSHi 1.0.8.10
В комментарии указано, что это определения для многосайтовых приложений. Реально в подключаемом ниже сайте определены константы таблиц базы данных:
GeSHi: PHP// Multisite definitions require_once BASEDIR."includes/multisite_include.php";
Добавлено за 0.040 секунд, используя GeSHi 1.0.8.10
Устанавливается соединение с базой данных:
GeSHi: PHP// Establish mySQL database connection $link = dbconnect($db_host, $db_user, $db_pass, $db_name);
Добавлено за 0.039 секунд, используя GeSHi 1.0.8.10
Получаем установки сайта из базы данных:
GeSHi: PHP// Fetch the Site Settings from the database and store them in the $settings variable $settings = dbarray(dbquery("SELECT * FROM ".DB_SETTINGS));
Добавлено за 0.040 секунд, используя GeSHi 1.0.8.10
Установка глобальных переменных:
GeSHi: PHP// Sanitise $_SERVER globals $_SERVER['PHP_SELF'] = cleanurl($_SERVER['PHP_SELF']); $_SERVER['QUERY_STRING'] = isset($_SERVER['QUERY_STRING']) ? cleanurl ($_SERVER['QUERY_STRING']) : ""; $_SERVER['REQUEST_URI'] = isset($_SERVER['REQUEST_URI']) ? cleanurl ($_SERVER['REQUEST_URI']) : ""; $PHP_SELF = cleanurl($_SERVER['PHP_SELF']);
Добавлено за 0.043 секунд, используя GeSHi 1.0.8.10
Определяются общие константы:
GeSHi: PHP// Common definitions define("FUSION_REQUEST", isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI'] != "" ? $_SERVER['REQUEST_URI'] : $_SERVER['SCRIPT_NAME']); define("FUSION_QUERY", isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : ""); define("USER_IP", $_SERVER['REMOTE_ADDR']); define("QUOTES_GPC", (ini_get('magic_quotes_gpc') ? TRUE : FALSE)); // Path definitions define("ADMIN", BASEDIR ."administration/"); define("IMAGES", BASEDIR ."images/"); define("IMAGES_A", IMAGES ."articles/"); define("IMAGES_N", IMAGES ."news/"); define("IMAGES_NC", IMAGES ."news_cats/"); define("RANKS", IMAGES ."ranks/"); define("INCLUDES", BASEDIR ."includes/"); define("LOCALE", BASEDIR ."locale/"); define("LOCALESET", $settings['locale']."/"); define("FORUM", BASEDIR ."forum/"); define("INFUSIONS", BASEDIR ."infusions/"); define("PHOTOS", IMAGES ."photoalbum/"); define("THEMES", BASEDIR ."themes/");
Добавлено за 0.051 секунд, используя GeSHi 1.0.8.10
Инициализация некоторых переменных:
GeSHi: PHP// Predefine mysql_cache variables $smiley_cache = ""; $bbcode_cache = ""; $groups_cache = ""; $forum_rank_cache = ""; $forum_mod_rank_cache = "";
Добавлено за 0.043 секунд, используя GeSHi 1.0.8.10
Функции работы с базами данных:
// MySQL database functions
GeSHi: PHPfunction dbquery($query) { if (!$result) { return false; } else { return $result; } }
Добавлено за 0.050 секунд, используя GeSHi 1.0.8.10
GeSHi: PHPfunction dbcount($field, $table, $conditions = "") { $cond = ($conditions ? " WHERE ".$conditions : ""); $result = @mysql_query("SELECT Count".$field." FROM ".$table.$cond); if (!$result) { return false; } else { return $rows; } }
Добавлено за 0.057 секунд, используя GeSHi 1.0.8.10
GeSHi: PHPfunction dbresult($query, $row) { if (!$result) { return false; } else { return $result; } }
Добавлено за 0.077 секунд, используя GeSHi 1.0.8.10
GeSHi: PHPfunction dbrows($query) { return $result; }
Добавлено за 0.042 секунд, используя GeSHi 1.0.8.10
GeSHi: PHPfunction dbarray($query) { if (!$result) { return false; } else { return $result; } }
Добавлено за 0.041 секунд, используя GeSHi 1.0.8.10
GeSHi: PHPfunction dbarraynum($query) { if (!$result) { return false; } else { return $result; } }
Добавлено за 0.043 секунд, используя GeSHi 1.0.8.10
GeSHi: PHPfunction dbconnect($db_host, $db_user, $db_pass, $db_name) { if (!$db_connect) { die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Unable to establish connection to MySQL</b><br />".mysql_errno()." : ".mysql_error()."</div>"); } elseif (!$db_select) { die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Unable to select MySQL database</b><br />".mysql_errno()." : ".mysql_error()."</div>"); } }
Добавлено за 0.078 секунд, используя GeSHi 1.0.8.10
Подключение национальной локали:
GeSHi: PHP// Initialise the $locale array
Добавлено за 0.073 секунд, используя GeSHi 1.0.8.10
GeSHi: PHP// Load the Global language file include LOCALE.LOCALESET."global.php";
Добавлено за 0.043 секунд, используя GeSHi 1.0.8.10
Проверка IP, если он в вашем черном списке, то редиректим на google:
GeSHi: PHP// Check if users full or partial ip is blacklisted
Добавлено за 0.044 секунд, используя GeSHi 1.0.8.10
GeSHi: PHPif (dbcount("(*)", DB_BLACKLIST, "blacklist_ip='".USER_IP."' OR blacklist_ip='$sub_ip1' OR blacklist_ip='$sub_ip2'")) { redirect(" http://www.google.com/ "); }
Добавлено за 0.043 секунд, используя GeSHi 1.0.8.10
Проверяем куки. Если не имеются, делаем:
GeSHi: PHP// PHP-Fusion user cookie functions if (!isset($_COOKIE[COOKIE_PREFIX .'visited'])) { $result = dbquery("UPDATE ".DB_SETTINGS." SET counter=counter+1"); setcookie(COOKIE_PREFIX ."visited", "yes", time() + 31536000, "/", "", "0"); }
Добавлено за 0.045 секунд, используя GeSHi 1.0.8.10
Устанавливаем тему оформления в соответствии с пользовательскими настройками:
//check that site or user theme exists
GeSHi: PHPfunction theme_exists($theme) { return false; define("THEME", THEMES .$theme."/"); return true; } else { while (false !== ($entry = readdir($dh))) { if ($entry != "." && $entry != ".." && is_dir(THEMES .$entry)) { define("THEME", THEMES .$entry."/"); return true; } } } return false; } } }
Добавлено за 0.048 секунд, используя GeSHi 1.0.8.10
Обработка входа на сайт (имя, пароль, права и т.д.):
GeSHi: PHPif (isset($_POST['login'])) { $user_pass = md5($_POST['user_pass']); $user_name = preg_replace(array("/\=/","/\#/","/\sOR\s/"), "", stripinput ($_POST['user_name'])); $result = dbquery ("SELECT * FROM ".DB_USERS ." WHERE user_name='$user_name' AND (user_password='".md5($user_pass)."' OR user_password='$user_pass') LIMIT 1"); if (dbrows($result)) { $data = dbarray($result); if ($data['user_password'] == $user_pass) { $result = dbquery ("UPDATE ".DB_USERS ." SET user_password='".md5($user_pass)."' WHERE user_id='".$data['user_id']."'"); } $cookie_value = $data['user_id'].".".$user_pass; if ($data['user_status'] == 0) { $cookie_exp = isset($_POST['remember_me']) ? time() + 3600 * 24 * 30 : time() + 3600 * 3; header("P3P: CP='NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM'"); setcookie(COOKIE_PREFIX ."user", $cookie_value, $cookie_exp, "/", "", "0"); redirect(BASEDIR."setuser.php?user=".$data['user_name'], true); } elseif ($data['user_status'] == 1) { redirect(BASEDIR."setuser.php?error=1", true); } elseif ($data['user_status'] == 2) { redirect(BASEDIR."setuser.php?error=2", true); } } else { redirect(BASEDIR."setuser.php?error=3"); } }
Добавлено за 0.052 секунд, используя GeSHi 1.0.8.10
Проверка на наличие cookies:
GeSHi: PHPif (isset($_COOKIE[COOKIE_PREFIX .'user'])) { $cookie_vars = explode(".", $_COOKIE[COOKIE_PREFIX .'user']); $cookie_1 = isnum($cookie_vars['0']) ? $cookie_vars['0'] : "0"; $cookie_2 = (preg_check("/^[0-9a-z]{32}$/", $cookie_vars['1']) ? $cookie_vars['1'] : ""); $result = dbquery ("SELECT * FROM ".DB_USERS ." WHERE user_id='$cookie_1' AND user_password='".md5($cookie_2)."' LIMIT 1"); unset($cookie_vars,$cookie_1,$cookie_2); if (dbrows($result)) { $userdata = dbarray($result); if ($userdata['user_status'] == 0) { if ($userdata['user_theme'] != "Default" && file_exists(THEMES .$userdata['user_theme']."/theme.php") && ($settings['userthemes'] == 1 || $userdata['user_level'] >= 101)) { if (!theme_exists($userdata['user_theme'])) { echo "<strong>".$settings['sitename']." - ".$locale['global_300'].".</strong><br /><br />\n"; echo $locale['global_301']; } } else { if (!theme_exists($settings['theme'])) { echo "<strong>".$settings['sitename']." - ".$locale['global_300'].".</strong><br /><br />\n"; echo $locale['global_301']; } } if ($userdata['user_offset'] <> 0) { $settings['timeoffset'] = $settings['timeoffset'] + $userdata['user_offset']; } if (!isset($_COOKIE[COOKIE_PREFIX .'lastvisit'])) { $result = dbquery("UPDATE ".DB_USERS." SET user_threads='' WHERE user_id='".$userdata['user_id']."'"); @setcookie(COOKIE_PREFIX ."lastvisit", $userdata['user_lastvisit'], time() + 3600, "/", "", "0"); $lastvisited = $userdata['user_lastvisit']; } else { $lastvisited = $_COOKIE[COOKIE_PREFIX.'lastvisit']; } if ($userdata['user_level'] > 101) { if (isset($_COOKIE[COOKIE_PREFIX .'admin']) && (!eregi(str_replace("../", "", "/".ADMIN ), FUSION_REQUEST ) || USER_IP != $userdata['user_ip'])) { setcookie(COOKIE_PREFIX ."admin", "", time() - 7200, "/", "", "0"); } } } else { header("P3P: CP='NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM'"); setcookie(COOKIE_PREFIX ."user", "", time() - 7200, "/", "", "0"); setcookie(COOKIE_PREFIX ."lastvisit", "", time() - 7200, "/", "", "0"); redirect(BASEDIR."index.php", true); } } else { header("P3P: CP='NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM'"); setcookie(COOKIE_PREFIX ."user", "", time() - 7200, "/", "", "0"); setcookie(COOKIE_PREFIX ."lastvisit", "", time() - 7200, "/", "", "0"); redirect(BASEDIR."index.php", true); } } else { if (!theme_exists($settings['theme'])) { echo "<strong>".$settings['sitename']." - ".$locale['global_300'].".</strong><br /><br />\n"; echo $locale['global_301']; } $userdata = ""; $userdata['user_level'] = 0; $userdata['user_rights'] = ""; $userdata['user_groups'] = ""; }
Добавлено за 0.067 секунд, используя GeSHi 1.0.8.10
Функция redirect - перенаправление на нужный адрес. В зависимости от значения переменной $script переход идёт либо 302, либо javascript. Для лучшего восприятия Яндексом желательно false поменять на true :
// Redirect browser using header or script function
GeSHi: PHPfunction redirect($location, $script = false) { if (!$script) { } else { echo "<script type='text/javascript'>document.location.href='".str_replace("&", "&", $location)."'</script>\n"; } }
Добавлено за 0.045 секунд, используя GeSHi 1.0.8.10
Функция cleanurl - приводит УРЛ, сохранённый в базе данных в читаемый вид:
// Clean URL Function, prevents entities in server globals
GeSHi: PHPfunction cleanurl($url) { $bad_entities = array("&", "\"", "'", '\"', "\'", "<", ">", "(", ")", "*"); $safe_entities = array("&", "", "", "", "", "", "", "", "", ""); $url = str_replace($bad_entities, $safe_entities, $url); return $url; }
Добавлено за 0.047 секунд, используя GeSHi 1.0.8.10
Функция stripinput - заменяет некоторые служебные символы на неинтерпретируемые эквиваленты:
// Strip Input Function, prevents HTML in unwanted places
GeSHi: PHPfunction stripinput($text) { $search = array("&", "\"", "'", "\\", '\"', "\'", "<", ">", " "); $replace = array("&", """, "'", "\", """, "'", "<", ">", " "); return $text; }
Добавлено за 0.046 секунд, используя GeSHi 1.0.8.10
Ещё несколько функций, делающих обработку текстовых данных, подставляющих или удаляющих специальные символы:
// stripslash function, only stripslashes if magic_quotes_gpc is on
GeSHi: PHPfunction stripslash($text) { return $text; }
Добавлено за 0.043 секунд, используя GeSHi 1.0.8.10
// stripslash function, add correct number of slashes depending on quotes_gpc
GeSHi: PHPfunction addslash($text) { if (!QUOTES_GPC) { } else { } return $text; }
Добавлено за 0.044 секунд, используя GeSHi 1.0.8.10
// htmlentities is too agressive so we use this function
GeSHi: PHPfunction phpentities($text) { $search = array("&", "\"", "'", "\\", "<", ">"); $replace = array("&", """, "'", "\", "<", ">"); return $text; }
Добавлено за 0.045 секунд, используя GeSHi 1.0.8.10
// Trim a line of text to a preferred length
GeSHi: PHPfunction trimlink($text, $length) { $dec = array("&", "\"", "'", "\\", '\"', "\'", "<", ">"); $enc = array("&", """, "'", "\", """, "'", "<", ">"); if (strlen($text) > $length) $text = substr($text, 0, ($length-3))."..."; return $text; }
Добавлено за 0.047 секунд, используя GeSHi 1.0.8.10
Функции проверки входных данных:
// Validate numeric input
GeSHi: PHPfunction isnum($value) { } else { return false; } }
Добавлено за 0.044 секунд, используя GeSHi 1.0.8.10
// custom preg-match function
GeSHi: PHPfunction preg_check($expression, $value) { } else { return false; } }
Добавлено за 0.054 секунд, используя GeSHi 1.0.8.10
Функции работы со смайлами и bb- кодами:
// Cache smileys mysql
GeSHi: PHPfunction cache_smileys() { global $smiley_cache; $result = dbquery("SELECT * FROM ".DB_SMILEYS); if (dbrows($result)) { while ($data = dbarray($result)) { "smiley_code" => $data['smiley_code'], "smiley_image" => $data['smiley_image'], "smiley_text" => $data['smiley_text'] ); } } else { } }
Добавлено за 0.045 секунд, используя GeSHi 1.0.8.10
// Parse smiley bbcode
GeSHi: PHPfunction parsesmileys($message) { global $smiley_cache; if (!preg_match("#(\[code\](.*?)\[/code\]|\[geshi=(.*?)\](.*?)\[/geshi\]|\[php\](.*?)\[/php\])#si", $message)) { if (!$smiley_cache) { cache_smileys(); } foreach ($smiley_cache as $smiley) { $smiley_code = preg_quote($smiley['smiley_code']); $smiley_image = "<img src='".get_image("smiley_".$smiley['smiley_text'])."' alt='".$smiley['smiley_text']."' style='vertical-align:middle;' />"; $message = preg_replace("#{$smiley_code}#si", $smiley_image, $message); } } } return $message; }
Добавлено за 0.047 секунд, используя GeSHi 1.0.8.10
// Show smiley icons in comments, forum and other post pages
GeSHi: PHPfunction displaysmileys($textarea, $form = "inputform") { global $smiley_cache; $smileys = ""; $i = 0; if (!$smiley_cache) { cache_smileys(); } foreach ($smiley_cache as $smiley) { if ($i != 0 && ($i % 10 == 0)) { $smileys .= "<br />\n"; $i++; } $smileys .= "<img src='".get_image("smiley_".$smiley['smiley_text'])."' alt='".$smiley['smiley_text']."' onclick=\"insertText('".$textarea."', '".$smiley['smiley_code']."', '".$form."');\" />\n"; } } return $smileys; }
Добавлено за 0.047 секунд, используя GeSHi 1.0.8.10
// Cache bbcode mysql
GeSHi: PHPfunction cache_bbcode() { global $bbcode_cache; $result = dbquery("SELECT * FROM ".DB_BBCODES." ORDER BY bbcode_order ASC"); if (dbrows($result)) { while ($data = dbarray($result)) { $bbcode_cache[] = $data['bbcode_name']; } } else { } }
Добавлено за 0.044 секунд, используя GeSHi 1.0.8.10
// Parse bbcode
GeSHi: PHPfunction parseubb($text, $selected=false) { global $bbcode_cache; if (!$bbcode_cache) { cache_bbcode(); } if ($selected) { $sel_bbcodes = explode("|", $selected); } foreach ($bbcode_cache as $bbcode) { if ($selected && in_array($bbcode, $sel_bbcodes)) { if (file_exists(INCLUDES ."bbcodes/".$bbcode."_bbcode_include.php")) { if (file_exists(LOCALE .LOCALESET ."bbcodes/".$bbcode.".php")) { include (LOCALE.LOCALESET."bbcodes/".$bbcode.".php"); } elseif (file_exists(LOCALE ."English/bbcodes/".$bbcode.".php")) { include (LOCALE."English/bbcodes/".$bbcode.".php"); } include (INCLUDES."bbcodes/".$bbcode."_bbcode_include.php"); } } elseif (!$selected) { if (file_exists(INCLUDES ."bbcodes/".$bbcode."_bbcode_include.php")) { if (file_exists(LOCALE .LOCALESET ."bbcodes/".$bbcode.".php")) { include (LOCALE.LOCALESET."bbcodes/".$bbcode.".php"); } elseif (file_exists(LOCALE ."English/bbcodes/".$bbcode.".php")) { include (LOCALE."English/bbcodes/".$bbcode.".php"); } include (INCLUDES."bbcodes/".$bbcode."_bbcode_include.php"); } } } } $text = descript($text, false); return $text; }
Добавлено за 0.062 секунд, используя GeSHi 1.0.8.10
Функция, маскирующая e-mail на страницах сайта. Предназначена для защиты от парсеров различных спам-приложений:
// Javascript email encoder by Tyler Akins
//
GeSHi: PHPfunction hide_email($email, $title = "", $subject = "") { $MailLink = "<a href='mailto:".$parts[0]."@".$parts[1]; if ($subject != "") { $MailLink .= "?subject=".urlencode($subject); } $MailLink .= "'>".($title?$title:$parts[0]."@".$parts[1])."</a>"; $MailLetters = ""; for ($i = 0; $i < strlen($MailLink); $i++) { $l = substr($MailLink, $i, 1); if (strpos($MailLetters, $l) === false) { $MailLetters = substr($MailLetters, 0, $p).$l.substr($MailLetters, $p, strlen($MailLetters)); } } \\\\ ", $MailLetters); \\\ "", $MailLettersEnc); $MailIndexes = ""; for ($i = 0; $i < strlen($MailLink); $i ++) { $index = strpos($MailLetters, substr($MailLink, $i, 1)); $index += 48; $MailIndexes .= chr($index); } $MailIndexes = str_replace("\\", " \\\\ ", $MailIndexes); $MailIndexes = str_replace("\"", " \\\ "", $MailIndexes); $res = "<script type='text/javascript'>"; $res .= "ML =\ "".str_replace("<", "xxxx", $MailLettersEnc)."\";"; $res .= "MI=\"".str_replace("<", "xxxx", $MailIndexes)."\";"; $res .= "ML=ML.replace(/xxxx/g, '<');"; $res .= "MI=MI.replace(/xxxx/g, '<');"; $res .= "OT=\"\";"; $res .= "for(j=0;j < MI.length;j++){"; $res .= "OT+=ML.charAt(MI.charCodeAt(j)-48);"; $res .= "}document.write(OT);"; $res .= "</script>"; return $res; } else { return $email; } }
Добавлено за 0.056 секунд, используя GeSHi 1.0.8.10
Замена пробелов, символов табуляции при форматировании текста:
// Format spaces and tabs in code bb tags
GeSHi: PHPfunction formatcode($text) { return $text; } Функция, позволяющая выделять определённые слова: // Highlights given words in subject [geshi=php]function highlight_words($word, $subject) { $regex_chars = "*|#.+?(){}[]^$/"; for ($j = 0; $j < count($word); $j++) { for ($i = 0; $i < strlen($regex_chars); $i++) { $char = substr($regex_chars, $i, 1); } $subject = preg_replace("/(".$word[$j].")/is", "<span style='background-color:yellow;font-weight:bold;padding-left:2px;padding-right:2px'>\\1</span>", $subject); } } return $subject; }
Добавлено за 0.051 секунд, используя GeSHi 1.0.8.10
Функция descript - конвертироует проблематичные символы в их цифровые эквиваленты и удаляет потенциально опасные теги и ключевые слова:
// This function sanitises news & article submissions
GeSHi: PHPfunction descript($text, $striptags = true) { // Convert problematic ascii characters to their true values $search = array("40","41","58","65","66","67","68","69","70", "71","72","73","74","75","76","77","78","79","80","81", "82","83","84","85","86","87","88","89","90","97","98", "99","100","101","102","103","104","105","106","107", "108","109","110","111","112","113","114","115","116", "117","118","119","120","121","122" ); $replace = array("(",")",":","a","b","c","d","e","f","g","h", "i","j","k","l","m","n","o","p","q","r","s","t","u", "v","w","x","y","z","a","b","c","d","e","f","g","h", "i","j","k","l","m","n","o","p","q","r","s","t","u", "v","w","x","y","z" ); $entities = count($search); for ($i=0; $i < $entities; $i++) { $text = preg_replace("#(&\#)(0*".$search[$i]."+);*#si", $replace[$i], $text); } $text = preg_replace('#(<[^>]+[/\"\'\s])(onmouseover|onmousedown|onmouseup|onmouseout|onmousemove|onclick|ondblclick|onfocus|onload|xmlns)[^>]*>#iU', ">", $text); $text = preg_replace('#([a-z]*)=([\`\'\"]*)script:#iU', '$1=$2nojscript...', $text); $text = preg_replace('#([a-z]*)=([\`\'\"]*)javascript:#iU', '$1=$2nojavascript...', $text); $text = preg_replace('#([a-z]*)=([\'\"]*)vbscript:#iU', '$1=$2novbscript...', $text); $text = preg_replace('#(<[^>]+)style=([\`\'\"]*).*expression\([^>]*>#iU', "$1>", $text); $text = preg_replace('#(<[^>]+)style=([\`\'\"]*).*behaviour\([^>]*>#iU', "$1>", $text); if ($striptags) { do { $thistext = $text; $text = preg_replace('#</*(applet|meta|xml|blink|link|style|script|embed|object|iframe|frame|frameset|ilayer|layer|bgsound|title|base)[^>]*>#i', "", $text); } while ($thistext != $text); } return $text; }
Добавлено за 0.072 секунд, используя GeSHi 1.0.8.10
Функция verify_image - проверяет графические файлы на предмет внедрённых шпионскихили троянских фрагментов, вредоносного кода. Обязательно используйте подобные проверки при написании различного рода расширений:
// Scan image files for malicious code
GeSHi: PHPfunction verify_image($file) { $txt = file_get_contents($file); $image_safe = true; if (preg_match('#&(quot|lt|gt|nbsp|<?php);#i', $txt)) { $image_safe = false; } elseif (preg_match("#&\#x([0-9a-f]+);#i", $txt)) { $image_safe = false; } elseif (preg_match('#&\#([0-9]+);#i', $txt)) { $image_safe = false; } elseif (preg_match("#([a-z]*)=([\`\'\"]*)script:#iU", $txt)) { $image_safe = false; } elseif (preg_match("#([a-z]*)=([\`\'\"]*)javascript:#iU", $txt)) { $image_safe = false; } elseif (preg_match("#([a-z]*)=([\'\"]*)vbscript:#iU", $txt)) { $image_safe = false; } elseif (preg_match("#(<[^>]+)style=([\`\'\"]*).*expression\([^>]*>#iU", $txt)) { $image_safe = false; } elseif (preg_match("#(<[^>]+)style=([\`\'\"]*).*behaviour\([^>]*>#iU", $txt)) { $image_safe = false; } elseif (preg_match("#</*(applet|link|style|script|iframe|frame|frameset)[^>]*>#i", $txt)) { $image_safe = false; } return $image_safe; }
Добавлено за 0.048 секунд, используя GeSHi 1.0.8.10
Функции работы с каптчей - проверочной картинкой, служащей для ограничения автоматического воздействия на сайт (регистрации, комментарии и т.д.):
// captcha routines
GeSHi: PHPfunction make_captcha() { global $settings; $captcha_string = ""; $captcha_encode = ""; $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; for ($i = 0; $i < 5; $i++) { } for ($i = 0; $i < 31; $i++) { } $result = mysql_query("INSERT INTO ".DB_PREFIX ."captcha (captcha_datestamp, captcha_ip, captcha_encode, captcha_string) VALUES('".time()."', '".USER_IP ."', '$captcha_encode', '$captcha_string')"); if ($settings['validation_method'] == "image") { return "<input type='hidden' name='captcha_encode' value='".$captcha_encode."' /><img src='".INCLUDES."captcha_include.php?captcha_code=".$captcha_encode."' alt='' />\n"; } else { return "<input type='hidden' name='captcha_encode' value='".$captcha_encode."' /><strong>".$captcha_string."</strong>\n"; } }
Добавлено за 0.050 секунд, используя GeSHi 1.0.8.10
GeSHi: PHPfunction check_captcha($captchs_encode, $captcha_string) { if (preg_check("/^[0-9A-Za-z]+$/", $captchs_encode) && preg_check("/^[0-9A-Za-z]+$/", $captcha_string)) { $result = dbquery("SELECT * FROM ".DB_CAPTCHA." WHERE captcha_ip='".USER_IP."' AND captcha_encode='".$captchs_encode."' AND captcha_string='".$captcha_string."'"); if (dbrows($result)) { $result = dbquery("DELETE FROM ".DB_CAPTCHA." WHERE captcha_ip='".USER_IP."' AND captcha_encode='".$captchs_encode."' AND captcha_string='".$captcha_string."'"); return true; } else { return false; } } else { return false; } }
Добавлено за 0.062 секунд, используя GeSHi 1.0.8.10
Замена нецензурных, запрещённых слов:
// Replace offensive words with the defined replacement word
GeSHi: PHPfunction censorwords($text) { global $settings; if ($settings['bad_words_enabled'] == "1" && $settings['bad_words'] != "" ) { $word_list = explode("\r\n", $settings['bad_words']); for ($i=0; $i < count($word_list); $i++) { if ($word_list[$i] != "") $text = preg_replace("/".$word_list[$i]."/si", $settings['bad_word_replace'], $text); } } return $text; }
Добавлено за 0.079 секунд, используя GeSHi 1.0.8.10
Функция возвращает текст, соответствующий уровню пользователя ("пользователь", "администратор", "супер-администратор"):
// Display the user's level
GeSHi: PHPfunction getuserlevel($userlevel) { global $locale; if ($userlevel == 101) { return $locale['user1']; } elseif ($userlevel == 102) { return $locale['user2']; } elseif ($userlevel == 103) { return $locale['user3']; } }
Добавлено за 0.044 секунд, используя GeSHi 1.0.8.10
Проверка прав администратора:
// Check if Administrator has correct rights assigned
GeSHi: PHPfunction checkrights($right) { return true; } else { return false; } }
Добавлено за 0.044 секунд, используя GeSHi 1.0.8.10
Проверка принадлежности пользователя к группе:
// Check if user is assigned to the specified user group
GeSHi: PHPfunction checkgroup($group) { if (iSUPERADMIN) { return true; } elseif (iADMIN && ($group == "0" || $group == "101" || $group == "102")) { return true; } elseif (iMEMBER && ($group == "0" || $group == "101")) { return true; } elseif (iGUEST && $group == "0") { return true; return true; } else { return false; } }
Добавлено за 0.046 секунд, используя GeSHi 1.0.8.10
Вспомогательные функции для работы с пользователями, группами и их правами:
// Cache groups mysql
GeSHi: PHPfunction cache_groups() { global $groups_cache; $result = dbquery("SELECT * FROM ".DB_USER_GROUPS." ORDER BY group_id ASC"); if (dbrows($result)) { while ($data = dbarray($result)) { $groups_cache[] = $data; } } else { } }
Добавлено за 0.043 секунд, используя GeSHi 1.0.8.10
// Compile access levels & user group array
GeSHi: PHPfunction getusergroups() { global $locale, $groups_cache; array("0", $locale['user0']), array("101", $locale['user1']), array("102", $locale['user2']), array("103", $locale['user3']) ); if (!$groups_cache) { cache_groups(); } foreach ($groups_cache as $group) { array_push($groups_array, array($group['group_id'], $group['group_name'])); } } return $groups_array; }
Добавлено за 0.046 секунд, используя GeSHi 1.0.8.10
// Get the name of the access level or user group
GeSHi: PHPfunction getgroupname($group_id, $return_desc = false) { global $locale, $groups_cache; if ($group_id == "0") { return $locale['user0']; } elseif ($group_id == "101") { return $locale['user1']; exit; } elseif ($group_id == "102") { return $locale['user2']; exit; } elseif ($group_id == "103") { return $locale['user3']; exit; } else { if (!$groups_cache) { cache_groups(); } foreach ($groups_cache as $group) { if ($group_id == $group['group_id']) { return ($return_desc ? ($group['group_description'] ? $group['group_description'] : '-') : $group['group_name']); exit; } } } } return "N/A"; }
Добавлено за 0.047 секунд, используя GeSHi 1.0.8.10
GeSHi: PHPfunction groupaccess($field) { if (iGUEST) { return "$field = '0'"; } elseif (iSUPERADMIN) { return "1 = 1"; } elseif (iADMIN) { $res = "($field='0' OR $field='101' OR $field='102'"; } elseif (iMEMBER) { $res = "($field='0' OR $field='101'"; } if (iUSER_GROUPS != "" && !iSUPERADMIN ) { $res .= " OR $field='".str_replace(".", "' OR $field='", iUSER_GROUPS )."'"; } $res .= ")"; return $res; }
Добавлено за 0.060 секунд, используя GeSHi 1.0.8.10
Полезная функция, создаёт массив, содержащий список файлов в каталоге (папке) на сайте:
// Create a list of files or folders and store them in an array
GeSHi: PHPfunction makefilelist($folder, $filter, $sort=true, $type="files") { if ($type == "files" && !in_array($file, $filter)) { if (!is_dir($folder.$file)) { $res[] = $file; } } elseif ($type == "folders" && !in_array($file, $filter)) { if (is_dir($folder.$file)) { $res[] = $file; } } } if ($sort) { sort($res); } return $res; }
Добавлено за 0.058 секунд, используя GeSHi 1.0.8.10
Функция, превращающая массив, выдаваемый предыдущей функцией, в html-список:
// Create a selection list from an array created by makefilelist()
GeSHi: PHPfunction makefileopts($files, $selected = "") { $res = ""; for ($i = 0; $i < count($files); $i++) { $sel = ($selected == $files[$i] ? " selected='selected'" : ""); $res .= "<option value='".$files[$i]."'$sel>".$files[$i]."</option>\n"; } return $res; }
Добавлено за 0.048 секунд, используя GeSHi 1.0.8.10
Функция, создающая панель навигации с номерами страниц. К этому приёму приходится прибегать в том случае, когда количество элементов раздела (новостей, статей, ссылок, файлов и т.д.) достаточно велико для того, чтобы отображать их все на одной странице. Либо статья большая и требуется разбить её на несколько частей:
GeSHi: PHPfunction makepagenav($start, $count, $total, $range = 0, $link = "") { global $locale; if ($link == "") { $link = FUSION_SELF."?"; } $pg_cnt = ceil($total / $count); if ($pg_cnt <= 1) { return ""; } $idx_back = $start - $count; $idx_next = $start + $count; $cur_page = ceil(($start + 1) / $count); $res = $locale['global_092']." ".$cur_page.$locale['global_093'].$pg_cnt.": "; if($idx_back >= 0) { if($cur_page > ($range + 1)) { $res .= "<a href='".$link."rowstart=0'>1</a>..."; } } $idx_fst = max($cur_page - $range, 1); $idx_lst = min($cur_page + $range, $pg_cnt); if ($range == 0) { $idx_fst = 1; $idx_lst = $pg_cnt; } for ($i = $idx_fst; $i <= $idx_lst; $i++) { $offset_page = ($i - 1) * $count; if ($i == $cur_page) { $res .= "<span><strong>".$i."</strong></span>"; } else { $res .= "<a href='".$link."rowstart=".$offset_page."'>".$i."</a>"; } } if ($idx_next < $total) { if ($cur_page < ($pg_cnt - $range)) { $res .= "...<a href='".$link."rowstart=".($pg_cnt - 1) * $count."'>".$pg_cnt."</a>\n"; } } return "<div class='pagenav'>\n".$res."</div>\n"; }
Добавлено за 0.051 секунд, используя GeSHi 1.0.8.10
Форматирует дату/время в удобочитаемый формат:
// Format the date & time accordingly
GeSHi: PHPfunction showdate($format, $val) { global $settings; if ($format == "shortdate" || $format == "longdate" || $format == "forumdate") { return strftime($settings[$format], $val + ($settings['timeoffset']*3600)); } else { return strftime($format, $val + ($settings['timeoffset'] * 3600)); } }
Добавлено за 0.044 секунд, используя GeSHi 1.0.8.10
Преобразует байты в килобайты, мегабайты, гигабайты:
// Translate bytes into kb, mb, gb or tb by CrappoMan
GeSHi: PHPfunction parsebytesize($size, $digits = 2, $dir = false) { $kb = 1024; $mb = 1024 * $kb; $gb= 1024 * $mb; $tb = 1024 * $gb; if (($size == 0) && ($dir)) { return "Empty"; } elseif ($size < $kb) { return $size."Bytes"; } elseif ($size < $mb) { return round($size / $kb,$digits)."Kb"; } elseif ($size < $gb) { return round($size / $mb,$digits)."Mb"; } elseif ($size < $tb) { return round($size / $gb,$digits)."Gb"; } else { return round($size / $tb, $digits)."Tb"; } }
Добавлено за 0.046 секунд, используя GeSHi 1.0.8.10
Определение констант для проверки прав доступа:
GeSHi: PHP// User level, Admin Rights & User Group definitions define("iGUEST", $userdata['user_level'] == 0 ? 1 : 0); define("iMEMBER", $userdata['user_level'] >= 101 ? 1 : 0); define("iADMIN", $userdata['user_level'] >= 102 ? 1 : 0); define("iSUPERADMIN", $userdata['user_level'] == 103 ? 1 : 0); define("iUSER", $userdata['user_level']); define("iUSER_RIGHTS", $userdata['user_rights']); define("iUSER_GROUPS", substr($userdata['user_groups'], 1));
Добавлено за 0.047 секунд, используя GeSHi 1.0.8.10
Создание аутентификацийного ключа для админа:
GeSHi: PHPif (iADMIN; $PHP_SELF = cleanurl($_SERVER[) { define("iAUTH", substr($userdata['user_password'], 16, 32)); $aidlink = "?aid=".iAUTH; }
Добавлено за 0.043 секунд, используя GeSHi 1.0.8.10
Подключение скрипта определений системных картинок:
GeSHi: PHPinclude INCLUDES."system_images.php";
Добавлено за 0.042 секунд, используя GeSHi 1.0.8.10
|