2024-09-24 09:43:45
给网站添加外链go跳转,可以给外链添加跳转过渡的动画效果,既美观还能避免权重流失。分享以下两款示例和代码。
第一款:
代码如下:
<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width,height=device-height, initial-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="robots" content="noindex,follow">
<title>加载中</title>
<meta http-equiv="refresh" content="3;url=">
<style>
body{font-weight:100;margin:0}body{-webkit-tap-highlight-color:transparent;background-color:#222428;font-size:100%;font-family:Open Sans;height:100%}.loader{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-mos-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default;width:80%;overflow:visible}.loader,.loader div{position:absolute;height:36px}.loader div{width:30px;margin:0 10px;opacity:0;animation:move 2s linear infinite;-o-animation:move 2s linear infinite;-moz-animation:move 2s linear infinite;-webkit-animation:move 2s linear infinite;transform:rotate(180deg);-o-transform:rotate(180deg);-moz-transform:rotate(180deg);-webkit-transform:rotate(180deg);color:#fff;font-size:3em}.loader div:nth-child(8):before{background:#db2f00}.loader div:nth-child(8):before,.loader div:nth-child(9):before{content:'';position:absolute;bottom:-15px;left:0;width:30px;height:30px;border-radius:100%}.loader div:nth-child(9):before{background:#f2f2f2}.loader div:nth-child(10):before{bottom:-15px;height:30px;background:#13a3a5}.loader div:after,.loader div:nth-child(10):before{content:'';position:absolute;left:0;width:30px;border-radius:100%}.loader div:after{bottom:-40px;height:5px;background:#39312d}.loader div:nth-child(2){animation-delay:.2s;-o-animation-delay:.2s;-moz-animation-delay:.2s;-webkit-animation-delay:.2s}.loader div:nth-child(3){animation-delay:.4s;-o-animation-delay:.4s;-webkit-animation-delay:.4s}.loader div:nth-child(4){animation-delay:.6s;-o-animation-delay:.6s;-moz-animation-delay:.6s;-webkit-animation-delay:.6s}.loader div:nth-child(5){animation-delay:.8s;-o-animation-delay:.8s;-moz-animation-delay:.8s;-webkit-animation-delay:.8s}.loader div:nth-child(6){animation-delay:1s;-o-animation-delay:1s;-moz-animation-delay:1s;-webkit-animation-delay:1s}.loader div:nth-child(7){animation-delay:1.2s;-o-animation-delay:1.2s;-moz-animation-delay:1.2s;-webkit-animation-delay:1.2s}.loader div:nth-child(8){animation-delay:1.4s;-o-animation-delay:1.4s;-moz-animation-delay:1.4s;-webkit-animation-delay:1.4s}.loader div:nth-child(9){animation-delay:1.6s;-o-animation-delay:1.6s;-moz-animation-delay:1.6s;-webkit-animation-delay:1.6s}.loader div:nth-child(10){animation-delay:1.8s;-o-animation-delay:1.8s;-moz-animation-delay:1.8s;-webkit-animation-delay:1.8s}@keyframes move{0%{right:0;opacity:0}35%{right:41%}35%,65%{-webkit-transform:rotate(0);transform:rotate(0);opacity:1}65%{right:59%}to{right:100%;-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}}@-webkit-keyframes move{0%,to{opacity:0}0%{right:0}35%{right:41%}35%,75%{-webkit-transform:rotate(0);transform:rotate(0);opacity:1}75%{right:59%}to{right:100%;-webkit-transform:rotate(-180deg);transform:rotate(-180deg);opacity:0}}
</style>
</head>
<body class="ie8">
<div class="loader">
<div> L </div>
<div> O </div>
<div> A </div>
<div> D </div>
<div> I </div>
<div> N </div>
<div> G </div>
<div> </div>
<div> </div>
<div> </div>
</div>
</body></html>
第二款:
代码如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="refresh" content="1;url=">
<title><?php echo $title;?></title>
<style>
body{background:#000}.loading{-webkit-animation:fadein 2s;-moz-animation:fadein 2s;-o-animation:fadein 2s;animation:fadein 2s}@-moz-keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-o-keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes fadein{from{opacity:0}to{opacity:1}}.spinner-wrapper{position:absolute;top:0;left:0;z-index:300;height:100%;min-width:100%;min-height:100%;background:rgba(255,255,255,0.93)}.spinner-text{position:absolute;top:50%;left:50%;margin-left:-90px;margin-top: 2px;color:#BBB;letter-spacing:1px;font-weight:700;font-size:36px;font-family:Arial}.spinner{position:absolute;top:50%;left:50%;display:block;margin-left:-160px;width:1px;height:1px;border:25px solid rgba(100,100,100,0.2);-webkit-border-radius:50px;-moz-border-radius:50px;border-radius:50px;border-left-color:transparent;border-right-color:transparent;-webkit-animation:spin 1.5s infinite;-moz-animation:spin 1.5s infinite;animation:spin 1.5s infinite}@-webkit-keyframes spin{0%,100%{-webkit-transform:rotate(0deg) scale(1)}50%{-webkit-transform:rotate(720deg) scale(0.6)}}@-moz-keyframes spin{0%,100%{-moz-transform:rotate(0deg) scale(1)}50%{-moz-transform:rotate(720deg) scale(0.6)}}@-o-keyframes spin{0%,100%{-o-transform:rotate(0deg) scale(1)}50%{-o-transform:rotate(720deg) scale(0.6)}}@keyframes spin{0%,100%{transform:rotate(0deg) scale(1)}50%{transform:rotate(720deg) scale(0.6)}}
</style>
</head>
<body>
<div class="loading">
<div class="spinner-wrapper">
<span class="spinner-text">页面加载中,请稍候...</span>
<span class="spinner"></span>
</div>
</div>
</body>
</html>
2024-08-28 16:05:15
推荐使用qq邮箱:
步骤:
//评论邮件通知配置
require_once EMLOG_ROOT.'/include/lib/PHPMailer/PHPMailerAutoload.php';
define('MAIL_SMTP', Option::get("MAIL_SMTP"));
define('MAIL_PORT', Option::get('MAIL_PORT')); //smtp端口
define('MAIL_SENDEMAIL', Option::get('MAIL_SENDEMAIL')); //发信邮箱
define('MAIL_PASSWORD',Option::get('MAIL_PASSWORD')); //发信密码
define('MAIL_TOEMAIL', Option::get('MAIL_TOEMAIL')); //收信邮箱
define('MAIL_SENDTYPE', Option::get('MAIL_SENDTYPE'));
define('SEND_MAIL', Option::get('SEND_MAIL'));
define('REPLY_MAIL', Option::get('REPLY_MAIL'));
/**
* 发送邮件
*/
function sendmail_do($mailserver, $port, $mailuser, $mailpass, $mailto, $subject, $content,$fromname){
$phpMailer = new PHPMailer();
$phpMailer->isSMTP();
$phpMailer->SMTPAuth = true;
$phpMailer->Host = $mailserver;
$phpMailer->Port = $port;
$phpMailer->Username = $mailuser;
$phpMailer->Password = $mailpass;
$phpMailer->isHTML(true);
if ('none' != "ssl") {
$phpMailer->SMTPSecure = "ssl";
}
$phpMailer->setFrom($mailuser, $mailuser);
$phpMailer->addAddress($mailto, $mailto);
$phpMailer->Subject = $subject;
$phpMailer->Body = $content;
if(!$phpMailer->send()) {
return false;
} else {
return true;
}
}
<?php
/**
* 发表评论
*
* @copyright (c) Emlog All Rights Reserved
*/
class Comment_Controller {
function addComment($params) {
$name = isset($_POST['comname']) ? addslashes(trim($_POST['comname'])) : '';
$content = isset($_POST['comment']) ? addslashes(trim($_POST['comment'])) : '';
$mail = isset($_POST['commail']) ? addslashes(trim($_POST['commail'])) : '';
$url = isset($_POST['comurl']) ? addslashes(trim($_POST['comurl'])) : '';
$imgcode = isset($_POST['imgcode']) ? addslashes(trim(strtoupper($_POST['imgcode']))) : '';
$blogId = isset($_POST['gid']) ? intval($_POST['gid']) : -1;
$pid = isset($_POST['pid']) ? intval($_POST['pid']) : 0;
$send = isset($_POST['send']) ? addslashes(trim($_POST['send'])) : 'y';
if (ISLOGIN === true) {
$CACHE = Cache::getInstance();
$user_cache = $CACHE->readCache('user');
$name = addslashes($user_cache[UID]['name_orig']);
$mail = addslashes($user_cache[UID]['mail']);
$url = addslashes(BLOG_URL);
}
if ($url && strncasecmp($url,'http',4)) {
$url = 'http://'.$url;
}
doAction('comment_post');
$Comment_Model = new Comment_Model();
$Comment_Model->setCommentCookie($name,$mail,$url);
if($Comment_Model->isLogCanComment($blogId) === false) {
emMsg('评论失败:该文章已关闭评论');
} elseif ($Comment_Model->isCommentExist($blogId, $name, $content) === true) {
emMsg('评论失败:已存在相同内容评论');
} elseif (ROLE == ROLE_VISITOR && $Comment_Model->isCommentTooFast() === true) {
emMsg('评论失败:您提交评论的速度太快了,请稍后再发表评论');
} elseif (empty($name)) {
emMsg('评论失败:请填写姓名');
} elseif (strlen($name) > 20) {
emMsg('评论失败:姓名不符合规范');
} elseif ($mail != '' && !checkMail($mail)) {
emMsg('评论失败:邮件地址不符合规范');
} elseif (ISLOGIN == false && $Comment_Model->isNameAndMailValid($name, $mail) === false) {
emMsg('评论失败:禁止使用管理员昵称或邮箱评论');
} elseif (!empty($url) && preg_match("/^(http|https)\:\/\/[^<>'\"]*$/", $url) == false) {
emMsg('评论失败:主页地址不符合规范','javascript:history.back(-1);');
} elseif (empty($content)) {
emMsg('评论失败:请填写评论内容');
} elseif (strlen($content) > 8000) {
emMsg('评论失败:内容不符合规范');
} elseif (ROLE == ROLE_VISITOR && Option::get('comment_needchinese') == 'y' && !preg_match('/[\x{4e00}-\x{9fa5}]/iu', $content)) {
emMsg('评论失败:评论内容需包含中文');
} elseif (ISLOGIN == false && Option::get('comment_code') == 'y' && session_start() && (empty($imgcode) || $imgcode !== $_SESSION['code'])) {
emMsg('评论失败:验证码错误');
} else {
$_SESSION['code'] = null;
if($send=='y') {
if(SEND_MAIL == 'Y' || REPLY_MAIL == 'Y'){
$comname = isset($_POST['comname']) ? addslashes(trim($_POST['comname'])) : '';
$comment = isset($_POST['comment']) ? addslashes(trim($_POST['comment'])) : '';
$commail = isset($_POST['commail']) ? addslashes(trim($_POST['commail'])) : '';
$comurl = isset($_POST['comurl']) ? addslashes(trim($_POST['comurl'])) : '';
$gid = isset($_POST['gid']) ? intval($_POST['gid']) : (isset($_GET['gid']) ? intval($_GET['gid']) : -1);
$pid = isset($_POST['pid']) ? intval($_POST['pid']) : 0;
$http_referer = empty($_SERVER['HTTP_REFERER']) ? BLOG_URL : $_SERVER['HTTP_REFERER'];
$blogname = Option::get('blogname');
$Log_Model = new Log_Model();
$logData = $Log_Model->getOneLogForHome($gid);
$log_title = $logData['log_title'];
$subject = "文章《{$log_title}》收到了新的评论";
if(!empty($commail)){$commail = $commail;}else{$commail = '未填写';};
if(!empty($comurl)){$comurl = $comurl;}else{$comurl = '未填写';};
if(strpos(MAIL_TOEMAIL, '@139.com') === false){
$comment = '<style type="text/css">.qmbox{margin:0;padding:0;font-family:微软雅黑;background-color:#fff}.qmbox a{text-decoration:none;}.qmbox .box{position:relative;width:780px;padding:0;margin:0 auto;border:1px solid #ccc;font-size:13px;color:#333;}.qmbox .header{width:100%;padding-top:50px;}.qmbox .logo{float:right;padding-right:50px;}.qmbox .clear{clear:both;}.qmbox .content{width:585px;padding:0 50px;}
.qmbox .content p{line-height:40px;word-break:break-all;}.qmbox .content ul{padding-left:40px;}
.qmbox .xiugai{height:50px;line-height:30px;font-size:16px;}.qmbox .xiugai a{color:#0099ff;}
.qmbox .fuzhi{word-break:break-all;color:#b0b0b0;}.qmbox .table{border:1px solid #ccc;border-left:0;border-top:0;border-collapse:collapse;}
.qmbox .table td{border:1px solid #ccc;border-right:0;border-bottom:0;padding:6px;min-width:160px;}.qmbox .gray{background:#f5f5f5;}
.qmbox .no_indent{font-weight:bold;height:40px;line-height:40px;color:#737171}.qmbox .no_indent a{text-decoration:none !important;color:#737171}.qmbox .no_indent span{padding-right:20px;}.qmbox .no_after{height:40px;line-height:40px; text-align:right;font-weight:bold}
.qmbox .btnn{padding:50px 0 0 0;font-weight:bold}.qmbox .btnn a{padding-right:20px;text-decoration:none !important;color:#000;}.qmbox .need{background:#fa9d00;}
.qmbox .noneed{background:#3784e0;}.qmbox .footer{width:100%;height:10px;padding-top:20px;}</style><div class="qmbox"><div class="box"><div class="header"></div><div class="content"><p class="no_indent" style="color:#383838">文章《'.$log_title.'》最新评论内容:</p><p style="line-height:25px;padding:10px;background:#5C96BE;border-radius:4px;color:#fff;">'.$comment.'</p
>
<p class="no_indent"><span>评论作者:'.$comname.'</span></p>
<p>时间:'.date("Y-m-d",time()).'</p>
<p>状态:通过</p>
<p>本邮件为'.$blogname.'自动发送,请勿直接回复</p>
<table cellspacing="0" class="table"> </table><div class="btnn"><a href="'.Url::log($gid).'" target="_blank">查看该文章</a></div></div><div class="footer clear"></div></div></div>';
}else{
$comment = $comment;
}
if(SEND_MAIL == 'Y'){
if(ROLE == 'visitor'){
sendmail_do(MAIL_SMTP, MAIL_PORT, MAIL_SENDEMAIL, MAIL_PASSWORD, MAIL_TOEMAIL, $subject, $comment,$blogname);
}
}
if(REPLY_MAIL == 'Y'){
if($pid > 0){
$DB = Option::EMLOG_VERSION >= '5.3.0' ? Database::getInstance() : MySql::getInstance();
$Comment_Model = new Comment_Model();
$pinfo = $Comment_Model->getOneComment($pid);
$custom=empty($comname) ? '博主':$comname;
if(!empty($pinfo['mail'])){
$subject = "您在【{$blogname}】发表的评论收到了回复";
$reply = '<style type="text/css">.qmbox{margin:0;padding:0;font-family:微软雅黑;background-color:#fff}.qmbox a{text-decoration:none;}.qmbox .box{position:relative;width:780px;padding:0;margin:0 auto;border:1px solid #ccc;font-size:13px;color:#333;}.qmbox .header{width:100%;padding-top:50px;}.qmbox .logo{float:right;padding-right:50px;}.qmbox .clear{clear:both;}.qmbox .content{width:585px;padding:0 50px;}
.qmbox .content p{line-height:40px;word-break:break-all;}.qmbox .content ul{padding-left:40px;}
.qmbox .xiugai{height:50px;line-height:30px;font-size:16px;}.qmbox .xiugai a{color:#0099ff;}
.qmbox .fuzhi{word-break:break-all;color:#b0b0b0;}.qmbox .table{border:1px solid #ccc;border-left:0;border-top:0;border-collapse:collapse;}
.qmbox .table td{border:1px solid #ccc;border-right:0;border-bottom:0;padding:6px;min-width:160px;}.qmbox .gray{background:#f5f5f5;}
.qmbox .no_indent{font-weight:bold;height:40px;line-height:40px;}.qmbox .no_after{height:40px;line-height:40px; text-align:right;font-weight:bold}
.qmbox .btnn{padding:50px 0 0 0;font-weight:bold}.qmbox .btnn a{padding-right:20px;text-decoration:none !important;color:#000;}.qmbox .need{background:#fa9d00;}
.qmbox .noneed{background:#3784e0;}.qmbox .footer{width:100%;height:10px;padding-top:20px;}</style><div class="qmbox"><div class="box"><div class="header"></div><div class="content"><p class="no_indent">'.$pinfo['poster'].' 您好,您之前在《'.$log_title.'》发表的的评论:</p><p style="line-height:25px;padding:10px;background:#EDECF2;border-radius:4px;">'.$pinfo['comment'].'</p><p class="no_indent">'. $custom.' 给您的回复:</p><p style="line-height:25px;padding:10px;background:#5C96BE;border-radius:4px;color:#fff;">'.$content.'</p> <p>时间:'.date("Y-m-d",time()).'</p>
<p>状态:通过</p>
<p>本邮件为'.$blogname.'自动发送,请勿直接回复.</p> <table cellspacing="0" class="table"> </table><div class="btnn"><a href="'.Url::log($gid).'#'.$pid.'" target="_blank">查看该文章</a></div></div><div class="footer clear"></div></div></div>';
sendmail_do(MAIL_SMTP, MAIL_PORT, MAIL_SENDEMAIL, MAIL_PASSWORD, $pinfo['mail'], $subject, $reply,$blogname);
}
}
}
}else{
//return;
}
}
$Comment_Model->addComment($name, $content, $mail, $url, $imgcode, $blogId, $pid);
}
}
}
2024-08-26 00:28:16
周五晚上7:20左右,家里群里二姐的一则消息,打破了群里的平静,说 表哥赵云 不在了。
看到消息的第一反应就是很无厘头,为什么突然说这话?是打错字了?一开始我并没有联想,是我大姨家赵云表哥。说我大姨给我妈打电话了,深圳派出所通知让去的,说14号(8.14)人就不在了。可为什么今天8.23号才通知呢,“没了的” 原因也不知晓,意外?疾病?也不敢贸然猜测。我很难把赵云 和“亖”联系在一起,至少这几十年内我不会把他们联系到一起,直到现在我都不愿意把那个字打出来,很震惊,错愕,不敢相信,久久不能平静。
表哥身体健康肯定没疾病,且他正值青壮年才30多岁,还未结婚,怎么人生就是戛然而止了呢?我更多的是想不通。大姨家有四个男孩子,他是老大 是我大表哥 ,基本每年春节我们总会相聚在一起的,无论是去我们舅舅家,还是到他们家。和大表哥真正交流不多,但毕竟认识相处了几十年了,他的性格很好 稳重、热情。我又对我大姨家感情亲近,小时候他们家是开饭店的,所以爱去他们家,还有 刘见(四表哥)小时候在我们家寄宿上小学所以感情比较深厚,对几个表哥们印象都比较好。
这些年赵云一直未结婚,也面对家里面的压力,最后一次听家里讲起他,是去年五一要结婚的,不会最后一些原因也没结成。之前在我大姐未结婚的时候,家里人都催我姐,她就会以赵云为挡箭牌,说那个“焖冬瓜”还没结婚呢,彼时我妈就会笑骂我姐,当然大姐只是打趣调侃罢了,并无恶意。去年春节没有见到他,在外工作没有回来,至于原因大概是我上面说到的,未曾想 前年那次相见竟是人生中的最后一次见到他。不由得感叹,人生无常,不知道什么时候见到的人就是最后一面了。
昨天早上听我二姐说 姨夫已和四舅去深圳那边了,应该很快就会有个结果了,无论什么原因结果都太沉重了。今天听我大姐说 我妈有问我姐夫 手机可以在不知道密码情况解锁并且保留手机数据不,结果不行 如果恢复出厂设置就会没有任何数据了,我姐夫是在小米工作的,可能是帮我大姨家那边问的,也是想获得我表哥他手机里面的信息吧,看网上抖音里有那种手机可以解锁且可以保留手机数据的,不知道真的假的。
感觉人生危机四伏,一辈子好好活着,能平静地过完一生,已是很难的了。其实我 们普通人平安健康已是最大的幸福了,也祝愿所有人。
R.I.P. 赵云
2024-08-07 22:16:33
<?php
/**
* Emlog emoji表情支持 升级补丁
*
* 将此文件放到Emlog根目录下执行一次即可
* 需要MySQL版本 >= 5.5
*
*/
require 'config.php';
define('DS', DIRECTORY_SEPARATOR);
$db = new mysqli(DB_HOST, DB_USER, DB_PASSWD, DB_NAME);
$db->set_charset('utf8');
$sql = "SELECT VERSION()";
$query = $db->query($sql)->fetch_array(MYSQLI_NUM);
$version = $query[0];
if (version_compare($version, '5.5.0') < 0) {
echo "Need mysql >= 5.5.0";
exit();
}
$column_list = array(
'blog' => array(
array('title', 'varchar(255)'),
array('content', 'longtext'),
array('excerpt', 'longtext')
),
'comment' => array(
array('poster', 'varchar(20)'),
array('comment', 'text')
),
'twitter' => array(
array('content', 'text')
),
'reply' => array(
array('name', 'varchar(20)'),
array('content', 'text')
),
/* 如果使用 YXMarkDown插件可去除注释
'yxmd' => array(
array('content','text')
)
*/
);
foreach ($column_list as $key => $value) {
$table_name = DB_PREFIX . $key;
foreach ($value as $column) {
$sql = "ALTER TABLE `{$table_name}` MODIFY `{$column[0]}` {$column[1]} CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci";
$db->query($sql);
echo "Update {$table_name} -> {$column[0]}<br />\r\n";
}
}
$mysql_lib = dirname(__FILE__) . DS . 'include' . DS . 'lib' . DS. 'mysql.php';
$mysql_content = file_get_contents($mysql_lib);
$mysql_content = str_replace("SET NAMES 'utf8'", "SET NAMES 'utf8mb4'", $mysql_content);
file_put_contents($mysql_lib, $mysql_content);
echo "Update mysql lib<br />\r\n";
$mysqli_lib = dirname(__FILE__) . DS . 'include' . DS . 'lib' . DS. 'mysqlii.php';
$mysqli_content = file_get_contents($mysqli_lib);
$mysqli_content = str_replace("set_charset('utf8')", "set_charset('utf8mb4')", $mysqli_content);
file_put_contents($mysqli_lib, $mysqli_content);
echo "Update mysqli lib<br />\r\n";
echo "Done";
?>
写了个用于TinyMCE 编辑器的emoji表情符插件:
tinymce.PluginManager.add("emoji", function(editor, url) {
// 定义一个包含emoji的数组
var emojis = [
"?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
"?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
"?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
"?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
"?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
"?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
"?", "?", "?", "?", "?", "?", "?", "?", "✊", "?",
"?", "?", "✌️", "?", "?", "?", "?", "?", "?", "☝️",
"✋", "?", "?", "?", "?", "?", "?", "?", "✍️", "?"
];
// 表情符号表格生成函数
function generateEmojiTable() {
var html = '<table role="list" class="mce-grid">';
var rowCount = Math.ceil(emojis.length / 8); // 每行8个emoji
var emojiTooltips = [
"嘿嘿", "哈哈", "大笑", "嘻嘻", "斜眼笑", "苦笑", "笑哭了", "笑得满地打滚",
"羞涩微笑", "微笑天使", "呵呵", "倒脸", "眨眼", "松了口气", "花痴", "飞吻",
"亲亲", "微笑亲亲", "羞涩亲亲", "好吃", "吐舌", "眯眼吐舌", "单眼吐舌", "书呆子脸",
"墨镜笑脸", "得意", "不高兴", "失望", "沉思", "担心", "困扰", "微微不满",
"痛苦", "困惑", "累", "累死了", "哭", "放声大哭", "傲慢", "生气",
"怒火中烧", "红脸", "吓死了", "害怕", "抱抱", "想一想", "沉默", "无语",
"龇牙咧嘴", "翻白眼", "缄默", "睡着了", "感冒", "发财", "恶魔微笑", "小丑脸",
"大便", "鬼", "头骨", "双眼", "脚印", "双手张开", "举双手", "鼓掌",
"握手", "拇指向上", "拇指向下", "出拳", "举起拳头", "朝左的拳头", "朝右的拳头", "交叉的手指",
"胜利手势", "摇滚", "OK", "反手食指向左指", "反手食指向右指", "反手食指向上指", "反手食指向下指", "食指向上指",
"举起手", "立起的手背", "手掌", "瓦肯举手礼", "挥手", "给我打电话", "肌肉", "竖中指",
"写字", "双手合十",
];
for (var i = 0; i < rowCount; i++) {
html += '<tr>';
for (var j = 0; j < 8 && i * 8 + j < emojis.length; j++) {
var emoji = emojis[i * 8 + j];
var tooltip = emojiTooltips[i * 8 + j] || ''; // 使用相应的提示文本,如果没有则默认为空字符串
html += '<td class="emoji-cell"><a href="#" data-mce-content="' + emoji + '" tabindex="-1" role="option" aria-label="' + emoji + '" title="' + (emojiTooltips[i * 8 + j] || emoji) + '" style="font-size: 20px; display:inline-block; text-align:center; vertical-align:middle;">' + emoji + '</a></td>';
}
html += '</tr>';
}
html += '</table>';
return html;
}
// 添加按钮
editor.addButton('emoji', {
image: url + '/emoji.svg',
type: 'panelbutton',
panel: {
role: 'application',
autohide: true,
html: generateEmojiTable(),
onclick: function(e) {
var target = editor.dom.getParent(e.target, 'a');
if (target) {
editor.insertContent(target.getAttribute('data-mce-content'));
this.hide();
}
}
},
tooltip: 'emoji'
});
// css式
var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = '.mce-container .emoji-cell a:hover {text-decoration: none; background-color: #f0f0f0;}';
document.head.appendChild(style);
});
2024-07-06 00:13:48
晚上突然收到了腾讯云的欠费账单,有点疑惑,记得前几天刚充值了费用。
点开看了一下,是腾讯云内容分发网络CDN
和COS对象存储
的欠费账单,有好几条账单,一共总应该欠了78元 。此前每个月腾讯CDN账单也就是一两块钱左右,登上腾讯云后台看了监控和日志,在7.5号晚上20点-23点时间段,流量异常的高。
中国境内:CDN 带宽峰值105.85Mbps
、CDN总流量114.9GB
、CDN总请求数5.33万次
我网站一般CDN带宽峰值不超过2M 通常400Kbps上下,一天CDN流量在200~300MB上下,一个月CDN用量流量在7~8GB左右,这几个小时用了我一年多的CDN流量了。我还是高估了人性,网站有好多年了 一直平安无事,我这小破站没什么内容,流量更是少的可怜,“大佬们 ”平时也看不上我这小破站 ,就没有考虑到恶意攻击或流量盗刷此类的风险,没想到还是被搞了,最后不得不做了一些防护。
2024.7.6 又被搞了,真顶不住了,腾讯云CDN和COS储存都是先计量后收费,CDN和对象存储COS 又欠费了83元,这样搞有意思么 ,rnmmp ......
中国境内:CDN 带宽峰值58.8Mbps
、CDN总流量13.55GB
、CDN总请求数50.81万次
已经设置了CDN的域名控制管理:防盗链设置 referer白名单、用量封顶配置,不知是不是我设置不对,怎么还是被刷了呢
2024.7.5-2024.7.8 被刷的量:
2024.7.5-2024.7.8 对象存储COS:
我总共内容存储才63M 可谓是很少了吧,正常上个月才用了126M外网下行流量,mmp这次给我刷了281GB
产生费用:
我一年CDN加上COS最多十几元,这下好了用了我几年的费用了?。害人之心不可有,防人之心不可无,做了以下防护策略:
内容分发网络CDN:
对象存储COS:
私有读写
反正,最近每天晚上时间一到就被刷,换着IP刷,这家伙真是在作死的边缘徘徊,不知道自己在犯罪么,看有的站长已经包报网警了。现在我即便是做了防护策略也有被刷,肯定是不能完全避免的。
目前GitHub的项目ban-pcdn-ip来收集这些恶意IP段。
访问控制:
在控制台为域名针对性的开启访问控制功能(免费),以避免产生不必要的流量带宽消耗。
访问控制项
|
功能说明
|
通过对用户 HTTP Request Header 中 referer 字段的值设置访问控制策略,从而限制访问来源,避免恶意用户盗刷。
|
|
通过对用户请求端 IP 配置访问控制策略,可以有效限制访问来源,阻拦恶意 IP 盗刷、攻击等问题。
|
|
通过对用户端 IP 在每一个节点每一秒钟访问次数进行限制,可进行高频 CC 攻击抵御、防恶意用户盗刷等。
|
|
配置后,客户端在发起请求时需要按照配置计算签名并携带至服务端,CDN 节点进行服务端校验,校验通过后才继续放行。
|
|
通过对用户 HTTP 请求投中的 User-Agent 进行规则判断,按需放行或拒绝用户访问。
|
|
腾讯云 CDN 为您提供了下行限速配置,对服务端单链接下行最大吞吐速度进行设置。
|
流量管理:
开启流量/带宽管理的相关配置(免费),监控域名流量或带宽的消耗情况并接收告警,及时了解流量消耗的相关信息。
流量管理项
|
功能说明
|
如果您想要限制域名的流量/带宽使用上限,可以使用用量封顶配置功能。 当统计周期(5分钟)产生的流量/带宽超出所设置阈值时,关闭 CDN 服务(全部请求返回404),以避免产生过高的账单。
|
|
您可以使用腾讯云可观测平台的监控功能,设置对 CDN 产品下指定域名或项目的流量带宽使用情况监控,达到设定的峰值后将会给用户发送告警(短信、邮件和微信),便于更加及时地发现潜在风险。
|
|
如果您是流量计费用户,可以在控制台-流量包管理处设置告警策略,当所有有效流量包余额不足设定的比例时发送告警。
|