114 lines
4.1 KiB
PHP
Executable File
114 lines
4.1 KiB
PHP
Executable File
<?php
|
|
|
|
/* 过滤短代码 */
|
|
require_once('short.php');
|
|
|
|
function _checkXSS($text)
|
|
{
|
|
$isXss = false;
|
|
$list = array(
|
|
'/onabort/is',
|
|
'/onblur/is',
|
|
'/onchange/is',
|
|
'/onclick/is',
|
|
'/ondblclick/is',
|
|
'/onerror/is',
|
|
'/onfocus/is',
|
|
'/onkeydown/is',
|
|
'/onkeypress/is',
|
|
'/onkeyup/is',
|
|
'/onload/is',
|
|
'/onmousedown/is',
|
|
'/onmousemove/is',
|
|
'/onmouseout/is',
|
|
'/onmouseover/is',
|
|
'/onmouseup/is',
|
|
'/onreset/is',
|
|
'/onresize/is',
|
|
'/onselect/is',
|
|
'/onsubmit/is',
|
|
'/onunload/is',
|
|
'/eval/is',
|
|
'/ascript:/is',
|
|
'/style=/is',
|
|
'/width=/is',
|
|
'/width:/is',
|
|
'/height=/is',
|
|
'/height:/is',
|
|
'/src=/is',
|
|
);
|
|
if (strip_tags($text)) {
|
|
for ($i = 0; $i < count($list); $i++) {
|
|
if (preg_match($list[$i], $text) > 0) {
|
|
$isXss = true;
|
|
break;
|
|
}
|
|
}
|
|
} else {
|
|
$isXss = true;
|
|
};
|
|
return $isXss;
|
|
}
|
|
|
|
/* 过滤评论回复 */
|
|
function _parseCommentReply($text)
|
|
{
|
|
if (_checkXSS($text)) {
|
|
echo "该回复疑似异常,已被系统拦截!";
|
|
} else {
|
|
$text = _parseReply($text);
|
|
echo preg_replace('/\{!\{([^\"]*)\}!\}/', '<img class="lazyload draw_image" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="$1" alt="画图"/>', $text);
|
|
}
|
|
}
|
|
|
|
/* 过滤表情 */
|
|
function _parseReply($text)
|
|
{
|
|
$text = preg_replace_callback(
|
|
'/\:\:\(\s*(呵呵|哈哈|吐舌|太开心|笑眼|花心|小乖|乖|捂嘴笑|滑稽|你懂的|不高兴|怒|汗|黑线|泪|真棒|喷|惊哭|阴险|鄙视|酷|啊|狂汗|what|疑问|酸爽|呀咩爹|委屈|惊讶|睡觉|笑尿|挖鼻|吐|犀利|小红脸|懒得理|勉强|爱心|心碎|玫瑰|礼物|彩虹|太阳|星星月亮|钱币|茶杯|蛋糕|大拇指|胜利|haha|OK|沙发|手纸|香蕉|便便|药丸|红领巾|蜡烛|音乐|灯泡|开心|钱|咦|呼|冷|生气|弱|吐血|狗头)\s*\)/is',
|
|
function ($match) {
|
|
return '<img class="owo_image lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="' . Helper::options()->themeUrl . '/assets/owo/paopao/' . str_replace('%', '', urlencode($match[1])) . '_2x.png" alt="表情"/>';
|
|
},
|
|
$text
|
|
);
|
|
$text = preg_replace_callback(
|
|
'/\:\@\(\s*(高兴|小怒|脸红|内伤|装大款|赞一个|害羞|汗|吐血倒地|深思|不高兴|无语|亲亲|口水|尴尬|中指|想一想|哭泣|便便|献花|皱眉|傻笑|狂汗|吐|喷水|看不见|鼓掌|阴暗|长草|献黄瓜|邪恶|期待|得意|吐舌|喷血|无所谓|观察|暗地观察|肿包|中枪|大囧|呲牙|抠鼻|不说话|咽气|欢呼|锁眉|蜡烛|坐等|击掌|惊喜|喜极而泣|抽烟|不出所料|愤怒|无奈|黑线|投降|看热闹|扇耳光|小眼睛|中刀)\s*\)/is',
|
|
function ($match) {
|
|
return '<img class="owo_image lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="' . Helper::options()->themeUrl . '/assets/owo/aru/' . str_replace('%', '', urlencode($match[1])) . '_2x.png" alt="表情"/>';
|
|
},
|
|
$text
|
|
);
|
|
return $text;
|
|
}
|
|
|
|
/* 格式化留言回复 */
|
|
function _parseLeavingReply($text)
|
|
{
|
|
if (_checkXSS($text)) {
|
|
echo "该回复疑似异常,已被系统拦截!";
|
|
} else {
|
|
$text = strip_tags($text);
|
|
$text = _parseReply($text);
|
|
echo preg_replace('/\{!\{([^\"]*)\}!\}/', '<img class="draw_image" src="$1" alt="画图"/>', $text);
|
|
}
|
|
}
|
|
|
|
/* 格式化侧边栏回复 */
|
|
function _parseAsideReply($text, $type = true)
|
|
{
|
|
if (_checkXSS($text)) {
|
|
echo "该回复疑似异常,已被系统拦截!";
|
|
} else {
|
|
$text = strip_tags($text);
|
|
$text = preg_replace('/\{!\{([^\"]*)\}!\}/', '# 图片回复', $text);
|
|
if ($type) echo _parseReply($text);
|
|
else echo $text;
|
|
}
|
|
}
|
|
|
|
/* 过滤侧边栏最新回复的跳转链接 */
|
|
function _parseAsideLink($link)
|
|
{
|
|
echo str_replace("#", "?scroll=", $link);
|
|
}
|