|
|
主站首页:
- <!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport">
- <title>中国迈迷网 - 迈克尔·杰克逊中国歌迷网站 - 迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上平台</title>
- <meta name="Keywords" content="迈克尔, 杰克逊, 中国迈迷网站, 中文歌迷网站, 迈克尔杰克逊, 迈克尔·杰克逊, 麥可傑克森, 傑克森, 麥可, Michael, Jackson, King of Pop, Michael Jackson, Chinese fanclub, fanclub, 歌迷, 中国迈迷网, MJJLB, MJ, 爱MJJ的烙饼, 偶像, 音乐, 流行音乐之王, 流行之王, 米高積遜, 積遜, 米高, 娱乐, 欧美音乐">
- <meta name="Description" content="中国迈迷网成立于2025年1月12日,是迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上平台,也是一个集MJ资讯共享与MJ文化传播为一体的迈迷庇护所。">
- <link rel="shortcut icon" href="http://mjjcfpw.mjjlb.com/mjjlb.jpg">
- <link rel="shortcut icon" href="http://mjjcfpw.mjjlb.com/mjjlb.jpg">
- <style>
- :root{
- --primary:#cc0000;
- --dark:#a90000;
- --light:#fff;
- --max-width:925px;
- }
- *{margin:0;padding:0;box-sizing:border-box;}
- body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif;background:#000;color:var(--light);}
- header{background:var(--primary);padding:20px 0;text-align:center;}
- header img{max-width:100%;height:auto;}
- .banner{position:relative;max-width:var(--max-width);margin:0 auto;}
- .banner img{width:100%;display:block;}
- nav{background:var(--dark);padding:30px 0;}
- .nav-inner{max-width:var(--max-width);margin:0 auto;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;}
- .nav-inner a{flex:1 1 100px;text-align:center;}
- .nav-inner img{max-width:100%;height:auto;border:0;transition:all 0.3s cubic-bezier(0.68,-0.55,0.2650.265,1.55);}
- .nav-inner a:hover img{transform:scale(1.1);filter:drop-shadow(0 0 15px rgba(255,215,0,0.8)) brightness(1.2);}
- .nav-inner a:active img{transform:scale(0.95);transition:all 0.1s;}
- @keyframes shine{0%{background-position:-200% center;}100%{background-position:200% center;}}
- .nav-inner a{position:relative;overflow:hidden;}
- .nav-inner a::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,0.4),transparent);transition:left 0.5s;z-index:1;pointer-events:none;}
- .nav-inner a:hover::before{left:100%;transition:left 0.6s ease-in-out;}
- #bgAudio{display:none;}
- #musicBtn{
- position:fixed;top:20px;right:20px;
- width:50px;height:50px;background:#cc0000;color:#fff;
- border:none;border-radius:50%;cursor:pointer;z-index:999;
- display:flex;align-items:center;justify-content:center;
- font-size:14px;font-weight:bold;user-select:none;
- }
- @media(max-width:600px){
- .nav-inner{flex-direction:column;}
- }
- @keyframes fadeInUp{
- from{
- opacity:0;
- transform:translateY(30px);
- }
- to{
- opacity:1;
- transform:translateY(0);
- }
- }
-
- img{
- animation:fadeInUp 1s ease-out forwards;
- }
-
- header img{animation-delay:0.1s;}
- .nav-inner a:nth-child(1) img{animation-delay:1.0s;}
- .nav-inner a:nth-child(1) img{animation-delay:1.0s;}
- </style>
- </head>
- <body>
- <audio id="bgAudio" loop>
- <source src="http://mjjcfpw.mjjlb.com/mjjcfpw.mp3" type="audio/mpeg">
- 您的浏览器不支持 audio 标签。
- </audio>
- <button id="musicBtn">播放</button>
- <header>
- <a href="http://mjjcfpw.mjjlb.com" target="_blank">
- <img src="http://mjjcfpw.mjjlb.com/mjjchina.png" alt="MJJLB">
- </a>
- </header>
- <section>
- <div class="nav-inner">
- <p>中国迈迷网 - 迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上平台</p>
- <a href="http://news.mjjlb.com/mjjstation.php" target="_blank">
- <img src="http://bbs.mjjlb.com/site.png" alt="进入主页">
- </a>
- <a href="http://forum.mjjlb.com/mjjcfpw/index.php" target="_blank">
- <img src="http://bbs.mjjlb.com/forum.png" alt="进入论坛">
- </a>
- </div>
- </section>
- <nav>
- <p style="text-align:center;color:white;margin:0 auto;max-width:925;">
- © 迈克尔·杰克逊中国歌迷网站(MICHAEL JOSEPH JACKSON CHINESE FANS' PORTAL WEBSITE)</p>
- </nav>
- <script>
- (function(){
- const audio = document.getElementById('bgAudio');
- const btn = document.getElementById('musicBtn');
- let playing = false;
- btn.addEventListener('click', () => {
- if (playing) {
- audio.pause();
- btn.textContent = '播放';
- } else {
- audio.play().catch(e=>console.log('需用户交互才能自动播放',e));
- btn.textContent = '暂停';
- }
- playing = !playing;
- });
- })();
- </script>
- </body>
- </html>
复制代码
网站主页:
- <!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport">
- <title>中国迈迷网 - 迈克尔·杰克逊中国歌迷网站 - 迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上平台</title>
- <meta name="Keywords" content="迈克尔, 杰克逊, 中国迈迷网站, 中文歌迷网站, 迈克尔杰克逊, 迈克尔·杰克逊, 麥可傑克森, 傑克森, 麥可, Michael, Jackson, King of Pop, Michael Jackson, Chinese fanclub, fanclub, 歌迷, 中国迈迷网, MJJLB, MJ, 爱MJJ的烙饼, 偶像, 音乐, 流行音乐之王, 流行之王, 米高積遜, 積遜, 米高, 娱乐, 欧美音乐">
- <meta name="Description" content="中国迈迷网成立于2025年1月12日,是迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上平台,也是一个集MJ资讯共享与MJ文化传播为一体的迈迷庇护所。">
- <link rel="shortcut icon" href="http://mjjcfpw.mjjlb.com/mjjcfpw.png">
- <style type="text/css">
- body {
- margin-left: 0px;
- margin-top: 0px;
- margin-right: 0px;
- margin-bottom: 0px;
- background-color: #131416;
- }
-
- #backgroundAudio {
- display: none;
- }
-
- .play-button {
- position: fixed;
- top: 20px;
- right: 20px;
- width: 50px;
- height: 50px;
- background-color: purple;
- color: white;
- border: none;
- border-radius: 50%;
- cursor: pointer;
- z-index: 100;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- .play-button i {
- font-size: 20px;
- }
- .top-left-gif {
- position: fixed;
- top: 10px;
- left: 10px;
- z-index: 101;
- width: 150px;
- height: auto;
- }
- </style>
- </head>
- <body>
- <audio id="backgroundAudio">
- <source src="http://mjjcfpw.mjjlb.com/mjjlb.mp3" type="audio/mpeg">
- </audio>
- <button class="play-button" id="playButton">
- <p>播放</p>
- </button>
- <a href="http://mjjcfpw.mjjlb.com" target="_blank">
- <img class="top-left-gif" src="http://mjjcfpw.mjjlb.com/mj.gif" alt="中国迈迷网站">
- </a>
- <table width="100%" border="0" cellpadding="0" cellspacing="0" background="http://mjjcfpw.mjjlb.com/michaeljackson.jpg" style="background-repeat: no-repeat;background-position: center top;">
- <tbody>
- <tr>
- <td height="100"> </td>
- </tr>
- <tr>
- <td>
- <table width="1083" border="0" align="center">
- <tbody>
- <tr>
- <td><img src="http://mjjcfpw.mjjlb.com/map.png" width="1083" height="478" border="0" usemap="#Map"></td>
- </tr>
- </tbody>
- </table>
- </td>
- </tr>
- <tr>
- <td height="180" valign="middle">
-
- </td>
- </tr>
- </tbody>
- </table>
- <map name="Map" id="Map">
- <area shape="rect" coords="147,252,298,322" href="http://blog.mjjlb.com" target="_blank">
- <area shape="rect" coords="617,92,771,169" href="http://pc.mjjlb.com" target="_blank">
- <area shape="rect" coords="775,172,929,246" href="http://news.mjjlb.com" target="_blank">
- <area shape="rect" coords="298,175,449,245" href="http://bbs.mjjlb.com" target="_blank">
- <area shape="rect" coords="298,95,449,164" href="http://www.mjjlb.com" target="_self">
- <area shape="rect" coords="619,174,773,248" href="http://m.mjjlb.com" target="_blank">
- </map>
- <script>
- document.addEventListener('DOMContentLoaded', function() {
- var audio = document.getElementById('backgroundAudio');
- var playButton = document.getElementById('playButton');
- var isPlaying = false;
-
- playButton.addEventListener('click', function() {
- if (isPlaying) {
- audio.pause();
- playButton.innerHTML = '<p>播放</p>';
- } else {
- audio.play().catch(function(error) {
- console.log('音频播放失败,可能需要用户交互才能播放音频。', error);
- });
- playButton.innerHTML = '<p>暂停</p>';
- }
- isPlaying = !isPlaying;
- });
- });
- </script>
- <style>
- body{margin:0}
- #mjjlb-share{
- position: fixed;
- top: 150px;
- right: 0;
- z-index: 9999;
- }
- .share-tab{
- width: 4px;
- height: 50px;
- background: linear-gradient(180deg,#9c7bff 0%,#7e3dff 100%);
- border-radius: 2px 0 0 2px;
- cursor: pointer;
- transition: width .25s ease;
- box-shadow: -2px 0 8px rgba(126,61,255,.35);
- }
- .share-panel{
- position: absolute;
- top: 0;
- right: 4px;
- width: 48px;
- padding: 12px 6px 8px;
- background: rgba(126,61,255,.85);
- backdrop-filter: blur(6px);
- border-radius: 8px 0 0 8px;
- box-shadow: 0 2px 16px rgba(126,61,255,.35);
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 10px;
- transform: translateX(100%);
- opacity: 0;
- transition: transform .35s ease, opacity .35s ease;
- }
- #mjjlb-share:hover .share-tab{width:8px}
- #mjjlb-share:hover .share-panel{transform:translateX(0);opacity:1}
- .share-panel img{width:28px;height:28px;border-radius:50%}
- </style>
- <div id="mjjlb-share">
- <div class="share-tab"></div>
- <div class="share-panel">
- <img src="https://img.icons8.com/color/48/ffffff/weibo.png" onclick="shareTo('weibo')" title="微博">
- <img src="https://img.icons8.com/color/48/ffffff/qq.png" onclick="shareTo('qzone')" title="QQ空间">
- <img src="https://img.icons8.com/ios-filled/50/ffffff/link.png" onclick="copyLink()" title="复制链接">
- </div>
- </div>
- <script>
- const openQr = ()=>window.open('https://api.qrserver.com/v1/create-qr-code/?size=300x300&data='+encodeURIComponent(location.href),'qrcode','width=320,height=320');
- const shareTo = t=>{
- const [title,url]=[document.title,location.href];
- t==='weibo'&&window.open(`https://service.weibo.com/share/share.php?title=${encodeURIComponent(title)}&url=${encodeURIComponent(url)}`);
- t==='qzone'&&window.open(`https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=${encodeURIComponent(url)}&title=${encodeURIComponent(title)}`);
- };
- const copyLink = ()=>navigator.clipboard.writeText(location.href).then(()=>alert('中国迈迷网的网址链接已经复制到剪贴板,快快分享给其他人。更多关于迈克尔·杰克逊的精彩内容,尽在MJJLB.com!'));
- </script>
- <footer style="text-align: center;">
- <p style="color: white; margin-top: 10px;">
- ©中国迈迷网 - 迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上平台
- </p>
- </footer>
- </body>
- </html>
复制代码
新闻主站:
- <!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport">
- <title>中国迈迷网 - MJJLB新闻主站</title>
- <meta name="Keywords" content="迈克尔, 杰克逊, 中国迈迷网, 中文歌迷网站, 迈克尔杰克逊, 迈克尔·杰克逊, 麥可傑克森, 傑克森, 麥可, Michael, Jackson, King of Pop, Michael Jackson, Chinese fanclub, fanclub, 歌迷, 火线新闻, MJJLB新闻主站, MJ, 爱MJJ的烙饼, 偶像, 音乐, 流行音乐之王, 流行之王, 米高積遜, 積遜, 米高, 娱乐, 欧美音乐">
- <meta name="Description" content="中国迈迷网 - MJJLB新闻主站(原迈克尔杰克逊讯息站)成立于2024年10月30日,是迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上新闻资讯平台,也是一个集MJ资讯共享与MJ文化传播为一体的迈迷庇护所。">
- <link rel="shortcut icon" href="http://news.mjjlb.com/mjjlb.png">
- <style type="text/css">
- body {
- margin-left: 0px;
- margin-top: 0px;
- margin-right: 0px;
- margin-bottom: 0px;
- background-color: #131416;
- }
-
- #backgroundAudio {
- display: none;
- }
-
- .play-button {
- position: fixed;
- top: 10px;
- left: 10px;
- width: 50px;
- height: 50px;
- background-color: red;
- color: white;
- border: none;
- border-radius: 50%;
- cursor: pointer;
- z-index: 100;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- .play-button i {
- font-size: 20px;
- }
- .bookmark-gif {
- position: fixed;
- top: 20px;
- right: 20px;
- z-index: 101;
- width: 150px;
- height: auto;
- cursor: pointer;
- border-radius: 4px;
- }
- </style>
- </head>
- <body>
- <audio id="backgroundAudio">
- <source src="http://news.mjjlb.com/mjjlb.mp3" type="audio/mpeg">
- </audio>
- <button class="play-button" id="playButton">
- <p>播放</p>
- </button>
- <img class="bookmark-gif" src="http://news.mjjlb.com/add.gif" alt="收藏本页" id="bookmarkGif">
- <table width="100%" border="0" cellpadding="0" cellspacing="0" background="http://news.mjjlb.com/michaeljackson.png" style="background-repeat: no-repeat;background-position: center top;">
- <tbody>
- <tr>
- <td height="100"> </td>
- </tr>
- <tr>
- <td>
- <table width="1083" border="0" align="center">
- <tbody>
- <tr>
- <td><img src="http://news.mjjlb.com/map.png" width="1083" height="478" border="0" usemap="#Map"></td>
- </tr>
- </tbody>
- </table>
- </td>
- </tr>
- <tr>
- <td height="180" valign="middle">
-
- </td>
- </tr>
- </tbody>
- </table>
- <map name="Map" id="Map">
- <area shape="rect" coords="147,252,298,322" href="https://space.bilibili.com/470056028" target="_blank">
- <area shape="rect" coords="617,92,771,169" href="https://www.weibo.com/mjjlb" target="_blank">
- <area shape="rect" coords="775,172,929,246" href="https://tieba.baidu.com/mjj" target="_blank">
- <area shape="rect" coords="298,175,449,245" href="http://forum.mjjlb.com/mjjcfpw/portal.php?mod=list&catid=1" target="_blank">
- <area shape="rect" coords="298,95,449,164" href="http://news.mjjlb.com/mjjstation.php" target="_self">
- <area shape="rect" coords="619,174,773,248" href="https://www.xiaohongshu.com/user/profile/671d0662000000001d021b3f">
- </map>
- <script>
- document.addEventListener('DOMContentLoaded', function() {
- var audio = document.getElementById('backgroundAudio');
- var playButton = document.getElementById('playButton');
- var isPlaying = false;
-
- playButton.addEventListener('click', function() {
- if (isPlaying) {
- audio.pause();
- playButton.innerHTML = '<p>播放</p>';
- } else {
- audio.play().catch(function(error) {
- console.log('音频播放失败,可能需要用户交互才能播放音频。', error);
- });
- playButton.innerHTML = '<p>暂停</p>';
- }
- isPlaying = !isPlaying;
- });
- document.getElementById('bookmarkGif').addEventListener('click', function() {
- const url = location.href;
- const title = document.title;
- if (navigator.clipboard && window.isSecureContext) {
- navigator.clipboard.writeText(url).then(() => {
- alert('已复制MJJLB新闻主站的网址链接,请您手动添加到浏览器收藏夹。更多迈克尔·杰克逊的精彩新闻资讯,尽在中国迈迷网!');
- }).catch(() => fallback());
- } else {
- fallback();
- }
- function fallback() {
- if (window.sidebar && window.sidebar.addPanel) {
- window.sidebar.addPanel(title, url, '');
- } else if (window.external && ('AddFavorite' in window.external)) {
- window.external.AddFavorite(url, title);
- } else {
- prompt('请手动复制MJJLB新闻的网址链接并加入收藏:', url);
- }
- }
- });
- });
- </script>
- <footer style="text-align: center;">
- <p style="color: white; margin-top: 10px;">
- ©MJJLB新闻主站 - 迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上新闻资讯平台
- </p>
- </footer>
- </body>
- </html>
复制代码
- <?php
- if (function_exists('error_reporting')) {
- @error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);
- }
- if (function_exists('date_default_timezone_set')) {
- @date_default_timezone_set('Asia/Shanghai');
- }
- if (function_exists('session_start')) {
- if (function_exists('session_id') && !session_id()) {
- @session_start();
- } elseif (!isset($_SESSION)) {
- @session_start();
- }
- }
- define('DATA_FILE', 'messages.json');
- define('REPLY_FILE', 'reply.json');
- define('CATEGORY_FILE', 'categories.json');
- define('USER_FILE', 'users.json');
- define('HITS_FILE', 'hits.json');
- define('POLL_FILE', 'poll.json');
- define('PAGE_SIZE', 15);
- define('ADMIN_PASS', 'Leoben');
- define('MAX_CONTENT', 50000);
- define('MAX_IMAGE', 10485760);
- define('UPLOAD_DIR', 'uploads/');
- define('SITE_NAME', '中国迈迷网');
- define('SITE_URL', 'http://news.mjjlb.com/mjjstation.php');
- if (!function_exists('json_encode')) {
- function json_encode_compat($data) {
- if (is_null($data)) return 'null';
- if ($data === false) return 'false';
- if ($data === true) return 'true';
- if (is_scalar($data)) {
- if (is_float($data)) {
- return floatval(str_replace(",", ".", strval($data)));
- }
- if (is_string($data)) {
- static $jsonReplaces = array(array("\", "/", "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '"'));
- return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $data) . '"';
- } else {
- return $data;
- }
- }
- $isList = true;
- for ($i = 0, reset($data); $i < count($data); $i++, next($data)) {
- if (key($data) !== $i) {
- $isList = false;
- break;
- }
- }
- $result = array();
- if ($isList) {
- foreach ($data as $v) $result[] = json_encode_compat($v);
- return '[' . join(',', $result) . ']';
- } else {
- foreach ($data as $k => $v) $result[] = json_encode_compat($k).':'.json_encode_compat($v);
- return '{' . join(',', $result) . '}';
- }
- }
-
- function json_decode_compat($json, $assoc = false) {
- if (trim($json) === '') return null;
- $json = str_replace(array("\n","\r"), "", $json);
- $json = preg_replace('/([{,]+)(\s*)([^"]+?)\s*:/','$1"$3":', $json);
- $json = preg_replace('/(,)\s*}$/', '}', $json);
-
- if (function_exists('json_decode')) {
- return json_decode($json, $assoc);
- }
-
- if ($json[0] === '{') {
- $json = substr($json, 1, -1);
- $parts = explode(',', $json);
- $result = $assoc ? array() : new stdClass();
- foreach ($parts as $part) {
- if (strpos($part, ':') !== false) {
- list($key, $value) = explode(':', $part, 2);
- $key = trim($key, '"\'');
- $value = trim($value);
-
- if ($value[0] === '"') $value = substr($value, 1, -1);
- elseif ($value === 'true') $value = true;
- elseif ($value === 'false') $value = false;
- elseif ($value === 'null') $value = null;
- elseif (is_numeric($value)) $value = floatval($value);
-
- if ($assoc) {
- $result[$key] = $value;
- } else {
- $result->$key = $value;
- }
- }
- }
- return $result;
- }
- return null;
- }
- }
- function read_json($filename, $default = array()) {
- if (!file_exists($filename)) return $default;
- if (!is_readable($filename)) return $default;
- $content = @file_get_contents($filename);
- if ($content === false || trim($content) === '') return $default;
-
- if (function_exists('json_decode')) {
- $data = @json_decode($content, true);
- } else {
- $data = @json_decode_compat($content, true);
- }
-
- return is_array($data) ? $data : $default;
- }
- function write_json($filename, $data) {
- $dir = dirname($filename);
- if ($dir !== '.' && $dir !== '' && !is_dir($dir)) {
- @mkdir($dir, 0755, true);
- }
-
- if (function_exists('json_encode')) {
- $content = @json_encode($data, JSON_UNESCAPED_UNICODE);
- } else {
- $content = @json_encode_compat($data);
- }
-
- if ($content === false) {
- return false;
- }
-
- $temp_file = $filename . '.tmp.' . uniqid('', true);
- $result = @file_put_contents($temp_file, $content, LOCK_EX);
- if ($result === false) {
- @unlink($temp_file);
- return false;
- }
-
- if (function_exists('json_decode')) {
- $verify = @json_decode(@file_get_contents($temp_file), true);
- if (!is_array($verify)) {
- @unlink($temp_file);
- return false;
- }
- }
-
- $renamed = @rename($temp_file, $filename);
- if (!$renamed) {
- @copy($temp_file, $filename);
- @unlink($temp_file);
- }
-
- return true;
- }
- function safe_input($str) {
- if (!is_string($str)) return '';
- $str = trim($str);
- if (function_exists('mb_convert_encoding')) {
- $str = @mb_convert_encoding($str, 'UTF-8', 'UTF-8');
- }
- $str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
- return $str;
- }
- function safe_substr($str, $start, $length) {
- if (!is_string($str)) return '';
- if (function_exists('mb_substr')) {
- return mb_substr($str, $start, $length, 'UTF-8');
- }
- return substr($str, $start, $length);
- }
- function safe_output($str) {
- if (!is_string($str)) return '';
- $str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
- $str = nl2br($str);
- $str = preg_replace('/\[b\](.*?)\[\/b\]/i', '<strong>$1</strong>', $str);
- $str = preg_replace('/\[i\](.*?)\[\/i\]/i', '<em>$1</em>', $str);
- $str = preg_replace('/\[u\](.*?)\[\/u\]/i', '<u>$1</u>', $str);
- $str = preg_replace('/\[url\](.*?)\[\/url\]/i', '<a href="$1" target="_blank" rel="nofollow">$1</a>', $str);
- $str = preg_replace('/\[url=(.*?)\](.*?)\[\/url\]/i', '<a href="$1" target="_blank" rel="nofollow">$2</a>', $str);
- $str = preg_replace('/\[img\](.*?)\[\/img\]/i', '<img src="$1" style="max-width:100%;" onclick="showImage(\'$1\')" alt="图片">', $str);
- $str = preg_replace('/\[color=(.*?)\](.*?)\[\/color\]/i', '<span style="color:$1">$2</span>', $str);
- return $str;
- }
- function generate_captcha() {
- $chars = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ';
- $captcha = '';
- $char_length = strlen($chars);
- for ($i = 0; $i < 4; $i++) {
- $captcha .= $chars[mt_rand(0, $char_length - 1)];
- }
- $_SESSION['captcha'] = $captcha;
- $_SESSION['captcha_time'] = time();
- return $captcha;
- }
- function validate_image_url($url) {
- $url = trim($url);
- if (empty($url)) return '';
-
- if (!preg_match('#^https?://#i', $url)) return '';
-
- $path = parse_url($url, PHP_URL_PATH);
- if ($path === false || $path === null) return '';
-
- $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));
- $allowed = array('jpg', 'jpeg', 'png', 'gif', 'webp', 'bmp');
-
- if (in_array($ext, $allowed)) {
- return htmlspecialchars($url, ENT_QUOTES, 'UTF-8');
- }
-
- return '';
- }
- function is_admin() {
- if (!isset($_SESSION['admin_logged_in']) || $_SESSION['admin_logged_in'] !== true) {
- return false;
- }
- if (isset($_SESSION['admin_login_time']) && (time() - $_SESSION['admin_login_time'] > 86400)) {
- unset($_SESSION['admin_logged_in']);
- unset($_SESSION['admin_login_time']);
- unset($_SESSION['admin_ip']);
- return false;
- }
- return true;
- }
- function csrf_token() {
- if (!isset($_SESSION['csrf_token']) || !isset($_SESSION['csrf_token_time']) || (time() - $_SESSION['csrf_token_time'] > 3600)) {
- $token_data = uniqid(mt_rand(), true);
- if (isset($_SERVER['REMOTE_ADDR'])) {
- $token_data .= $_SERVER['REMOTE_ADDR'];
- }
- if (isset($_SERVER['HTTP_USER_AGENT'])) {
- $token_data .= $_SERVER['HTTP_USER_AGENT'];
- }
- $_SESSION['csrf_token'] = md5($token_data);
- $_SESSION['csrf_token_time'] = time();
- }
- return $_SESSION['csrf_token'];
- }
- function verify_csrf($token) {
- if (!isset($_SESSION['csrf_token']) || !isset($_SESSION['csrf_token_time'])) {
- return false;
- }
-
- if ((time() - $_SESSION['csrf_token_time'] > 3600)) {
- unset($_SESSION['csrf_token']);
- unset($_SESSION['csrf_token_time']);
- return false;
- }
-
- return hash_equals($_SESSION['csrf_token'], (string)$token);
- }
- function get_category_name($id) {
- $categories = array(
- 1 => array('id' => 1, 'name' => '综合新闻', 'color' => '#3366CC'),
- 2 => array('id' => 2, 'name' => '活动公告', 'color' => '#CC3300'),
- 3 => array('id' => 3, 'name' => '迈迷动态', 'color' => '#339933'),
- 4 => array('id' => 4, 'name' => '音乐作品', 'color' => '#9966CC'),
- 5 => array('id' => 5, 'name' => '慈善事业', 'color' => '#FF9900'),
- 6 => array('id' => 6, 'name' => '历史回顾', 'color' => '#663300')
- );
-
- return isset($categories[$id]) ? $categories[$id]['name'] : '未分类';
- }
- function get_category_color($id) {
- $categories = array(
- 1 => array('id' => 1, 'name' => '综合新闻', 'color' => '#3366CC'),
- 2 => array('id' => 2, 'name' => '活动公告', 'color' => '#CC3300'),
- 3 => array('id' => 3, 'name' => '迈迷动态', 'color' => '#339933'),
- 4 => array('id' => 4, 'name' => '音乐作品', 'color' => '#9966CC'),
- 5 => array('id' => 5, 'name' => '慈善事业', 'color' => '#FF9900'),
- 6 => array('id' => 6, 'name' => '历史回顾', 'color' => '#663300')
- );
-
- return isset($categories[$id]) ? $categories[$id]['color'] : '#666666';
- }
- function format_time($time) {
- if (empty($time)) return '未知时间';
- $timestamp = strtotime($time);
- if ($timestamp === false) return '未知时间';
-
- $diff = time() - $timestamp;
- if ($diff < 60) return '刚刚';
- if ($diff < 3600) return floor($diff / 60) . '分钟前';
- if ($diff < 86400) return floor($diff / 3600) . '小时前';
- if ($diff < 604800) return floor($diff / 86400) . '天前';
- return date('Y-m-d H:i', $timestamp);
- }
- function generate_page_links($current_page, $total_pages, $url = '') {
- if ($total_pages <= 1) return '';
-
- $current_page = max(1, min($current_page, $total_pages));
- $links = '<div class="pagination">';
-
- if ($current_page > 1) {
- $links .= '<a href="?page=1'.$url.'" class="page-first">首页</a>';
- $links .= '<a href="?page='.($current_page - 1).$url.'" class="page-prev">上一页</a>';
- }
-
- $start = max(1, $current_page - 3);
- $end = min($total_pages, $start + 6);
-
- if ($end - $start < 6) {
- $start = max(1, $end - 6);
- }
-
- if ($start > 1) {
- $links .= '<span class="page-ellipsis">...</span>';
- }
-
- for ($i = $start; $i <= $end; $i++) {
- if ($i == $current_page) {
- $links .= '<span class="page-current">'.$i.'</span>';
- } else {
- $links .= '<a href="?page='.$i.$url.'" class="page-link">'.$i.'</a>';
- }
- }
-
- if ($end < $total_pages) {
- $links .= '<span class="page-ellipsis">...</span>';
- }
-
- if ($current_page < $total_pages) {
- $links .= '<a href="?page='.($current_page + 1).$url.'" class="page-next">下一页</a>';
- $links .= '<a href="?page='.$total_pages.$url.'" class="page-last">尾页</a>';
- }
-
- $links .= '</div>';
- return $links;
- }
- function get_client_ip() {
- $ip = '0.0.0.0';
- if (isset($_SERVER['HTTP_CLIENT_IP'])) {
- $ip = $_SERVER['HTTP_CLIENT_IP'];
- } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
- $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
- } elseif (isset($_SERVER['REMOTE_ADDR'])) {
- $ip = $_SERVER['REMOTE_ADDR'];
- }
- $ip = filter_var($ip, FILTER_VALIDATE_IP) ? $ip : '0.0.0.0';
- return preg_replace('/[^0-9a-fA-F.:]/', '', $ip);
- }
- if (!isset($_SESSION['captcha']) || !isset($_SESSION['captcha_time']) || (time() - $_SESSION['captcha_time'] > 300)) {
- generate_captcha();
- }
- $hits = read_json(HITS_FILE, array('total' => 0, 'today' => 0, 'date' => date('Y-m-d')));
- $hits['total']++;
- if ($hits['date'] !== date('Y-m-d')) {
- $hits['today'] = 1;
- $hits['date'] = date('Y-m-d');
- } else {
- $hits['today']++;
- }
- write_json(HITS_FILE, $hits);
- $view_detail = isset($_GET['view']) ? intval($_GET['view']) : 0;
- $detail_news = null;
- $messages = read_json(DATA_FILE);
- if ($view_detail > 0) {
- if (isset($messages[$view_detail])) {
- $detail_news = $messages[$view_detail];
- $detail_news['id'] = $view_detail;
-
- $detail_news['views'] = isset($detail_news['views']) ? intval($detail_news['views']) + 1 : 1;
- $messages[$view_detail]['views'] = $detail_news['views'];
- write_json(DATA_FILE, $messages);
- }
- }
- $poll = read_json(POLL_FILE, array(
- 'question' => '杰克逊对你来说意味着什么?',
- 'options' => array(
- 1 => '偶像',
- 2 => '亲人',
- 3 => '伟人',
- 4 => '导师',
- 5 => '神'
- ),
- 'votes' => array(1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0),
- 'total' => 0,
- 'voters' => array()
- ));
- $poll_message = '';
- $poll_show_result = false;
- if ($_SERVER['REQUEST_METHOD'] === 'POST') {
- $action = isset($_POST['action']) ? $_POST['action'] : '';
-
- if ($action === 'poll_vote') {
- $option = isset($_POST['poll_option']) ? intval($_POST['poll_option']) : 0;
- $ip = get_client_ip();
-
- if ($option < 1 || $option > 5) {
- $poll_message = '请选择有效的选项';
- } elseif (isset($poll['voters'][$ip]) && (time() - $poll['voters'][$ip]) < 86400) {
- $poll_message = '您今天已经投过票了,请明天再来';
- $poll_show_result = true;
- } else {
- $poll['votes'][$option]++;
- $poll['total']++;
- $poll['voters'][$ip] = time();
- write_json(POLL_FILE, $poll);
- $poll_message = '投票成功,感谢您的参与!';
- $poll_show_result = true;
- }
- }
-
- elseif ($action === 'poll_view') {
- $poll_show_result = true;
- }
-
- elseif ($action === 'post_message') {
- if (!isset($_POST['csrf_token']) || !verify_csrf($_POST['csrf_token'])) {
- die('<script>alert("安全验证失败,请刷新页面重试");location.href="' . htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8') . '";</script>');
- }
- $name = isset($_POST['name']) ? safe_input(safe_substr($_POST['name'], 0, 50)) : '';
- $content = isset($_POST['content']) ? safe_input(safe_substr($_POST['content'], 0, MAX_CONTENT)) : '';
- $image = isset($_POST['image']) ? validate_image_url($_POST['image']) : '';
- $cat_id = isset($_POST['cat_id']) ? intval($_POST['cat_id']) : 1;
- $cat_id = max(1, min(6, $cat_id));
- $captcha = isset($_POST['captcha']) ? strtoupper(trim($_POST['captcha'])) : '';
- $session_captcha = isset($_SESSION['captcha']) ? strtoupper($_SESSION['captcha']) : '';
-
- if (empty($captcha) || $captcha !== $session_captcha || !isset($_SESSION['captcha_time']) || (time() - $_SESSION['captcha_time'] > 300)) {
- generate_captcha();
- die('<script>alert("验证码错误或已过期");history.back();</script>');
- }
-
- if (empty($name) || empty($content)) {
- die('<script>alert("标题和内容不能为空");history.back();</script>');
- }
-
- $id = 1;
- if (!empty($messages)) {
- $ids = array_keys($messages);
- $id = max($ids) + 1;
- }
-
- $messages[$id] = array(
- 'id' => $id,
- 'name' => $name,
- 'content' => $content,
- 'image' => $image,
- 'cat_id' => $cat_id,
- 'time' => date('Y-m-d H:i:s'),
- 'like' => 0,
- 'dislike' => 0,
- 'views' => 0,
- 'replies' => 0,
- 'ip' => get_client_ip(),
- 'top' => 0
- );
-
- if (write_json(DATA_FILE, $messages)) {
- generate_captcha();
- header('Location: ' . htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8') . '?success=1');
- exit;
- } else {
- die('<script>alert("保存失败,请重试");history.back();</script>');
- }
- }
-
- elseif ($action === 'vote') {
- if (!isset($_POST['csrf_token']) || !verify_csrf($_POST['csrf_token'])) {
- die('安全验证失败');
- }
-
- $id = isset($_POST['id']) ? intval($_POST['id']) : 0;
- $type = (isset($_POST['type']) && $_POST['type'] === 'like') ? 'like' : 'dislike';
-
- $vote_key = 'vote_' . $id;
- if (isset($_SESSION[$vote_key])) {
- $redirect_url = isset($_POST['redirect']) ? $_POST['redirect'] : '?page=' . (isset($_GET['page']) ? intval($_GET['page']) : 1);
- header('Location: ' . htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8') . $redirect_url . '#msg-' . $id);
- exit;
- }
-
- $messages = read_json(DATA_FILE);
- if (isset($messages[$id])) {
- $messages[$id][$type] = isset($messages[$id][$type]) ? intval($messages[$id][$type]) + 1 : 1;
- if (write_json(DATA_FILE, $messages)) {
- $_SESSION[$vote_key] = true;
- }
- }
-
- $redirect_url = isset($_POST['redirect']) ? $_POST['redirect'] : '?page=' . (isset($_GET['page']) ? intval($_GET['page']) : 1);
- header('Location: ' . htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8') . $redirect_url . '#msg-' . $id);
- exit;
- }
-
- elseif ($action === 'post_reply') {
- if (!isset($_POST['csrf_token']) || !verify_csrf($_POST['csrf_token'])) {
- die('安全验证失败');
- }
-
- $pid = isset($_POST['pid']) ? intval($_POST['pid']) : 0;
- $rname = isset($_POST['rname']) ? safe_input(safe_substr($_POST['rname'], 0, 20)) : '';
- $rcontent = isset($_POST['rcontent']) ? safe_input(safe_substr($_POST['rcontent'], 0, 1000)) : '';
-
- if (empty($rname) || empty($rcontent)) {
- die('<script>alert("昵称和回复内容不能为空");history.back();</script>');
- }
-
- if (!isset($messages[$pid])) {
- die('<script>alert("留言不存在");history.back();</script>');
- }
-
- $messages[$pid]['replies'] = isset($messages[$pid]['replies']) ? intval($messages[$pid]['replies']) + 1 : 1;
- write_json(DATA_FILE, $messages);
-
- $reply = read_json(REPLY_FILE);
- $rid = 1;
- if (!empty($reply)) {
- $ids = array_keys($reply);
- $rid = max($ids) + 1;
- }
-
- $reply[$rid] = array(
- 'id' => $rid,
- 'pid' => $pid,
- 'name' => $rname,
- 'content' => $rcontent,
- 'time' => date('Y-m-d H:i:s'),
- 'ip' => get_client_ip()
- );
-
- if (write_json(REPLY_FILE, $reply)) {
- $redirect_url = isset($_POST['redirect']) ? $_POST['redirect'] : '?page=' . (isset($_GET['page']) ? intval($_GET['page']) : 1);
- header('Location: ' . htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8') . $redirect_url . '#msg-' . $pid);
- exit;
- } else {
- die('<script>alert("回复失败,请重试");history.back();</script>');
- }
- }
-
- elseif ($action === 'admin_login') {
- $password = isset($_POST['password']) ? $_POST['password'] : '';
- if (hash_equals(ADMIN_PASS, $password)) {
- $_SESSION['admin_logged_in'] = true;
- $_SESSION['admin_login_time'] = time();
- $_SESSION['admin_ip'] = get_client_ip();
- header('Location: ' . htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'));
- exit;
- } else {
- die('<script>alert("密码错误");history.back();</script>');
- }
- }
-
- elseif ($action === 'admin_logout') {
- unset($_SESSION['admin_logged_in']);
- unset($_SESSION['admin_login_time']);
- unset($_SESSION['admin_ip']);
- header('Location: ' . htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'));
- exit;
- }
-
- elseif ($action === 'delete_message' && is_admin()) {
- if (!isset($_POST['csrf_token']) || !verify_csrf($_POST['csrf_token'])) {
- die('安全验证失败');
- }
-
- $id = isset($_POST['id']) ? intval($_POST['id']) : 0;
- $messages = read_json(DATA_FILE);
-
- if (isset($messages[$id])) {
- unset($messages[$id]);
- if (write_json(DATA_FILE, $messages)) {
- $reply = read_json(REPLY_FILE);
- foreach ($reply as $rid => $r) {
- if (isset($r['pid']) && $r['pid'] == $id) {
- unset($reply[$rid]);
- }
- }
- write_json(REPLY_FILE, $reply);
- }
- }
-
- header('Location: ' . htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'));
- exit;
- }
-
- elseif ($action === 'delete_reply' && is_admin()) {
- if (!isset($_POST['csrf_token']) || !verify_csrf($_POST['csrf_token'])) {
- die('安全验证失败');
- }
-
- $rid = isset($_POST['rid']) ? intval($_POST['rid']) : 0;
- $reply = read_json(REPLY_FILE);
-
- if (isset($reply[$rid])) {
- $pid = $reply[$rid]['pid'];
- unset($reply[$rid]);
- if (write_json(REPLY_FILE, $reply)) {
- $messages = read_json(DATA_FILE);
- if (isset($messages[$pid])) {
- $reply_count = 0;
- foreach ($reply as $r) {
- if (isset($r['pid']) && $r['pid'] == $pid) {
- $reply_count++;
- }
- }
- $messages[$pid]['replies'] = $reply_count;
- write_json(DATA_FILE, $messages);
- }
- }
- }
-
- $redirect_url = isset($_POST['redirect']) ? $_POST['redirect'] : '';
- header('Location: ' . htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8') . $redirect_url);
- exit;
- }
-
- elseif ($action === 'set_top' && is_admin()) {
- if (!isset($_POST['csrf_token']) || !verify_csrf($_POST['csrf_token'])) {
- die('安全验证失败');
- }
-
- $id = isset($_POST['id']) ? intval($_POST['id']) : 0;
- $top = isset($_POST['top']) ? intval($_POST['top']) : 0;
- $top = $top == 1 ? 1 : 0;
-
- $messages = read_json(DATA_FILE);
- if (isset($messages[$id])) {
- $messages[$id]['top'] = $top;
- if (write_json(DATA_FILE, $messages)) {
- $redirect_url = isset($_POST['redirect']) ? $_POST['redirect'] : '?page=' . (isset($_GET['page']) ? intval($_GET['page']) : 1);
- header('Location: ' . htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8') . $redirect_url);
- exit;
- }
- }
-
- header('Location: ' . htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'));
- exit;
- }
- }
- $messages = read_json(DATA_FILE);
- $top_messages = array();
- $normal_messages = array();
- foreach ($messages as $id => $msg) {
- $msg['id'] = $id;
- if (isset($msg['top']) && $msg['top'] == 1) {
- $top_messages[$id] = $msg;
- } else {
- $normal_messages[$id] = $msg;
- }
- }
- function sort_by_time($a, $b) {
- $time_a = isset($a['time']) ? strtotime($a['time']) : 0;
- $time_b = isset($b['time']) ? strtotime($b['time']) : 0;
- return $time_b - $time_a;
- }
- uasort($top_messages, 'sort_by_time');
- uasort($normal_messages, 'sort_by_time');
- $all_messages = $top_messages + $normal_messages;
- $total = count($all_messages);
- $page = isset($_GET['page']) ? intval($_GET['page']) : 1;
- $page = max(1, $page);
- $total_pages = max(1, ceil($total / PAGE_SIZE));
- $page = min($page, $total_pages);
- $offset = ($page - 1) * PAGE_SIZE;
- $list = array_slice($all_messages, $offset, PAGE_SIZE, true);
- $reply = read_json(REPLY_FILE);
- $cat_filter = 0;
- if (isset($_GET['cat']) && is_numeric($_GET['cat']) && !$view_detail) {
- $cat_filter = intval($_GET['cat']);
- $cat_filter = max(1, min(6, $cat_filter));
-
- $filtered_messages = array();
- foreach ($all_messages as $id => $msg) {
- if (isset($msg['cat_id']) && $msg['cat_id'] == $cat_filter) {
- $filtered_messages[$id] = $msg;
- }
- }
- $all_messages = $filtered_messages;
- $total = count($all_messages);
- $total_pages = max(1, ceil($total / PAGE_SIZE));
- $page = min($page, $total_pages);
- $offset = ($page - 1) * PAGE_SIZE;
- $list = array_slice($all_messages, $offset, PAGE_SIZE, true);
- }
- if (isset($_GET['refresh_captcha'])) {
- echo generate_captcha();
- exit;
- }
- $hot_messages = read_json(DATA_FILE);
- $hot_list = array();
- if (!empty($hot_messages)) {
- foreach ($hot_messages as $mid => $m) {
- $m['id'] = $mid;
- $hot_list[] = $m;
- }
- usort($hot_list, function($a, $b) {
- $a_views = isset($a['views']) ? intval($a['views']) : 0;
- $b_views = isset($b['views']) ? intval($b['views']) : 0;
- return $b_views - $a_views;
- });
- }
- $new_replies = read_json(REPLY_FILE);
- $reply_list = array();
- if (!empty($new_replies)) {
- foreach ($new_replies as $rid => $r) {
- $reply_list[] = $r;
- }
- $reply_list = array_reverse($reply_list);
- }
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title><?php echo $view_detail && $detail_news ? safe_output($detail_news['name']) . ' - ' . SITE_NAME : SITE_NAME; ?> - MJJLB新闻主站</title>
- <meta name="Keywords" content="迈克尔, 杰克逊, 中国迈迷网站, 中文歌迷网站, 迈克尔杰克逊, 迈克尔·杰克逊, 麥可傑克森, 傑克森, 麥可, Michael, Jackson, King of Pop, Michael Jackson, Chinese fanclub, fanclub, 歌迷, 中国迈迷网, MJJLB, MJ, 爱MJJ的烙饼, 偶像, 音乐, 流行音乐之王, 流行之王, 米高積遜, 積遜, 米高, 娱乐, 欧美音乐" />
- <meta name="Description" content="中国迈迷网成立于2025年1月12日,是迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上平台,也是一个集MJ资讯共享与MJ文化传播为一体的迈迷庇护所。" />
- <link rel="shortcut icon" href="http://news.mjjlb.com/mjjlb.png" />
- <style type="text/css">
- * { margin:0; padding:0; }
- body { font:12px/1.6 "Microsoft YaHei","宋体",Arial; background:#E8F0F8; color:#333; }
- a { color:#3366CC; text-decoration:none; }
- a:hover { color:#FF6600; text-decoration:underline; }
- img { border:0; }
- .clear { clear:both; height:0; overflow:hidden; }
- .container { width:980px; margin:0 auto; background:#FFF; }
- .topbar { height:28px; line-height:28px; background:#F0F4F8; border-bottom:1px solid #D0D8E0; font-size:11px; color:#666; }
- .topbar-left { float:left; padding-left:10px; }
- .topbar-right { float:right; padding-right:10px; }
- .topbar-right a { color:#3366CC; margin-left:10px; }
- .header { height:80px; background:#FFF; position:relative; }
- .logo { position:absolute; left:10px; top:10px; }
- .logo img { height:60px; }
- .site-title { position:absolute; left:180px; top:15px; font-size:24px; font-weight:bold; color:#3366CC; }
- .site-desc { position:absolute; left:180px; top:45px; font-size:12px; color:#666; }
- .main-nav { height:36px; background:#3366CC; border-bottom:2px solid #2244AA; }
- .main-nav ul { list-style:none; height:36px; }
- .main-nav li { float:left; height:36px; line-height:36px; border-right:1px solid #4477DD; }
- .main-nav a { display:block; padding:0 20px; color:#FFF; font-size:14px; font-weight:bold; }
- .main-nav a:hover, .main-nav .current { background:#2255BB; text-decoration:none; }
- .sub-nav { height:30px; line-height:30px; background:#F5F8FC; border-bottom:1px solid #E0E8F0; padding:0 10px; }
- .sub-nav a { color:#3366CC; margin-right:15px; font-size:12px; }
- .sub-nav .current { color:#FF6600; font-weight:bold; }
- .main { padding:10px; overflow:hidden; }
- .left-sidebar { float:left; width:220px; }
- .main-content { float:left; width:520px; margin:0 10px; }
- .right-sidebar { float:right; width:200px; }
- .box { border:1px solid #B8D0E8; margin-bottom:10px; background:#FFF; }
- .box-title { height:28px; line-height:28px; background:#E8F0F8; border-bottom:1px solid #B8D0E8; padding:0 10px; font-weight:bold; color:#3366CC; font-size:13px; position:relative; }
- .box-title .more { position:absolute; right:10px; top:0; font-weight:normal; font-size:11px; }
- .box-content { padding:8px; }
- .news-list { list-style:none; }
- .news-list li { padding:6px 0; border-bottom:1px dotted #E0E8F0; line-height:1.5; }
- .news-list li:last-child { border-bottom:none; }
- .news-list .title { color:#333; display:block; margin-bottom:2px; }
- .news-list .meta { color:#999; font-size:11px; }
- .news-list .hot { color:#FF6600; font-weight:bold; }
- .focus-news { margin-bottom:10px; }
- .focus-image { width:100%; height:200px; overflow:hidden; margin-bottom:8px; text-align:center; background:#F5F8FC; }
- .focus-image img { max-width:100%; max-height:200px; }
- .focus-title { font-size:14px; font-weight:bold; color:#3366CC; margin-bottom:5px; text-align:center; }
- .focus-summary { color:#666; font-size:12px; line-height:1.6; }
- .section-title { height:26px; line-height:26px; background:#F0F4F8; border-left:4px solid #3366CC; padding-left:10px; font-weight:bold; color:#3366CC; margin-bottom:8px; font-size:13px; position:relative; }
- .section-title .more { position:absolute; right:0; top:0; font-weight:normal; font-size:11px; }
- .news-item { padding:8px 0; border-bottom:1px dotted #E0E8E8; }
- .news-item:last-child { border-bottom:none; }
- .news-item .title { font-size:13px; font-weight:bold; color:#3366CC; margin-bottom:4px; }
- .news-item .title a { color:#3366CC; }
- .news-item .title a:hover { color:#FF6600; }
- .news-item .summary { color:#666; font-size:12px; line-height:1.6; margin-bottom:4px; }
- .news-item .meta { color:#999; font-size:11px; }
- .news-item .meta span { margin-right:10px; }
- .news-item .thumb { float:left; width:80px; height:60px; margin-right:10px; overflow:hidden; }
- .news-item .thumb img { width:80px; height:60px; object-fit:cover; }
- .news-item .content { overflow:hidden; }
- .category-tag { display:inline-block; padding:1px 5px; background:#3366CC; color:#FFF; font-size:10px; margin-right:5px; border-radius:2px; }
- .top-news { background:#FFF8E1; border:1px solid #FFE4B5; padding:8px; margin-bottom:10px; }
- .top-news .label { color:#FF6600; font-weight:bold; margin-right:5px; }
- .admin-panel { background:#FFF3E0; border:1px solid #FFB74D; padding:8px; margin-bottom:10px; }
- .admin-panel a { color:#E65100; margin-right:10px; }
- .pagination { text-align:center; margin:15px 0; padding:10px; background:#F5F8FC; border:1px solid #E0E8F0; }
- .pagination-info { color:#666; margin-bottom:8px; font-size:11px; }
- .pagination a, .pagination span { display:inline-block; padding:4px 10px; margin:0 2px; border:1px solid #B8D0E8; background:#FFF; color:#3366CC; font-size:12px; }
- .pagination a:hover { background:#3366CC; color:#FFF; border-color:#3366CC; text-decoration:none; }
- .pagination .current { background:#3366CC; color:#FFF; border-color:#3366CC; }
- .pagination .disabled { color:#999; background:#F5F5F5; cursor:not-allowed; }
- .post-form { background:#F8FAFC; border:1px solid #D0D8E0; padding:15px; margin-bottom:10px; }
- .form-row { margin-bottom:10px; overflow:hidden; }
- .form-label { float:left; width:70px; text-align:right; padding-right:10px; line-height:26px; color:#666; }
- .form-field { margin-left:80px; }
- .form-input { width:300px; padding:4px; border:1px solid #B8D0E8; }
- .form-textarea { width:400px; height:100px; padding:4px; border:1px solid #B8D0E8; font-family:"Microsoft YaHei","宋体",Arial; }
- .form-select { padding:3px; border:1px solid #B8D0E8; }
- .captcha-box { background:#3366CC; color:#FFF; font-size:16px; font-weight:bold; padding:3px 8px; display:inline-block; letter-spacing:2px; margin-right:10px; }
- .form-btn { background:#3366CC; color:#FFF; border:none; padding:5px 15px; cursor:pointer; }
- .form-btn:hover { background:#2255BB; }
- .reply-box { background:#F5F8FC; border:1px solid #E0E8F0; padding:10px; margin-top:8px; display:none; }
- .reply-list { margin-top:8px; }
- .reply-item { background:#FAFBFC; border:1px solid #E8EDF2; padding:8px; margin-bottom:5px; }
- .reply-header { color:#666; font-size:11px; margin-bottom:3px; }
- .reply-content { color:#333; line-height:1.5; }
- .detail-container { background:#FFF; }
- .detail-header { border-bottom:2px solid #3366CC; padding-bottom:10px; margin-bottom:15px; }
- .detail-title { font-size:18px; font-weight:bold; color:#333; margin-bottom:10px; }
- .detail-meta { color:#666; font-size:12px; padding:8px; background:#F5F8FC; }
- .detail-content { padding:15px; line-height:1.8; font-size:14px; color:#333; }
- .detail-content img { max-width:100%; margin:10px 0; }
- .detail-footer { margin-top:20px; padding-top:15px; border-top:1px dashed #D0D8E0; text-align:center; }
- .footer { background:#F0F4F8; border-top:2px solid #3366CC; padding:20px; margin-top:10px; text-align:center; color:#666; font-size:12px; line-height:2; }
- .footer-links { margin-bottom:10px; }
- .footer-links a { color:#3366CC; margin:0 10px; }
- .footer-copyright { color:#999; }
- .modal { display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.8); z-index:9999; }
- .modal img { max-width:90%; max-height:90%; position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); }
- .login-box { background:#FFF8E1; border:1px solid #FFE4B5; padding:10px; margin-bottom:10px; display:none; }
- .poll-message { background:#E3F2FD; border:1px solid #90CAF9; color:#1565C0; padding:8px; margin-bottom:10px; text-align:center; }
- .poll-result { margin:10px 0; }
- .poll-bar { height:20px; background:#E8F0F8; margin:5px 0; position:relative; }
- .poll-fill { height:20px; background:#3366CC; }
- .poll-text { position:absolute; left:5px; top:0; line-height:20px; color:#333; font-size:11px; }
- .poll-count { position:absolute; right:5px; top:0; line-height:20px; color:#666; font-size:11px; }
- .poll-total { text-align:center; color:#666; margin-top:10px; font-size:11px; }
- .bottom-bar { background:#F5F8FC; border:1px solid #E0E8F0; padding:10px; margin:15px 0; text-align:center; color:#666; font-size:11px; }
- .bottom-bar a { color:#3366CC; margin:0 5px; }
- </style>
- <script type="text/javascript">
- function toggleReplyBox(id) {
- var box = document.getElementById('replybox-' + id);
- if (box.style.display == 'block') {
- box.style.display = 'none';
- } else {
- var allBoxes = document.querySelectorAll('.reply-box');
- for (var i = 0; i < allBoxes.length; i++) {
- allBoxes[i].style.display = 'none';
- }
- box.style.display = 'block';
- }
- return false;
- }
- function refreshCaptcha() {
- var xhr = new XMLHttpRequest();
- xhr.open('GET', '?refresh_captcha=1&t=' + new Date().getTime(), true);
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4 && xhr.status == 200) {
- document.getElementById('captcha').innerHTML = xhr.responseText;
- }
- };
- xhr.send();
- return false;
- }
- function showImage(src) {
- document.getElementById('modalImage').src = src;
- document.getElementById('imageModal').style.display = 'block';
- }
- function closeModal() {
- document.getElementById('imageModal').style.display = 'none';
- }
- function submitVote(form) {
- var xhr = new XMLHttpRequest();
- xhr.open('POST', '', true);
- xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4 && xhr.status == 200) {
- window.location.reload();
- }
- };
- var params = [];
- for (var i = 0; i < form.elements.length; i++) {
- var e = form.elements[i];
- if (e.name) params.push(encodeURIComponent(e.name) + '=' + encodeURIComponent(e.value));
- }
- xhr.send(params.join('&'));
- return false;
- }
- function toggleLogin() {
- var box = document.getElementById('loginBox');
- box.style.display = box.style.display == 'block' ? 'none' : 'block';
- }
- window.onload = function() {
- var captchaInput = document.querySelector('input[name="captcha"]');
- if (captchaInput) {
- captchaInput.oninput = function() {
- this.value = this.value.toUpperCase().replace(/[^A-Z0-9]/g, '');
- };
- }
-
- document.getElementById('imageModal').onclick = function(e) {
- if (e.target == this) closeModal();
- };
-
- document.onkeydown = function(e) {
- e = e || window.event;
- if (e.keyCode == 27) closeModal();
- };
-
- if (window.location.hash) {
- var el = document.getElementById(window.location.hash.substring(1));
- if (el) setTimeout(function() { el.scrollIntoView(); }, 100);
- }
-
- var successMsg = document.querySelector('.success-msg');
- if (successMsg) {
- setTimeout(function() {
- successMsg.style.display = 'none';
- }, 5000);
- }
- };
- function validateForm(form) {
- var name = form.querySelector('input[name="name"], input[name="rname"]');
- if (name && name.value.trim().length < 2) {
- alert('名称至少需要2个字符');
- name.focus();
- return false;
- }
- var content = form.querySelector('textarea[name="content"], textarea[name="rcontent"]');
- if (content && content.value.trim().length < 5) {
- alert('内容至少需要5个字符');
- content.focus();
- return false;
- }
- var captcha = form.querySelector('input[name="captcha"]');
- if (captcha && captcha.value.length != 4) {
- alert('请输入4位验证码');
- captcha.focus();
- return false;
- }
- return true;
- }
- function pollVote() {
- var options = document.getElementsByName('poll_option');
- var selected = false;
- for (var i = 0; i < options.length; i++) {
- if (options[i].checked) {
- selected = true;
- break;
- }
- }
- if (!selected) {
- alert('请选择一个选项');
- return false;
- }
- return true;
- }
- </script>
- </head>
- <body>
- <div class="modal" id="imageModal"><img id="modalImage" src="" alt="" /></div>
- <div class="container">
- <div class="topbar">
- <div class="topbar-left">北京时间:<?php echo date('Y年n月j日 l'); ?></div>
- <div class="topbar-right">
- <?php if (is_admin()): ?>
- 欢迎,管理员 | <a href="javascript:void(0)" onclick="document.getElementById('logoutForm').submit()">退出</a>
- <form id="logoutForm" method="post" style="display:none;">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="admin_logout">
- </form>
- <?php else: ?>
- <a href="javascript:void(0)" onclick="toggleLogin()">管理员登录</a>
- <?php endif; ?>
- | <a href="http://forum.mjjlb.com/mjjcfpw/member.php?mod=register">会员注册</a>
- | <a href="http://mjjcfpw.mjjlb.com">网站地图</a>
- | <a href="http://blog.mjjlb.com/wechat.html">联系方式</a>
- </div>
- <div class="clear"></div>
- </div>
-
- <div class="header">
- <div class="logo"><img src="http://news.mjjlb.com/Logo.png" alt="<?php echo SITE_NAME; ?>" onerror="this.style.display='none'" /></div>
- <div class="site-title"><?php echo SITE_NAME; ?></div>
- <div class="site-desc">迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上平台</div>
- </div>
-
- <div class="main-nav">
- <ul>
- <li><a href="?" <?php echo !$view_detail && $cat_filter == 0 ? 'class="current"' : ''; ?>>网站首页</a></li>
- <li><a href="?cat=1" <?php echo $cat_filter == 1 ? 'class="current"' : ''; ?>>综合新闻</a></li>
- <li><a href="?cat=2" <?php echo $cat_filter == 2 ? 'class="current"' : ''; ?>>活动公告</a></li>
- <li><a href="?cat=3" <?php echo $cat_filter == 3 ? 'class="current"' : ''; ?>>迈迷动态</a></li>
- <li><a href="?cat=4" <?php echo $cat_filter == 4 ? 'class="current"' : ''; ?>>音乐作品</a></li>
- <li><a href="?cat=5" <?php echo $cat_filter == 5 ? 'class="current"' : ''; ?>>慈善事业</a></li>
- <li><a href="?cat=6" <?php echo $cat_filter == 6 ? 'class="current"' : ''; ?>>历史回顾</a></li>
- <li><a href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=forumdisplay&fid=8" target="_blank">魅力图库</a></li>
- <li><a href="http://michael.mjjlb.com" target="_blank">巨星之路</a></li>
- <li><a href="http://forum.mjjlb.com/mjjcfpw" target="_blank">歌迷论坛</a></li>
- </ul>
- <div class="clear"></div>
- </div>
-
- <?php if (!is_admin()): ?>
- <div class="login-box" id="loginBox">
- <form method="post" style="margin:0;">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="admin_login">
- 管理员密码:<input type="password" name="password" style="padding:3px;border:1px solid #B8D0E8;width:150px;">
- <input type="submit" value="登录" style="padding:3px 15px;background:#3366CC;color:#FFF;border:none;cursor:pointer;">
- <a href="javascript:void(0)" onclick="toggleLogin()" style="margin-left:10px;">取消</a>
- </form>
- </div>
- <?php endif; ?>
-
- <?php if (is_admin()): ?>
- <div class="admin-panel">
- <strong>管理控制台</strong> |
- <a href="#postnews">发表新闻</a> |
- <span style="color:#666;">今日访问:<?php echo $hits['today']; ?> | 总访问:<?php echo $hits['total']; ?></span>
- </div>
- <?php endif; ?>
-
- <?php if (isset($_GET['success'])): ?>
- <div class="success-msg" style="background:#E8F5E9;border:1px solid #81C784;color:#2E7D32;padding:10px;margin:10px;text-align:center;">
- <strong>新闻发表成功!</strong>
- </div>
- <?php endif; ?>
-
- <div class="main">
- <?php if (!$view_detail): ?>
-
- <div class="left-sidebar">
- <div class="box">
- <div class="box-title">火线新闻 <span class="more"><a href="?cat=1">更多>></a></span></div>
- <div class="box-content">
- <ul class="news-list">
- <?php
- $fire_news = array_slice($all_messages, 0, 10, true);
- foreach ($fire_news as $id => $news):
- ?>
- <li>
- <a href="?view=<?php echo intval($id); ?>" class="title"><?php echo safe_substr(safe_output($news['name']), 0, 32); ?></a>
- <div class="meta"><?php echo format_time($news['time']); ?> | 浏览<?php echo isset($news['views']) ? intval($news['views']) : 0; ?></div>
- </li>
- <?php endforeach; ?>
- <?php if (empty($fire_news)): ?>
- <li style="color:#999;text-align:center;padding:20px 0;">暂无新闻</li>
- <?php endif; ?>
- </ul>
- </div>
- </div>
-
- <div class="box">
- <div class="box-title">热门新闻 <span class="more"><a href="http://forum.mjjlb.com/mjjcfpw/forum.php?gid=1">更多>></a></span></div>
- <div class="box-content">
- <ul class="news-list">
- <?php
- $count = 0;
- foreach ($hot_list as $news):
- if ($count >= 8) break;
- if (empty($news['name'])) continue;
- ?>
- <li>
- <span class="hot"><?php echo ($count+1); ?>.</span>
- <a href="?view=<?php echo intval($news['id']); ?>"><?php echo safe_substr(safe_output($news['name']), 0, 28); ?></a>
- </li>
- <?php $count++; endforeach; ?>
- <?php if ($count == 0): ?>
- <li style="color:#999;text-align:center;">暂无数据</li>
- <?php endif; ?>
- </ul>
- </div>
- </div>
-
- <div class="box">
- <div class="box-title">网站调查</div>
- <div class="box-content">
- <?php if ($poll_message): ?>
- <div class="poll-message"><?php echo $poll_message; ?></div>
- <?php endif; ?>
-
- <?php if ($poll_show_result): ?>
- <div class="poll-result">
- <?php foreach ($poll['options'] as $key => $option):
- $count = isset($poll['votes'][$key]) ? $poll['votes'][$key] : 0;
- $percent = $poll['total'] > 0 ? round($count / $poll['total'] * 100, 1) : 0;
- ?>
- <div class="poll-bar">
- <div class="poll-fill" style="width:<?php echo $percent; ?>%;"></div>
- <span class="poll-text"><?php echo safe_output($option); ?> (<?php echo $percent; ?>%)</span>
- <span class="poll-count"><?php echo $count; ?>票</span>
- </div>
- <?php endforeach; ?>
- <div class="poll-total">总投票数:<?php echo $poll['total']; ?>票</div>
- </div>
- <form method="post" style="text-align:center;margin-top:10px;">
- <input type="hidden" name="action" value="poll_vote">
- <button type="submit" style="padding:3px 15px;background:#999;color:#FFF;border:none;cursor:pointer;">重新投票</button>
- </form>
- <?php else: ?>
- <form method="post" onsubmit="return pollVote();">
- <input type="hidden" name="action" value="poll_vote">
- <p style="margin-bottom:10px;color:#666;font-weight:bold;"><?php echo safe_output($poll['question']); ?></p>
- <?php foreach ($poll['options'] as $key => $option): ?>
- <label style="display:block;margin:8px 0;cursor:pointer;">
- <input type="radio" name="poll_option" value="<?php echo $key; ?>" style="margin-right:5px;">
- <?php echo safe_output($option); ?>
- </label>
- <?php endforeach; ?>
- <div style="margin-top:15px;text-align:center;">
- <button type="submit" style="padding:5px 20px;background:#3366CC;color:#FFF;border:none;cursor:pointer;margin-right:5px;">投票</button>
- <button type="submit" name="action" value="poll_view" style="padding:5px 20px;background:#999;color:#FFF;border:none;cursor:pointer;">查看</button>
- </div>
- </form>
- <?php endif; ?>
- </div>
- </div>
- </div>
-
- <div class="main-content">
- <?php
- $first_news = reset($all_messages);
- if ($first_news):
- $first_id = key($all_messages);
- ?>
- <div class="focus-news">
- <?php if (!empty($first_news['image'])): ?>
- <div class="focus-image">
- <img src="<?php echo safe_output($first_news['image']); ?>" onclick="showImage('<?php echo safe_output($first_news['image']); ?>')" alt="" />
- </div>
- <?php endif; ?>
- <div class="focus-title"><a href="?view=<?php echo intval($first_id); ?>"><?php echo safe_output($first_news['name']); ?></a></div>
- <div class="focus-summary">
- <?php
- $summary = strip_tags(safe_output($first_news['content']));
- echo safe_substr($summary, 0, 120) . '...';
- ?>
- <a href="?view=<?php echo intval($first_id); ?>" style="color:#FF6600;">[查看全文]</a>
- </div>
- </div>
- <?php endif; ?>
-
- <div class="section-title">
- <?php
- if ($cat_filter > 0) {
- echo get_category_name($cat_filter);
- } else {
- echo '深度报道';
- }
- ?>
- <span class="more"><a href="http://forum.mjjlb.com/mjjcfpw/forum.php?gid=1">更多>></a></span>
- </div>
-
- <?php foreach ($list as $id => $news): ?>
- <div class="news-item" id="msg-<?php echo intval($id); ?>">
- <?php if (!empty($news['image'])): ?>
- <div class="thumb">
- <img src="<?php echo safe_output($news['image']); ?>" onclick="showImage('<?php echo safe_output($news['image']); ?>')" alt="" />
- </div>
- <?php endif; ?>
- <div class="content">
- <div class="title">
- <?php if (isset($news['top']) && $news['top'] == 1): ?><span style="color:#FF6600;">[置顶]</span><?php endif; ?>
- <span class="category-tag" style="background:<?php echo get_category_color($news['cat_id']); ?>;"><?php echo get_category_name($news['cat_id']); ?></span>
- <a href="?view=<?php echo intval($id); ?>"><?php echo safe_output($news['name']); ?></a>
- </div>
- <div class="summary">
- <?php
- $content = strip_tags(safe_output($news['content']));
- echo safe_substr($content, 0, 100) . '...';
- ?>
- </div>
- <div class="meta">
- <span><?php echo format_time($news['time']); ?></span>
- <span>浏览:<?php echo isset($news['views']) ? intval($news['views']) : 0; ?></span>
- <span>回复:<?php echo isset($news['replies']) ? intval($news['replies']) : 0; ?></span>
- <span>支持:<?php echo isset($news['like']) ? intval($news['like']) : 0; ?></span>
- <?php if (is_admin()): ?>
- <span>IP:<?php echo isset($news['ip']) ? safe_output($news['ip']) : '未知'; ?></span>
- <?php endif; ?>
- <span style="float:right;">
- <a href="javascript:void(0)" onclick="return toggleReplyBox(<?php echo intval($id); ?>);">回复</a>
- <?php if (is_admin()): ?>
- | <a href="javascript:void(0)" onclick="if(confirm('删除?')){document.getElementById('del-<?php echo intval($id); ?>').submit();}">删除</a>
- | <a href="javascript:void(0)" onclick="document.getElementById('top-<?php echo intval($id); ?>').submit();">
- <?php echo isset($news['top']) && $news['top'] == 1 ? '取消置顶' : '置顶'; ?>
- </a>
- <form id="del-<?php echo intval($id); ?>" method="post" style="display:none;">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="delete_message">
- <input type="hidden" name="id" value="<?php echo intval($id); ?>">
- </form>
- <form id="top-<?php echo intval($id); ?>" method="post" style="display:none;">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="set_top">
- <input type="hidden" name="id" value="<?php echo intval($id); ?>">
- <input type="hidden" name="top" value="<?php echo isset($news['top']) && $news['top'] == 1 ? '0' : '1'; ?>">
- </form>
- <?php endif; ?>
- </span>
- </div>
- </div>
- <div class="clear"></div>
-
- <div class="reply-box" id="replybox-<?php echo intval($id); ?>">
- <form method="post" onsubmit="return validateForm(this);">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="post_reply">
- <input type="hidden" name="pid" value="<?php echo intval($id); ?>">
- <div class="form-row">
- <input type="text" name="rname" placeholder="昵称" style="width:80px;padding:3px;border:1px solid #B8D0E8;" required>
- <input type="submit" value="发表回复" style="padding:3px 10px;background:#3366CC;color:#FFF;border:none;cursor:pointer;float:right;">
- </div>
- <div class="form-row" style="margin-top:5px;">
- <textarea name="rcontent" placeholder="请输入回复内容..." style="width:100%;height:50px;padding:3px;border:1px solid #B8D0E8;box-sizing:border-box;" required></textarea>
- </div>
- </form>
- </div>
-
- <?php
- $related_replies = array();
- foreach ($reply as $rid => $r) {
- if (isset($r['pid']) && $r['pid'] == $id) {
- $related_replies[$rid] = $r;
- }
- }
- if (!empty($related_replies)):
- ?>
- <div class="reply-list">
- <?php foreach (array_slice($related_replies, 0, 3, true) as $rid => $reply_data): ?>
- <div class="reply-item">
- <div class="reply-header">
- <strong><?php echo safe_output($reply_data['name']); ?></strong>
- <?php echo format_time($reply_data['time']); ?>
- <?php if (is_admin()): ?>
- <span style="float:right;">
- <a href="javascript:void(0)" onclick="if(confirm('删除回复?')){document.getElementById('del-reply-<?php echo intval($rid); ?>').submit();}" style="color:#C00;font-size:11px;">删除</a>
- <form id="del-reply-<?php echo intval($rid); ?>" method="post" style="display:none;">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="delete_reply">
- <input type="hidden" name="rid" value="<?php echo intval($rid); ?>">
- </form>
- </span>
- <?php endif; ?>
- </div>
- <div class="reply-content"><?php echo safe_output($reply_data['content']); ?></div>
- </div>
- <?php endforeach; ?>
- <?php if (count($related_replies) > 3): ?>
- <div style="text-align:center;padding:5px;">
- <a href="?view=<?php echo intval($id); ?>" style="color:#3366CC;font-size:11px;">查看全部<?php echo count($related_replies); ?>条回复 >></a>
- </div>
- <?php endif; ?>
- </div>
- <?php endif; ?>
- </div>
- <?php endforeach; ?>
-
- <?php if ($total_pages > 1): ?>
- <div class="pagination">
- <div class="pagination-info">
- 共 <?php echo $total; ?> 条新闻,第 <?php echo $page; ?>/<?php echo $total_pages; ?> 页
- </div>
- <?php
- $url_param = $cat_filter > 0 ? '&cat=' . $cat_filter : '';
- echo generate_page_links($page, $total_pages, $url_param);
- ?>
- </div>
- <?php endif; ?>
-
- <div class="post-form" id="postnews">
- <div class="section-title">发表新闻</div>
- <form method="post" onsubmit="return validateForm(this);">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="post_message">
-
- <div class="form-row">
- <div class="form-label">标题:</div>
- <div class="form-field">
- <input type="text" name="name" class="form-input" placeholder="请输入新闻标题(最多50字)" maxlength="50" required>
- </div>
- <div class="clear"></div>
- </div>
-
- <div class="form-row">
- <div class="form-label">分类:</div>
- <div class="form-field">
- <select name="cat_id" class="form-select">
- <?php for ($i = 1; $i <= 6; $i++): ?>
- <option value="<?php echo $i; ?>" <?php echo $cat_filter == $i ? 'selected' : ''; ?>><?php echo get_category_name($i); ?></option>
- <?php endfor; ?>
- </select>
- </div>
- <div class="clear"></div>
- </div>
-
- <div class="form-row">
- <div class="form-label">内容:</div>
- <div class="form-field">
- <textarea name="content" class="form-textarea" placeholder="支持Discuz!代码:[b]加粗[/b]、[i]斜体[/i]、[u]下划线[/u]、[url]链接[/url]、[img]图片[/img]、[color=red]彩色[/color]" required></textarea>
- </div>
- <div class="clear"></div>
- </div>
-
- <div class="form-row">
- <div class="form-label">图片:</div>
- <div class="form-field">
- <input type="text" name="image" class="form-input" placeholder="图片URL(支持jpg、png、gif、webp格式)">
- </div>
- <div class="clear"></div>
- </div>
-
- <div class="form-row">
- <div class="form-label">验证码:</div>
- <div class="form-field">
- <span class="captcha-box" id="captcha"><?php echo isset($_SESSION['captcha']) ? $_SESSION['captcha'] : generate_captcha(); ?></span>
- <input type="text" name="captcha" style="width:80px;padding:4px;border:1px solid #B8D0E8;" placeholder="验证码" maxlength="4" autocomplete="off" required>
- <a href="javascript:void(0)" onclick="return refreshCaptcha();" style="font-size:11px;">换一张</a>
- </div>
- <div class="clear"></div>
- </div>
-
- <div class="form-row">
- <div class="form-label"></div>
- <div class="form-field">
- <input type="submit" value="发表新闻" class="form-btn">
- <input type="reset" value="重置" style="padding:5px 15px;background:#999;color:#FFF;border:none;cursor:pointer;margin-left:10px;">
- </div>
- <div class="clear"></div>
- </div>
- </form>
- </div>
- </div>
-
- <div class="right-sidebar">
- <div class="box">
- <div class="box-title">微信公众号</div>
- <div class="box-content" style="text-align:center;padding:15px;">
- <div style="font-weight:bold;color:#3366CC;margin-bottom:10px;font-size:14px;">中国迈迷网</div>
- <img src="https://33026137.s21i.faiusr.com/2/11/ABUIABACGAAg5q2IzAYovLuplAQwrgM4rgM.jpg" alt="微信公众号二维码" style="width:150px;height:150px;border:1px solid #E0E8F0;padding:5px;background:#FFF;" onerror="this.src='data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCIgZmlsbD0iI2Y1ZjVmNSIvPjx0ZXh0IHg9Ijc1IiB5PSI3NSIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBmaWxsPSIjOTk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBkeT0iLjNlbSI+微<br/>信<br/>二<br/>维<br/>码</text></svg>'" />
- <div style="margin-top:8px;color:#666;font-size:11px;">扫码关注获取最新MJ资讯</div>
- <div style="margin-top:5px;color:#FF6600;font-weight:bold;font-size:12px;">微信号:MJJLB200776</div>
- </div>
- </div>
-
- <div class="box">
- <div class="box-title">最新发行 <span class="more"><a href="http://forum.mjjlb.com/mjjcfpw/forum.php?gid=1">更多>></a></span></div>
- <div class="box-content">
- <ul class="news-list">
- <?php
- $recent = array_slice($all_messages, 0, 6, true);
- foreach ($recent as $id => $news):
- ?>
- <li>
- <a href="?view=<?php echo intval($id); ?>"><?php echo safe_substr(safe_output($news['name']), 0, 24); ?></a>
- </li>
- <?php endforeach; ?>
- </ul>
- </div>
- </div>
-
- <div class="box">
- <div class="box-title">历史回顾 <span class="more"><a href="http://news.mjjlb.com/mjjstation.php?cat=6">更多>></a></span></div>
- <div class="box-content">
- <ul class="news-list">
- <?php
- $life_news = array();
- foreach ($all_messages as $id => $m) {
- if (isset($m['cat_id']) && $m['cat_id'] == 6) {
- $m['id'] = $id;
- $life_news[] = $m;
- }
- }
- $life_news = array_slice($life_news, 0, 5);
- foreach ($life_news as $news):
- ?>
- <li>
- <a href="?view=<?php echo intval($news['id']); ?>"><?php echo safe_substr(safe_output($news['name']), 0, 24); ?></a>
- </li>
- <?php endforeach; ?>
- <?php if (empty($life_news)): ?>
- <li style="color:#999;">暂无内容</li>
- <?php endif; ?>
- </ul>
- </div>
- </div>
-
- <div class="box">
- <div class="box-title">慈善事业 <span class="more"><a href="http://news.mjjlb.com/mjjstation.php?cat=5">更多>></a></span></div>
- <div class="box-content">
- <ul class="news-list">
- <?php
- $treasure_news = array();
- foreach ($all_messages as $id => $m) {
- if (isset($m['cat_id']) && $m['cat_id'] == 5) {
- $m['id'] = $id;
- $treasure_news[] = $m;
- }
- }
- $treasure_news = array_slice($treasure_news, 0, 5);
- foreach ($treasure_news as $news):
- ?>
- <li>
- <a href="?view=<?php echo intval($news['id']); ?>"><?php echo safe_substr(safe_output($news['name']), 0, 24); ?></a>
- </li>
- <?php endforeach; ?>
- <?php if (empty($treasure_news)): ?>
- <li style="color:#999;">暂无内容</li>
- <?php endif; ?>
- </ul>
- </div>
- </div>
-
- <div class="box">
- <div class="box-title">活动公告 <span class="more"><a href="http://news.mjjlb.com/mjjstation.php?cat=2">更多>></a></span></div>
- <div class="box-content">
- <ul class="news-list">
- <?php
- $honor_news = array();
- foreach ($all_messages as $id => $m) {
- if (isset($m['cat_id']) && $m['cat_id'] == 2) {
- $m['id'] = $id;
- $honor_news[] = $m;
- }
- }
- $honor_news = array_slice($honor_news, 0, 5);
- foreach ($honor_news as $news):
- ?>
- <li>
- <a href="?view=<?php echo intval($news['id']); ?>"><?php echo safe_substr(safe_output($news['name']), 0, 24); ?></a>
- </li>
- <?php endforeach; ?>
- <?php if (empty($honor_news)): ?>
- <li style="color:#999;">暂无内容</li>
- <?php endif; ?>
- </ul>
- </div>
- </div>
-
- <div class="box">
- <div class="box-title">最新回复</div>
- <div class="box-content">
- <ul class="news-list">
- <?php
- $count = 0;
- foreach ($reply_list as $r):
- if ($count >= 5) break;
- if (empty($r['name']) || empty($r['content'])) continue;
- ?>
- <li>
- <strong style="color:#3366CC;"><?php echo safe_substr(safe_output($r['name']), 0, 8); ?></strong>:
- <?php echo safe_substr(safe_output(strip_tags($r['content'])), 0, 16); ?>...
- </li>
- <?php $count++; endforeach; ?>
- <?php if ($count == 0): ?>
- <li style="color:#999;">暂无回复</li>
- <?php endif; ?>
- </ul>
- </div>
- </div>
-
- <div class="box">
- <div class="box-title">网站统计</div>
- <div class="box-content" style="line-height:2;color:#666;">
- 新闻总数:<?php echo count(read_json(DATA_FILE)); ?><br>
- 回复总数:<?php echo count(read_json(REPLY_FILE)); ?><br>
- 今日浏览:<?php echo $hits['today']; ?><br>
- 总访问量:<?php echo $hits['total']; ?><br>
- 运行天数:<?php echo floor((time() - strtotime('2024-10-23')) / 86400) + 1; ?>天
- </div>
- </div>
- <div class="box">
- <div class="box-title">友情链接 <span class="more"><a href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=viewthread&tid=39&extra=page%3D1">申请要求>></a></span></div>
- <div class="box-content">
- <ul class="news-list">
- <li><a href="http://www.michaeljackson.com" target="_blank" rel="nofollow">迈克尔·杰克逊官方网站</a></li>
- <li><a href="https://www.shopmichaeljackson.com" target="_blank" rel="nofollow">迈克尔·杰克逊官方商城网站</a></li>
- <li><a href="https://michael.movie" target="_blank" rel="nofollow">传记电影《迈克尔·杰克逊:巨星之路》官方网站</a></li>
- <li><a href="https://tour.mjthemusical.com/" target="_blank" rel="nofollow">百老汇《MJ音乐剧》巡演官方网站</a></li>
- <li><a href="http://www.mjjcn.com" target="_blank" rel="nofollow">迈克尔·杰克逊中文网</a></li>
- <li><a href="http://www.mjjcollection.net" target="_blank" rel="nofollow">迈克尔·杰克逊中国收藏网</a></li>
- <li><a href="http://cn.mjjlb.com" target="_blank">米津玄师中国网(米津俱乐部)</a></li>
- <li><a href="https://tieba.baidu.com/mjj" target="_blank">百度MJJ贴吧</a></li>
- <li><a href="http://blog.mjjlb.com" target="_blank">Leoben Polaris</a></li>
- </ul>
- </div>
- </div>
- </div>
-
- <?php else: ?>
-
- <div style="width:960px;margin:0 auto;">
- <div class="detail-container">
- <div class="detail-header">
- <div class="detail-title">
- <?php if (isset($detail_news['top']) && $detail_news['top'] == 1): ?><span style="color:#FF6600;">[置顶]</span><?php endif; ?>
- <?php echo safe_output($detail_news['name']); ?>
- </div>
- <div class="detail-meta">
- <span class="category-tag" style="background:<?php echo get_category_color($detail_news['cat_id']); ?>;"><?php echo get_category_name($detail_news['cat_id']); ?></span>
- <span>发布时间:<?php echo format_time($detail_news['time']); ?></span>
- <span>浏览:<?php echo isset($detail_news['views']) ? intval($detail_news['views']) : 0; ?>次</span>
- <span>回复:<?php echo isset($detail_news['replies']) ? intval($detail_news['replies']) : 0; ?>条</span>
- <span>支持:<?php echo isset($detail_news['like']) ? intval($detail_news['like']) : 0; ?></span>
- <span>反对:<?php echo isset($detail_news['dislike']) ? intval($detail_news['dislike']) : 0; ?></span>
- <?php if (is_admin()): ?>
- <span>IP:<?php echo isset($detail_news['ip']) ? safe_output($detail_news['ip']) : '未知'; ?></span>
- <?php endif; ?>
-
- <span style="float:right;">
- <form method="post" style="display:inline;" onsubmit="return submitVote(this);">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="vote">
- <input type="hidden" name="id" value="<?php echo intval($detail_news['id']); ?>">
- <input type="hidden" name="type" value="like">
- <button type="submit" style="background:#E8F5E9;border:1px solid #81C784;color:#2E7D32;padding:3px 10px;cursor:pointer;">👍 支持</button>
- </form>
- <form method="post" style="display:inline;" onsubmit="return submitVote(this);">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="vote">
- <input type="hidden" name="id" value="<?php echo intval($detail_news['id']); ?>">
- <input type="hidden" name="type" value="dislike">
- <button type="submit" style="background:#FFEBEE;border:1px solid #EF9A9A;color:#C62828;padding:3px 10px;cursor:pointer;margin-left:5px;">👎 反对</button>
- </form>
- </span>
- </div>
- </div>
-
- <div class="detail-content">
- <?php if (!empty($detail_news['image'])): ?>
- <div style="text-align:center;margin-bottom:20px;">
- <img src="<?php echo safe_output($detail_news['image']); ?>" style="max-width:100%;max-height:400px;border:1px solid #E0E8F0;padding:5px;background:#F5F8FC;cursor:pointer;" onclick="showImage('<?php echo safe_output($detail_news['image']); ?>')" alt="" />
- </div>
- <?php endif; ?>
-
- <?php echo safe_output($detail_news['content']); ?>
- </div>
-
- <div style="margin:20px;padding:15px;background:#F5F8FC;border:1px solid #E0E8F0;">
- <h3 style="color:#3366CC;margin-bottom:15px;font-size:14px;">发表回复</h3>
- <form method="post" onsubmit="return validateForm(this);">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="post_reply">
- <input type="hidden" name="pid" value="<?php echo intval($detail_news['id']); ?>">
- <input type="hidden" name="redirect" value="?view=<?php echo intval($detail_news['id']); ?>">
- <div style="margin-bottom:10px;">
- <input type="text" name="rname" placeholder="您的昵称" style="width:150px;padding:5px;border:1px solid #B8D0E8;margin-right:10px;" required>
- <input type="submit" value="发表回复" style="padding:5px 20px;background:#3366CC;color:#FFF;border:none;cursor:pointer;">
- </div>
- <textarea name="rcontent" placeholder="请输入回复内容..." style="width:100%;height:80px;padding:5px;border:1px solid #B8D0E8;box-sizing:border-box;" required></textarea>
- </form>
- </div>
-
- <?php
- $related_replies = array();
- foreach ($reply as $rid => $r) {
- if (isset($r['pid']) && $r['pid'] == $detail_news['id']) {
- $related_replies[$rid] = $r;
- }
- }
- if (!empty($related_replies)):
- ?>
- <div style="margin:20px;">
- <h3 style="color:#3366CC;margin-bottom:15px;font-size:14px;">全部回复 (<?php echo count($related_replies); ?>)</h3>
- <?php foreach ($related_replies as $rid => $reply_data): ?>
- <div class="reply-item" style="margin-bottom:10px;">
- <div class="reply-header" style="background:#E8F0F8;padding:5px 10px;">
- <strong style="color:#3366CC;"><?php echo safe_output($reply_data['name']); ?></strong>
- <span style="color:#999;margin-left:10px;"><?php echo format_time($reply_data['time']); ?></span>
- <?php if (is_admin()): ?>
- <span style="float:right;">
- <form method="post" style="display:inline;">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="delete_reply">
- <input type="hidden" name="rid" value="<?php echo intval($rid); ?>">
- <input type="hidden" name="redirect" value="?view=<?php echo intval($detail_news['id']); ?>">
- <a href="javascript:void(0)" onclick="if(confirm('删除这条回复?')){this.parentNode.submit();}" style="color:#C00;font-size:11px;">删除</a>
- </form>
- </span>
- <?php endif; ?>
- </div>
- <div class="reply-content" style="padding:10px;background:#FAFBFC;border:1px solid #E8EDF2;border-top:none;">
- <?php echo safe_output($reply_data['content']); ?>
- </div>
- </div>
- <?php endforeach; ?>
- </div>
- <?php endif; ?>
-
- <div class="detail-footer">
- <a href="<?php echo SITE_URL; ?>" style="display:inline-block;padding:8px 20px;background:#3366CC;color:#FFF;text-decoration:none;">← 返回首页</a>
- </div>
- </div>
- </div>
-
- <?php endif; ?>
-
- <div class="clear"></div>
- </div>
-
- <div class="footer">
- <div class="footer-links">
- <a href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=viewthread&tid=39&extra=page%3D1" target="_blank">申请友链</a>
- <a href="http://m.mjjlb.com" target="_blank">手机浏览</a>
- <a href="http://mjjcfpw.mjjlb.com">网站地图</a>
- <a href="http://forum.mjjlb.com/mjjcfpw/misc.php?mod=faq" target="_blank">常见问题</a>
- <a href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=forumdisplay&fid=26" target="_blank">公告反馈</a>
- <a href="http://blog.mjjlb.com/wechat.html">联系我们</a>
- <a href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=viewthread&tid=4">关于我们</a>
- <a href="http://forum.mjjlb.com/mjjcfpw/member.php?mod=register">会员注册</a>
- <a href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=viewthread&tid=30" target="_blank">招纳贤士</a>
- <a href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=viewthread&tid=63" target="_blank">汇款方式</a>
- <a href="http://forum.mjjlb.com/mjjcfpw/search.php" target="_blank">网站搜索</a>
- </div>
- <div class="footer-copyright">
- <p>今日访问:<?php echo $hits['today']; ?> | 总访问:<?php echo $hits['total']; ?></p>
- <p><?php echo SITE_NAME; ?> - MJJLB新闻主站</p>
- <p>迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上新闻资讯平台</p>
- <p>© 2024-<?php echo date('Y'); ?> 迈克尔·杰克逊中国歌迷网站(MICHAEL JOSEPH JACKSON CHINESE FANS' PORTAL WEBSITE)版权所有</p>
- </div>
- </div>
- </div>
- </body>
- </html>
复制代码
网站论坛:
- <!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta charset="utf-8">
- <meta name="viewport">
- <title>中国迈迷网 - 歌迷论坛 - Powered by Discuz!</title>
- <meta name="Keywords" content="迈克尔, 杰克逊, 中国迈迷网站, 中文歌迷网站, 迈克尔杰克逊, 迈克尔·杰克逊, 麥可傑克森, 傑克森, 麥可, Michael, Jackson, King of Pop, Michael Jackson, Chinese fanclub, fanclub, 歌迷, 中国迈迷网, MJJLB, MJ, 爱MJJ的烙饼, 偶像, 音乐, 流行音乐之王, 流行之王, 米高積遜, 積遜, 米高, 娱乐, 欧美音乐">
- <meta name="description" content="中国迈迷网 - 歌迷论坛正式成立于2025年3月30日,是迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上交流平台,也是一个集MJ资讯共享与MJ文化传播为一体的迈迷庇护所。">
- <link rel="icon" href="http://bbs.mjjlb.com/logo.png">
- <style>
- :root{
- --primary:#cc0000;
- --dark:#a90000;
- --light:#fff;
- --max:925px;
- --radius:50%;
- --gap:12px;
- }
- *{margin:0;padding:0;box-sizing:border-box}
- body{
- font:16px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif;
- background:#000;color:var(--light);
- -webkit-font-smoothing:antialiased;
- }
- a img{border:none}
- header{text-align:center;padding:20px 0;background:var(--primary);position:relative}
- header img{max-width:100%;height:auto}
- .banner{max-width:var(--max);margin:0 auto}
- .banner img{width:100%;display:block}
- nav{background:var(--dark);padding:30px 0}
- .nav-inner{
- max-width:var(--max);margin:0 auto;
- display:flex;flex-wrap:wrap;gap:var(--gap);
- justify-content:center;align-items:center;
- }
- .nav-inner a{flex:0 1 160px;text-align:center}
- .nav-inner img{width:100%;height:auto;transition:transform .25s}
- .nav-inner img:hover{transform:scale(1.05)}
- footer{
- text-align:center;padding:20px 10px;
- font-size:14px;color:#aaa;
- }
- .music-btn {
- position: absolute;
- top: 20px;
- right: 20px;
- background: rgba(255,255,255,0.2);
- border: 2px solid var(--light);
- border-radius: 50%;
- width: 50px;
- height: 50px;
- cursor: pointer;
- display: flex;
- align-items: center;
- justify-content: center;
- transition: all 0.3s ease;
- z-index: 100;
- }
- .music-btn:hover {
- background: rgba(255,255,255,0.3);
- transform: scale(1.1);
- }
- .music-btn.playing {
- background: var(--primary);
- border-color: var(--primary);
- }
- .music-btn svg {
- width: 24px;
- height: 24px;
- fill: var(--light);
- }
- @media(max-width:600px){
- .nav-inner{flex-direction:column}
- .music-btn {
- top: 10px;
- right: 10px;
- width: 40px;
- height: 40px;
- }
- .music-btn svg {
- width: 20px;
- height: 20px;
- }
- }
- </style>
- </head>
- <body>
- <header>
- <img src="http://bbs.mjjlb.com/michael-logo.png" alt="Logo">
- <div class="music-btn" id="musicBtn" title="播放/暂停音乐">
- <svg class="play-icon" viewBox="0 0 24 24">
- <path d="M8 5v14l11-7z"/>
- </svg>
- <svg class="pause-icon" viewBox="0 0 24 24" style="display:none;">
- <path d="M6 19h4V5H6v14zm8-14v14h4V5h-4z"/>
- </svg>
- </div>
- </header>
- <section class="banner">
- <img src="http://bbs.mjjlb.com/mjjlb.png" alt="MJ Banner">
- </section>
- <nav>
- <div class="nav-inner">
- <a target="_blank" href="http://mjjcfpw.mjjlb.com"><img src="https://bbs.mjjlb.com/mj.png" alt="MJJLB"></a>
- <a target="_blank" href="http://forum.mjjlb.com/mjjcfpw"><img src="http://bbs.mjjlb.com/forum.png" alt="网站论坛"></a>
- <a target="_blank" href="https://tieba.baidu.com/mjj"><img src="http://bbs.mjjlb.com/tieba.png" alt="百度贴吧"></a>
- <a target="_blank" href="https://weibo.com/p/100808bba1cd4faf496dac266c28a4f694a15e/super_index"><img src="https://bbs.mjjlb.com/wbch.png" alt="微博超话"></a>
- <a target="_blank" href="https://pd.qq.com/s/5xgn9w0wy?b=9"><img src="http://bbs.mjjlb.com/channel.png" alt="腾讯频道"></a>
- </div>
- </nav>
- <footer>
- ©MJJLB网站论坛 – 迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上交流平台
- </footer>
- <audio id="bgMusic" loop>
- <source src="http://bbs.mjjlb.com/mjjlb.mp3" type="audio/mpeg">
- 您的浏览器不支持音频播放。
- </audio>
- <script>
- const musicBtn = document.getElementById('musicBtn');
- const bgMusic = document.getElementById('bgMusic');
- const playIcon = musicBtn.querySelector('.play-icon');
- const pauseIcon = musicBtn.querySelector('.pause-icon');
- let isPlaying = false;
- musicBtn.addEventListener('click', function() {
- if (isPlaying) {
- bgMusic.pause();
- playIcon.style.display = 'block';
- pauseIcon.style.display = 'none';
- musicBtn.classList.remove('playing');
- isPlaying = false;
- } else {
- bgMusic.play().catch(function(error) {
- console.log('音乐播放失败:', error);
- alert('音乐播放失败,请检查网络连接或浏览器设置');
- });
- playIcon.style.display = 'none';
- pauseIcon.style.display = 'block';
- musicBtn.classList.add('playing');
- isPlaying = true;
- }
- });
- bgMusic.addEventListener('error', function() {
- console.log('音乐文件加载失败');
- musicBtn.style.display = 'none';
- });
- document.addEventListener('DOMContentLoaded', function() {
- setTimeout(function() {
- bgMusic.play().then(function() {
- playIcon.style.display = 'none';
- pauseIcon.style.display = 'block';
- musicBtn.classList.add('playing');
- isPlaying = true;
- }).catch(function(error) {
- console.log('自动播放被阻止,等待用户交互:', error);
- });
- }, 1000);
- });
- </script>
- </body>
- </html>
复制代码
电脑网站:
- <!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport">
- <title>中国迈迷网 - 迈克尔·杰克逊中国歌迷网站 - 迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上平台</title>
- <meta name="Keywords" content="迈克尔, 杰克逊, 迈克尔·杰克逊中国歌迷网站, 中文歌迷网站, 迈克尔杰克逊, 迈克尔·杰克逊, 麥可傑克森, 傑克森, 麥可, Michael, Jackson, King of Pop, Michael Jackson, Chinese fanwebsite, fanclub, 歌迷, 中国迈迷网, MJJLB, MJ, 爱MJJ的烙饼, 偶像, 音乐, 流行音乐之王, 流行之王, 米高積遜, 積遜, 米高, 娱乐, 欧美音乐">
- <meta name="description" content="中国迈迷网成立于2025年1月12日,是迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上平台,也是一个集MJ资讯共享与MJ文化传播为一体的迈迷庇护所。">
- <link rel="shortcut icon" href="http://mjjcfpw.mjjlb.com/mjjcfpw.png">
- <style>
- .music-control {
- position: fixed;
- bottom: 20px;
- right: 20px;
- z-index: 9999;
- background: #bc0605;
- color: #fff;
- border: none;
- border-radius: 50%;
- width: 50px;
- height: 50px;
- font-size: 20px;
- cursor: pointer;
- box-shadow: 0 4px 8px rgba(0,0,0,0.3);
- transition: all 0.3s ease;
- }
-
- .music-control:hover {
- background: #a00504;
- transform: scale(1.1);
- }
-
- .music-control.playing {
- animation: pulse 1.5s infinite;
- }
-
- @keyframes pulse {
- 0% { box-shadow: 0 0 0 0 rgba(188, 6, 5, 0.7); }
- 70% { box-shadow: 0 0 0 10px rgba(188, 6, 5, 0); }
- 100% { box-shadow: 0 0 0 0 rgba(188, 6, 5, 0); }
- }
-
- .flt-link{
- position:fixed;
- z-index:9999;
- pointer-events:auto;
- animation:flt 25s infinite linear;
- }
- .flt-link img{
- display:block;
- height:auto;
- width:100px;
- border:none;
- }
- @keyframes flt{
- 0% {top:10%; left:-100px;}
- 25% {top:50%; left:calc(100vw - 100px);}
- 50% {top:80%; left:50vw;}
- 75% {top:20%; left:80vw;}
- 100% {top:10%; left:calc(100vw + 100px);}
- }
-
- body {
- margin: 0 auto;
- font-size: 14px;
- font-family: "微软雅黑";
- line-height: 22px;
- background: #dcdbdb;
- }
-
- div,p,ul,li,h1 {
- height: auto;
- margin: 0;
- padding: 0;
- vertical-align: middle;
- }
-
- li {
- list-style: none;
- }
-
- img {
- border: 0;
- margin: 0;
- padding: 0;
- }
-
- .web {
- width: 970px;
- height: auto;
- overflow: hidden;
- padding: 20px 15px;
- margin: 0 auto;
- background: #ffffff;
- }
-
- .logo {
- height: 63px;
- }
-
- .nav {
- width: 100%;
- height: 37px;
- background: #bc0605;
- }
-
- .nav ul {
- width: 500px;
- margin: 0 auto;
- }
-
- .nav ul li {
- height: 37px;
- line-height: 37px;
- margin: 0px 20px;
- float: left;
- }
-
- .nav ul li a {
- font-size: 16px;
- color: #FFF;
- text-decoration: none;
- }
-
- .nav ul li a:hover {
- color: #f8b637;
- text-decoration: underline;
- }
-
- .banner {
- height: 281px;
- }
-
- h1 {
- height: 60px;
- line-height: 60px;
- text-align: center;
- font-size: 20px;
- margin-bottom: 35px;
- }
-
- .box1 {
- height: 250px;
- }
-
- .box1 ul {
- padding: 0px;
- }
-
- .box1 ul li {
- width: 218px;
- float: left;
- margin: 0px 10px;
- text-align: center;
- }
-
- .box1 ul li h2 {
- height: 45px;
- line-height: 45px;
- font-size: 18px;
- }
-
- .box1 ul li p {
- font-size: 14px;
- }
-
- .news-section {
- margin-bottom: 50px;
- overflow: hidden;
- }
-
- .news-container {
- display: flex;
- gap: 20px;
- }
-
- .news-left {
- flex: 1;
- background: #f8f8f8;
- padding: 20px;
- border-radius: 8px;
- }
-
- .news-right {
- width: 300px;
- background: #f0f0f0;
- padding: 20px;
- border-radius: 8px;
- }
-
- .news-item {
- border-bottom: 1px solid #ddd;
- padding: 15px 0;
- }
-
- .news-item:last-child {
- border-bottom: none;
- }
-
- .news-item h3 {
- font-size: 16px;
- color: #bc0605;
- margin-bottom: 8px;
- }
-
- .news-item p {
- font-size: 14px;
- color: #666;
- line-height: 1.6;
- }
-
- .news-meta {
- font-size: 12px;
- color: #999;
- margin-top: 5px;
- }
-
- .news-right h3 {
- font-size: 18px;
- color: #333;
- margin-bottom: 15px;
- border-left: 4px solid #bc0605;
- padding-left: 10px;
- }
-
- .hot-news-item {
- padding: 10px 0;
- border-bottom: 1px dashed #ccc;
- }
-
- .hot-news-item:last-child {
- border-bottom: none;
- }
-
- .hot-news-item a {
- color: #333;
- text-decoration: none;
- font-size: 14px;
- }
-
- .hot-news-item a:hover {
- color: #bc0605;
- }
-
- .box2 {
- height: 562px;
- margin-bottom: 20px;
- }
-
- .box2-left {
- width: 660px;
- float: left;
- }
-
- .box2-left-shang {
- height: 264px;
- margin-bottom: 32px;
- }
-
- .box2sbx1 {
- width: 388px;
- height: 264px;
- float: left;
- }
-
- .box2sbx2 {
- width: 258px;
- height: 264px;
- float: right;
- }
-
- .box2-left-xia {
- height: 266px;
- }
-
- .box2xbx1 {
- width: 253px;
- height: 266px;
- float: left;
- }
-
- .box2xbx2 {
- width: 393px;
- height: 266px;
- float: right;
- }
-
- .box2-right {
- width: 278px;
- float: right;
- }
-
- .foot {
- height: 100px;
- line-height: 100px;
- background: #000;
- text-align: center;
- font-size: 14px;
- color: #FFF;
- }
-
- .tit {
- width: 300px;
- height: 30px;
- line-height: 30px;
- text-align: center;
- color: #FFF;
- background: #bc0605;
- margin: 0 auto;
- margin-top: 30px;
- margin-bottom: 30px;
- }
-
- .erweb {
- height: auto;
- overflow: hidden;
- line-height: 25px;
- font-size: 14px;
- margin-bottom: 50px;
- }
-
- .donghua {
- width: 447px;
- height: 253px;
- float: left;
- margin-right: 20px;
- margin-bottom: 10px;
- }
-
- .erweb p {
- text-indent: 2em;
- }
-
- .sanweb {
- height: auto;
- overflow: hidden;
- margin-bottom: 50px;
- }
-
- .sanweb ul {
- padding: 0px;
- }
-
- .sanweb ul li {
- width: 460px;
- float: left;
- padding: 10px;
- }
-
- .sanweb ul li img {
- width: 460px;
- height: 300px;
- display: block;
- }
-
- .xiangq {
- width: 420px;
- height: 200px;
- padding: 20px;
- }
-
- .xiangq h1 {
- height: 40px;
- font-size: 16px;
- line-height: 40px;
- margin-bottom: 10px;
- border-bottom: #D8D7D7 1px solid;
- }
-
- .xiangq p {
- font-size: 14px;
- text-indent: 2em;
- }
-
- .box {
- width: 840px;
- height: 333px;
- margin: 0 auto;
- margin-top: 30px;
- margin-bottom: 20px;
- }
-
- .box img {
- width: 428px;
- height: 333px;
- float: left;
- }
-
- .box .right {
- width: 375px;
- height: 291px;
- padding-left: 35px;
- padding-top: 40px;
- float: left;
- border: #333333 1px solid;
- }
-
- .box .right h2 {
- font-size: 16px;
- }
-
- .box .right p {
- color: #787676;
- font-size: 14px;
- line-height: 30px;
- margin-right: 20px;
- }
-
- .inpt {
- height: 35px;
- line-height: 35px;
- background: #eef1f6;
- border: #b7c4cd 1px solid;
- padding-left: 10px;
- color: #b7c4cd;
- font-size: 14px;
- width: 350px;
- }
-
- .wenb {
- height: 150px;
- line-height: 35px;
- background: #eef1f6;
- border: #b7c4cd 1px solid;
- padding-left: 10px;
- color: #b7c4cd;
- font-size: 14px;
- width: 350px;
- }
-
- .btn {
- display: block;
- width: 220px;
- height: 40px;
- background: #1eb0fc;
- line-height: 40px;
- text-align: center;
- font-size: 14px;
- color: #FFF;
- padding: 0px;
- border: none;
- margin-bottom: 50px;
- margin-top: 10px;
- }
-
- img {
- max-width: 100%;
- height: auto;
- display: block;
- }
-
- .banner {
- width: 100%;
- aspect-ratio: 970 / 281;
- }
-
- .banner img {
- width: 100%;
- height: 100%;
- object-fit: cover;
- }
-
- .box1 ul li img {
- width: 100%;
- aspect-ratio: 218 / 150;
- object-fit: cover;
- }
-
- .box2sbx1 img,
- .box2sbx2 img,
- .box2xbx1 img,
- .box2xbx2 img {
- width: 100%;
- aspect-ratio: 388 / 264;
- object-fit: cover;
- }
-
- .box2-right img {
- width: 100%;
- aspect-ratio: 278 / 562;
- object-fit: cover;
- }
-
- @supports not (aspect-ratio: 1 / 1) {
- .banner,
- .box1 ul li img,
- .box2sbx1 img,
- .box2sbx2 img,
- .box2xbx1 img,
- .box2xbx2 img,
- .box2-right img {
- height: 0;
- padding-bottom: 56.25%;
- overflow: hidden;
- position: relative;
- }
-
- .banner img,
- .box1 ul li img,
- .box2sbx1 img,
- .box2sbx2 img,
- .box2xbx1 img,
- .box2xbx2 img,
- .box2-right img {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- object-fit: cover;
- }
- }
-
- .slider-wrap {
- position: relative;
- width: 100%;
- max-width: 970px;
- margin: 20px auto 0;
- overflow: hidden;
- border-radius: 8px;
- box-shadow: 0 4px 12px rgba(0,0,0,.15);
- }
- .slider-track {
- display: flex;
- width: 500%;
- animation: slide 15s steps(5,end) infinite;
- }
- .slider-track a {
- width: 20%;
- flex-shrink: 0;
- }
- .slider-track img {
- width: 100%;
- aspect-ratio: 970 / 350;
- object-fit: cover;
- display: block;
- }
- @keyframes slide {
- 0% { transform: translateX(0); }
- 20% { transform: translateX(-20%); }
- 40% { transform: translateX(-40%); }
- 60% { transform: translateX(-60%); }
- 80% { transform: translateX(-80%); }
- 100% { transform: translateX(0); }
- }
- .slider-dots {
- position: absolute;
- bottom: 12px;
- left: 50%;
- transform: translateX(-50%);
- display: flex;
- gap: 8px;
- }
- .slider-dots li {
- width: 10px;
- height: 10px;
- border-radius: 50%;
- background: rgba(255,255,255,.6);
- cursor: pointer;
- list-style: none;
- }
- .slider-dots li.active {
- background: #bc0605;
- }
-
- .friendlink-section {
- width: 100%;
- max-width: 970px;
- margin: 40px auto 0;
- padding: 20px 0;
- background: #f8f8f8;
- border-radius: 8px;
- box-shadow: 0 2px 8px rgba(0,0,0,.08);
- }
- .friendlink-title {
- text-align: center;
- font-size: 18px;
- color: #bc0605;
- margin-bottom: 20px;
- font-weight: bold;
- }
- .friendlink-list {
- display: flex;
- flex-wrap: wrap;
- justify-content: center;
- gap: 15px 30px;
- padding: 0 20px;
- }
- .friendlink-list a {
- display: inline-block;
- padding: 6px 12px;
- background: #ffffff;
- border: 1px solid #ddd;
- border-radius: 4px;
- font-size: 14px;
- color: #333;
- text-decoration: none;
- transition: all .3s;
- }
- .friendlink-list a:hover {
- background: #bc0605;
- color: #fff;
- border-color: #bc0605;
- transform: translateY(-2px);
- }
- </style>
- </head>
- <body>
- <button class="music-control" id="musicBtn" title="点击播放/暂停音乐">播</button>
- <audio id="bgMusic" loop>
- <source src="http://pc.mjjlb.com/mjjlb.mp3" type="audio/mpeg">
- 您的浏览器不支持音频播放。
- </audio>
- <a class="flt-link" href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=viewthread&tid=50" target="_blank" rel="noopener">
- <img src="https://33026137.s21i.faiusr.com/4/17/ABUIABAEGAAggsjfxgYowNiL5gIwgAg4lAM.png" alt="MJJLB网站调查">
- </a>
- <div class="web">
- <a href="http://forum.mjjlb.com/mjjcfpw/forum.php?gid=3" target="_blank">
- <img src="https://33026137.s21i.faiusr.com/2/ABUIABACGAAgm-fJxgYopvSyvwEwtgc4Wg.jpg" style="width:100%;display:block;margin-bottom:20px;">
- <div class="logo"><a href="http://pc.mjjlb.com" target="_blank"><img src="https://33026137.s21i.faiusr.com/4/1/ABUIABAEGAAg_6PlxgYo4KOs4AMwjQI4QA.png"></div>
- <div class="nav">
- <ul>
- <li><a href="http://mjjcfpw.mjjlb.com">首页</a></li>
- <li><a href="http://news.mjjlb.com/mjjstation.php">新闻追踪</a></li>
- <li><a href="https://baike.baidu.com/item/%E8%BF%88%E5%85%8B%E5%B0%94%C2%B7%E6%9D%B0%E5%85%8B%E9%80%8A/170984">精彩人生</a></li>
- <li><a href="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzkwODg4MjI2OQ==&hide_subscribe_btn=1#wechat_redirect">珍品文库</a></li>
- <li><a href="http://forum.mjjlb.com/mjjcfpw">歌迷论坛</a></li>
- </ul>
- </div>
- <div class="banner">
- <img src="https://33026137.s21i.faiusr.com/2/1/ABUIABACGAAgzq6hugYooJzOPDDSBjjeAw.jpg" />
- </div>
- <a href="http://forum.mjjlb.com/mjjcfpw/member.php?mod=register" target="_blank">
- <img src="https://33026137.s21i.faiusr.com/4/17/ABUIABAEGAAglejKxgYowLvf-gcwgAg4YQ.png?v=1758641200" style="width:100%;display:block;margin-bottom:20px;">
- </a>
- <div class="box1">
- <ul>
- <li>
- <a href="http://www.mjjlb.com" target="_blank"><img src="http://pc.mjjlb.com/mjjlb.png" /></a>
- <p>MJJLB主站首页</p>
- </li>
- <li>
- <a href="http://mjjcfpw.mjjlb.com" target="_blank"><img src="http://pc.mjjlb.com/mjjcfpw.png" /></a>
- <p>MJJLB网站主页</p>
- </li>
- <li>
- <a href="http://news.mjjlb.com" target="_blank"><img src="http://pc.mjjlb.com/mjjstation.png" /></a>
- <p>MJJLB新闻主站</p>
- </li>
- <li>
- <a href="http://bbs.mjjlb.com" target="_blank"><img src="http://pc.mjjlb.com/mjjlbforum.png" /></a>
- <p>MJJLB网站论坛</p>
- </li>
- </ul>
- </div>
- <img src="https://33026137.s21i.faiusr.com/4/2/ABUIABAEGAAglfSDygYo7r3QcTCACDhu.png" style="width:100%;display:block;margin-bottom:20px;">
- <h1>网站公告&新闻资讯(<a href="http://forum.mjjlb.com/mjjcfpw/forum.php?gid=13">更多</a>)</h1>
- <div class="news-section">
- <div class="news-container">
- <div class="news-left">
- <div class="news-item">
- <div class="news-item">
- <h3>【更名公告】网站新名称:中国迈迷网</h3>
- <p>本站在全平台统一更名为“中国迈迷网”,原名为“胡萝卜烙饼网”。此次更名旨在统一各平台名称,使账号标识更加简洁、清晰且易于辨识。</p>
- <div class="news-meta">2025年12月14日 | 来源:MJJLB.com</div>
- </div>
- <h3>MJJLB.com发布迈克尔·杰克逊官方传记电影《迈克尔》专题宣传网页</h3>
- <p>2026年4月24日,迈克尔·杰克逊的官方传记电影《迈克尔·杰克逊:巨星之路》将在全球震撼上映,为了让大家能尽情交流这部备受期待的作品,我们在中国迈迷网特别建立了这个专题宣传网页(michael.mjjlb.com)。无论你是从哪里来的迈迷朋友,都欢迎在此分享关于电影的爆料、最新消息,尽情讨论、吐槽、交流!</p>
- <div class="news-meta">2025年10月10日 | 来源:MJJLB.com</div>
- </div>
- <div class="news-item">
- <h3>迈克尔·杰克逊的官方传记电影《迈克尔》开通tiktok账号,关于电影首支预告片的猜测很有可能成真!</h3>
- <p>近日,迈克尔·杰克逊的官方传记电影《迈克尔》开通tiktok账号!之前就有第三方媒体预测,迈克尔·杰克逊的官方传记电影《迈克尔》的首支预告片,将在同为环球影业全球发行的电影《魔法坏女巫2》上映(2025年11月19日)前后发布。</p>
- <div class="news-meta">2025年10月8日 | 来源:MJJLB.com</div>
- </div>
- <div class="news-item">
- <h3>MJJLB.com迎来重大更新,但网站论坛的大部分数据丢失了!!</h3>
- <p>MJJLB网站论坛因攻击重建后数据全丢,已换新服务器升级系统并启新域名,盼用户重新注册回归。</p>
- <div class="news-meta">2025年1月10日 | 来源:MJJLB.com</div>
- </div>
- </div>
- <div class="news-right">
- <h3>新闻资讯(<a href="http://forum.mjjlb.com/mjjcfpw/forum.php?gid=1">更多最新新闻资讯</a>)</h3>
- <div class="hot-news-item">
- <a href="https://mp.weixin.qq.com/s/_wal4zcbmORpyj2viEujYw">电影《迈克尔·杰克逊:巨星之路》的预告片引爆全球!粉丝该抱持怎样的期待?</a>
- </div>
- <div class="hot-news-item">
- <a href="https://mp.weixin.qq.com/s/8YgwwskyvAoHVWaxicBN4g">天啊,要哭了!迈克尔·杰克逊官方传记电影《迈克尔·杰克逊:巨星之路》首曝预告!!</a>
- </div>
- <div class="hot-news-item">
- <a href="https://mp.weixin.qq.com/s/8aMRGPyUe9bK6iJExy9Zew">迈克尔·杰克逊的官方传记电影《迈克尔》开通tiktok账号,关于电影首支预告片的猜测很有可能成真!</a>
- </div>
- <div class="hot-news-item">
- <a href="https://mp.weixin.qq.com/s/q17qakUxanh0lZfhz3n3WQ">摩城公司宣布限定发行《来啦,圣诞老人》七寸红胶单曲唱片!</a>
- </div>
- <div class="hot-news-item">
- <a href="https://mp.weixin.qq.com/s/MH6QRJOZBFJD9453U_HSyw">迈克尔·杰克逊的官方频道将《黑或白》的音乐短片升级为4K版本!竟然还加了新镜头</a>
- </div>
- <div class="hot-news-item">
- <a href="https://mp.weixin.qq.com/s/asQT8kqNorQc7FIxU-G0bg">确定了,迈克尔·杰克逊的传记电影《迈克尔》又一次改档</a>
- </div>
- <div class="hot-news-item">
- <a href="https://mp.weixin.qq.com/s/sDddJ1ksq47YgtsivGyi2Q">昔日"挚友"变勒索者:弗兰克·卡西欧被控敲诈迈克尔·杰克逊的遗产并深陷赌债丑闻!</a>
- </div>
- <div class="hot-news-item">
- <a href="https://mp.weixin.qq.com/s/IvCb4Esv-M_jOq11i_Vcdg">迈克尔·杰克逊遗产委员会发布声明邮件:《危险》《历史》纪录片项目将于传记电影上映后重启!</a>
- </div>
- <div class="hot-news-item">
- </div>
- </div>
- </div>
- </div>
- <h1>MJ魅力图库(更多MJ美图,<a href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=forumdisplay&fid=8">请点击这里</a>)</h1>
- <div class="slider-wrap">
- <div class="slider-track" id="sliderTrack">
- <a href="https://33026137.s21i.faiusr.com/2/1/ABUIABACGAAgs5iEuwYo_ZO80QMw_wU4gAQ.jpg" target="_blank"><img src="https://33026137.s21i.faiusr.com/2/1/ABUIABACGAAgs5iEuwYo_ZO80QMw_wU4gAQ.jpg" alt="MJ"></a>
- <a href="https://33026137.s21i.faiusr.com/2/1/ABUIABACGAAgu5uEuwYoo-O7owQw-A44twg.jpg" target="_blank"><img src="https://33026137.s21i.faiusr.com/2/1/ABUIABACGAAgu5uEuwYoo-O7owQw-A44twg.jpg" alt="MJ"></a>
- <a href="https://33026137.s21i.faiusr.com/2/1/ABUIABACGAAgl7ChugYozIbroAIwgAw4gAg.jpg" target="_blank"><img src="https://33026137.s21i.faiusr.com/2/1/ABUIABACGAAgl7ChugYozIbroAIwgAw4gAg.jpg" alt="MJ"></a>
- <a href="https://33026137.s21i.faiusr.com/2/1/ABUIABACGAAg29ihugYo9M-AlwYwgB445BQ.jpg" target="_blank"><img src="https://33026137.s21i.faiusr.com/2/1/ABUIABACGAAg29ihugYo9M-AlwYwgB445BQ.jpg" alt="MJ"></a>
- <a href="https://33026137.s21i.faiusr.com/2/1/ABUIABACGAAg29KhugYo3Lvv1gUwzRE4gAo.jpg" target="_blank"><img src="https://33026137.s21i.faiusr.com/2/1/ABUIABACGAAg29KhugYo3Lvv1gUwzRE4gAo.jpg" alt="MJ"></a>
- </div>
- <ul class="slider-dots" id="sliderDots"></ul>
- </div>
- <div class="friendlink-section">
- <div class="friendlink-title">友情链接</div>
- <div class="friendlink-list">
- <a href="http://www.michaeljackson.com" target="_blank">迈克尔·杰克逊官方网站</a>
- <a href="http://www.mjjlb.com" target="_blank">MJJLB主站首页</a>
- <a href="http://mjjcfpw.mjjlb.com" target="_blank">MJJLB网站首页</a>
- <a href="http://news.mjjlb.com" target="_blank">MJJLB新闻主站</a>
- <a href="http://bbs.mjjlb.com" target="_blank">MJJLB网站论坛</a>
- <a href="http://pc.mjjlb.com" target="_blank">MJJLB电脑网站</a>
- <a href="http://m.mjjlb.com" target="_blank">MJJLB手机网站</a>
- <a href="https://tieba.baidu.com/mjj" target="_blank">百度MJJ贴吧</a>
- <a href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=viewthread&tid=3" target="_blank">MJJLB官方微信公众号</a>
- </div>
- </div>
- <a href="http://m.mjjlb.com" style="text-decoration: none; color: inherit;">
- <div class="foot">点击此处将网站切换至移动端界面</div>
- </a>
- </div>
- <script>
- const musicBtn = document.getElementById('musicBtn');
- const bgMusic = document.getElementById('bgMusic');
- let isPlaying = false;
- musicBtn.addEventListener('click', function() {
- if (isPlaying) {
- bgMusic.pause();
- musicBtn.classList.remove('playing');
- musicBtn.textContent = '播';
- } else {
- bgMusic.play().catch(function(error) {
- console.log('音乐播放失败:', error);
- alert('音乐播放失败,请检查网络连接或浏览器设置。');
- });
- musicBtn.classList.add('playing');
- musicBtn.textContent = '停';
- }
- isPlaying = !isPlaying;
- });
- const track = document.getElementById('sliderTrack');
- const dots = document.getElementById('sliderDots');
- const imgN = track.children.length;
- for (let i = 0; i < imgN; i++) {
- const li = document.createElement('li');
- if (i === 0) li.classList.add('active');
- dots.appendChild(li);
- }
- let step = 0;
- setInterval(() => {
- step = (step + 1) % imgN;
- [...dots.children].forEach((dot, idx) => {
- dot.classList.toggle('active', idx === step);
- });
- }, 3000);
- </script>
- </body>
- </html>
复制代码
手机网站:
- <!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
- <title>中国迈迷网 - 手机版 - 迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上平台</title>
- <meta name="Keywords" content="迈克尔, 杰克逊, 中国迈迷网站, 中文歌迷网站, 迈克尔杰克逊, 迈克尔·杰克逊, 麥可傑克森, 傑克森, 麥可, Michael, Jackson, King of Pop, Michael Jackson, Chinese fanclub, fanclub, 歌迷, 中国迈迷网, MJJLB, MJ, 爱MJJ的烙饼, 偶像, 音乐, 流行音乐之王, 流行之王, 米高積遜, 積遜, 米高, 娱乐, 欧美音乐">
- <meta name="Description" content="中国迈迷网成立于2025年1月12日,是迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上平台,也是一个集MJ资讯共享与MJ文化传播为一体的迈迷庇护所。">
- <link rel="shortcut icon" href="http://mjjcfpw.mjjlb.com/mjjlb.jpg">
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
- <style>
- * {
- margin: 0;
- padding: 0;
- box-sizing: border-box;
- -webkit-tap-highlight-color: transparent;
- }
-
- :root {
- --primary: #fb7299;
- --bg: #f4f4f5;
- --card: #ffffff;
- --text: #18181b;
- --text-secondary: #71717a;
- --border: #e4e4e7;
- }
-
- body {
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
- background: var(--bg);
- color: var(--text);
- line-height: 1.5;
- }
-
- .container {
- max-width: 430px;
- margin: 0 auto;
- background: var(--bg);
- min-height: 100vh;
- }
-
- .header {
- background: var(--card);
- padding: 10px 16px;
- display: flex;
- align-items: center;
- justify-content: space-between;
- position: sticky;
- top: 0;
- z-index: 100;
- border-bottom: 1px solid var(--border);
- }
-
- .header-left {
- display: flex;
- align-items: center;
- gap: 12px;
- }
-
- .menu-btn {
- width: 36px;
- height: 36px;
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- gap: 5px;
- cursor: pointer;
- border-radius: 8px;
- }
-
- .menu-btn:active {
- background: #f4f4f5;
- }
-
- .menu-btn span {
- display: block;
- width: 20px;
- height: 2px;
- background: var(--text);
- border-radius: 1px;
- }
-
- .logo-text {
- font-size: 17px;
- font-weight: 600;
- }
-
- .search-btn {
- width: 36px;
- height: 36px;
- display: flex;
- align-items: center;
- justify-content: center;
- border-radius: 8px;
- color: var(--text-secondary);
- font-size: 18px;
- background: none;
- border: none;
- cursor: pointer;
- }
-
- .search-btn:active {
- background: #f4f4f5;
- }
-
- .nav-tabs {
- background: var(--card);
- display: flex;
- padding: 0 12px;
- border-bottom: 1px solid var(--border);
- overflow-x: auto;
- scrollbar-width: none;
- }
-
- .nav-tabs::-webkit-scrollbar {
- display: none;
- }
-
- .nav-tab {
- padding: 12px 14px;
- font-size: 14px;
- color: var(--text-secondary);
- white-space: nowrap;
- text-decoration: none;
- position: relative;
- font-weight: 500;
- }
-
- .nav-tab.active {
- color: var(--primary);
- font-weight: 600;
- }
-
- .nav-tab.active::after {
- content: '';
- position: absolute;
- bottom: 0;
- left: 14px;
- right: 14px;
- height: 2px;
- background: var(--primary);
- border-radius: 2px 2px 0 0;
- }
-
- .main-content {
- padding: 12px;
- }
-
- .banner-card {
- background: var(--card);
- border-radius: 12px;
- overflow: hidden;
- margin-bottom: 12px;
- box-shadow: 0 1px 3px rgba(0,0,0,0.05);
- }
-
- .banner-slider {
- position: relative;
- height: 160px;
- }
-
- .banner-slides {
- display: flex;
- transition: transform 0.3s ease;
- height: 100%;
- }
-
- .banner-slide {
- flex: 0 0 100%;
- height: 100%;
- }
-
- .banner-slide img {
- width: 100%;
- height: 100%;
- object-fit: cover;
- }
-
- .banner-dots {
- position: absolute;
- bottom: 10px;
- left: 0;
- right: 0;
- display: flex;
- justify-content: center;
- gap: 6px;
- }
-
- .banner-dot {
- width: 6px;
- height: 6px;
- border-radius: 50%;
- background: rgba(255,255,255,0.4);
- }
-
- .banner-dot.active {
- background: white;
- width: 14px;
- border-radius: 3px;
- }
-
- .section-card {
- background: var(--card);
- border-radius: 12px;
- margin-bottom: 12px;
- box-shadow: 0 1px 3px rgba(0,0,0,0.05);
- }
-
- .section-header {
- padding: 14px 16px;
- display: flex;
- align-items: center;
- justify-content: space-between;
- border-bottom: 1px solid var(--border);
- }
-
- .section-title {
- font-size: 15px;
- font-weight: 600;
- display: flex;
- align-items: center;
- gap: 6px;
- }
-
- .section-title i {
- color: var(--primary);
- font-size: 16px;
- }
-
- .section-more {
- font-size: 13px;
- color: var(--text-secondary);
- text-decoration: none;
- display: flex;
- align-items: center;
- gap: 2px;
- }
-
- .forum-list {
- padding: 4px 0;
- }
-
- .forum-item {
- display: flex;
- padding: 14px 16px;
- gap: 12px;
- text-decoration: none;
- color: inherit;
- }
-
- .forum-item:not(:last-child) {
- border-bottom: 1px solid var(--border);
- }
-
- .forum-icon {
- width: 44px;
- height: 44px;
- border-radius: 10px;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 20px;
- color: white;
- flex-shrink: 0;
- }
-
- .forum-icon.purple {
- background: linear-gradient(135deg, #c084fc 0%, #a855f7 100%);
- }
-
- .forum-icon.pink {
- background: linear-gradient(135deg, #f472b6 0%, #ec4899 100%);
- }
-
- .forum-icon.blue {
- background: linear-gradient(135deg, #60a5fa 0%, #3b82f6 100%);
- }
-
- .forum-body {
- flex: 1;
- min-width: 0;
- }
-
- .forum-title-wrap {
- display: flex;
- align-items: center;
- gap: 8px;
- margin-bottom: 6px;
- }
-
- .forum-title-text {
- font-size: 15px;
- font-weight: 600;
- color: var(--text);
- }
-
- .forum-tag {
- font-size: 11px;
- padding: 2px 6px;
- background: var(--primary);
- color: white;
- border-radius: 4px;
- font-weight: 500;
- }
-
- .forum-desc {
- font-size: 13px;
- color: var(--text-secondary);
- line-height: 1.6;
- display: -webkit-box;
- -webkit-line-clamp: 2;
- -webkit-box-orient: vertical;
- overflow: hidden;
- }
-
- .qrcode-block {
- padding: 16px;
- }
-
- .qrcode-title {
- font-size: 15px;
- font-weight: 600;
- margin-bottom: 14px;
- display: flex;
- align-items: center;
- gap: 6px;
- }
-
- .qrcode-title i {
- color: var(--primary);
- }
-
- .qrcode-content {
- display: flex;
- gap: 14px;
- }
-
- .qrcode-img {
- width: 90px;
- height: 90px;
- border-radius: 8px;
- overflow: hidden;
- border: 1px solid var(--border);
- flex-shrink: 0;
- }
-
- .qrcode-img img {
- width: 100%;
- height: 100%;
- object-fit: cover;
- }
-
- .qrcode-desc {
- flex: 1;
- font-size: 13px;
- color: var(--text-secondary);
- line-height: 1.7;
- display: flex;
- align-items: center;
- }
-
- .links-block {
- padding: 16px;
- }
-
- .links-title {
- font-size: 15px;
- font-weight: 600;
- margin-bottom: 16px;
- display: flex;
- align-items: center;
- gap: 6px;
- }
-
- .links-title i {
- color: var(--primary);
- }
-
- .links-grid {
- display: grid;
- grid-template-columns: repeat(4, 1fr);
- gap: 16px;
- }
-
- .link-item {
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 8px;
- text-decoration: none;
- color: inherit;
- }
-
- .link-icon-box {
- width: 48px;
- height: 48px;
- border-radius: 12px;
- background: #f4f4f5;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 20px;
- color: var(--primary);
- }
-
- .link-item:active .link-icon-box {
- transform: scale(0.95);
- }
-
- .link-label {
- font-size: 12px;
- color: var(--text-secondary);
- }
-
- .music-player {
- background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
- border-radius: 12px;
- padding: 16px;
- margin: 0 0 12px 0;
- color: white;
- }
-
- .music-header {
- display: flex;
- align-items: center;
- gap: 12px;
- margin-bottom: 14px;
- }
-
- .music-cover {
- width: 52px;
- height: 52px;
- border-radius: 8px;
- background: rgba(255,255,255,0.2);
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 22px;
- }
-
- .music-info {
- flex: 1;
- }
-
- .music-name {
- font-size: 15px;
- font-weight: 600;
- margin-bottom: 4px;
- }
-
- .music-artist {
- font-size: 12px;
- opacity: 0.9;
- }
-
- .music-controls {
- display: flex;
- align-items: center;
- gap: 12px;
- }
-
- .music-play-btn {
- width: 40px;
- height: 40px;
- border-radius: 50%;
- background: rgba(255,255,255,0.2);
- border: none;
- display: flex;
- align-items: center;
- justify-content: center;
- cursor: pointer;
- color: white;
- font-size: 16px;
- }
-
- .music-play-btn:active {
- transform: scale(0.95);
- background: rgba(255,255,255,0.3);
- }
-
- .music-progress-wrap {
- flex: 1;
- }
-
- .music-progress-bar {
- height: 3px;
- background: rgba(255,255,255,0.3);
- border-radius: 2px;
- margin-bottom: 6px;
- position: relative;
- cursor: pointer;
- }
-
- .music-progress-fill {
- height: 100%;
- width: 0%;
- background: white;
- border-radius: 2px;
- position: relative;
- }
-
- .music-progress-dot {
- position: absolute;
- right: -4px;
- top: 50%;
- transform: translateY(-50%);
- width: 8px;
- height: 8px;
- background: white;
- border-radius: 50%;
- opacity: 0;
- }
-
- .music-progress-bar:active .music-progress-dot {
- opacity: 1;
- }
-
- .music-time {
- display: flex;
- justify-content: space-between;
- font-size: 11px;
- opacity: 0.8;
- }
-
- .footer {
- text-align: center;
- padding: 20px 16px;
- font-size: 12px;
- color: var(--text-secondary);
- }
-
- .footer p {
- margin: 4px 0;
- }
-
- .sidebar-overlay {
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background: rgba(0,0,0,0.5);
- z-index: 200;
- opacity: 0;
- visibility: hidden;
- transition: all 0.3s;
- }
-
- .sidebar-overlay.active {
- opacity: 1;
- visibility: visible;
- }
-
- .sidebar {
- position: fixed;
- top: 0;
- left: -280px;
- width: 280px;
- height: 100%;
- background: var(--card);
- z-index: 201;
- transition: left 0.3s ease;
- overflow-y: auto;
- }
-
- .sidebar.active {
- left: 0;
- }
-
- .sidebar-header {
- padding: 50px 20px 24px;
- background: var(--primary);
- color: white;
- }
-
- .sidebar-user {
- display: flex;
- align-items: center;
- gap: 14px;
- }
-
- .sidebar-avatar {
- width: 56px;
- height: 56px;
- border-radius: 50%;
- overflow: hidden;
- border: 2px solid rgba(255,255,255,0.3);
- }
-
- .sidebar-avatar img {
- width: 100%;
- height: 100%;
- object-fit: cover;
- }
-
- .sidebar-info {
- flex: 1;
- }
-
- .sidebar-name {
- font-size: 17px;
- font-weight: 600;
- margin-bottom: 4px;
- }
-
- .sidebar-desc {
- font-size: 12px;
- opacity: 0.9;
- }
-
- .sidebar-menu {
- padding: 8px 0;
- }
-
- .sidebar-item {
- display: flex;
- align-items: center;
- gap: 14px;
- padding: 14px 20px;
- color: var(--text);
- text-decoration: none;
- font-size: 15px;
- }
-
- .sidebar-item:active {
- background: #f4f4f5;
- }
-
- .sidebar-item i {
- width: 22px;
- text-align: center;
- color: var(--text-secondary);
- font-size: 18px;
- }
-
- .sidebar-divider {
- height: 1px;
- background: var(--border);
- margin: 8px 20px;
- }
- </style>
- </head>
- <body>
- <div class="container">
- <div class="header">
- <div class="header-left">
- <div class="menu-btn" id="menuBtn">
- <span></span>
- <span></span>
- <span></span>
- </div>
- <span class="logo-text">中国迈迷网</span>
- </div>
- <button class="search-btn" onclick="window.location.href='http://forum.mjjlb.com/mjjcfpw/search.php'">
- <i class="fas fa-search"></i>
- </button>
- </div>
-
- <div class="nav-tabs">
- <a href="http://m.mjjlb.com" class="nav-tab active">首页</a>
- <a href="http://news.mjjlb.com/mjjstation.php" class="nav-tab">资讯</a>
- <a href="http://forum.mjjlb.com/mjjcfpw/index.php" class="nav-tab">论坛</a>
- <a href="https://pd.qq.com/s/5xgn9w0wy?b=9" class="nav-tab">频道</a>
- <a href="http://blog.mjjlb.com/forum.php" class="nav-tab">博客</a>
- <a href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=forumdisplay&fid=8" class="nav-tab">图片</a>
- <a href="https://space.bilibili.com/470056028" class="nav-tab">视频</a>
- <a href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=forumdisplay&fid=15" class="nav-tab">商城</a>
- </div>
-
- <div class="main-content">
- <div class="banner-card">
- <div class="banner-slider">
- <div class="banner-slides" id="bannerSlides">
- <div class="banner-slide">
- <img src="https://33026137.s21i.faiusr.com/2/ABUIABACGAAgxruGxgYo1JuCwQMw0gY43gM!1000x1000.jpg.webp" alt="MJJLB">
- </div>
- <div class="banner-slide">
- <img src="https://33026137.s21i.faiusr.com/2/ABUIABACGAAgzL6GxgYo-PaJ-gIwuAg4zwU!1000x1000.jpg.webp" alt="APP">
- </div>
- <div class="banner-slide">
- <img src="https://33026137.s21i.faiusr.com/4/2/ABUIABAEGAAgsKvAygYomt_Mlwcw0Ak44gU.png" alt="MICHAEL">
- </div>
- </div>
- <div class="banner-dots" id="bannerDots">
- <div class="banner-dot active"></div>
- <div class="banner-dot"></div>
- <div class="banner-dot"></div>
- </div>
- </div>
- </div>
-
- <div class="section-card">
- <div class="section-header">
- <div class="section-title">
- <i class="fas fa-fire"></i>
- 推荐版块
- </div>
- <a href="http://forum.mjjlb.com/mjjcfpw/forum.php" class="section-more">
- 全部 <i class="fas fa-chevron-right" style="font-size: 10px;"></i>
- </a>
- </div>
- <div class="forum-list">
- <a href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=forumdisplay&fid=2" class="forum-item">
- <div class="forum-icon purple">
- <i class="fas fa-comments"></i>
- </div>
- <div class="forum-body">
- <div class="forum-title-wrap">
- <span class="forum-title-text">王的影响</span>
- <span class="forum-tag">综合讨论</span>
- </div>
- <div class="forum-desc">我们在这里追踪新闻、发表想法、分享故事。永远的流行音乐之王迈克尔·杰克逊给世间留下了太多传奇,当天使离开了地球,我们依然能分享他的音乐、舞蹈、影像和爱……</div>
- </div>
- </a>
-
- <a href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=forumdisplay&fid=6" class="forum-item">
- <div class="forum-icon pink">
- <i class="fas fa-heart"></i>
- </div>
- <div class="forum-body">
- <div class="forum-title-wrap">
- <span class="forum-title-text">追忆我们的MJ</span>
- <span class="forum-tag">怀念致敬</span>
- </div>
- <div class="forum-desc">回忆、致敬——伟大的流行音乐之王。迈克尔,你走了,我们再也见不到你了,时光转瞬,但我们依然想你,全世界也从不曾遗忘。我们又将举行各种歌迷活动纪念你!</div>
- </div>
- </a>
-
- <a href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=forumdisplay&fid=17" class="forum-item">
- <div class="forum-icon blue">
- <i class="fas fa-shield-alt"></i>
- </div>
- <div class="forum-body">
- <div class="forum-title-wrap">
- <span class="forum-title-text">MJ的磨难</span>
- <span class="forum-tag">捍卫清白</span>
- </div>
- <div class="forum-desc">这是MJ人生中我们最厌恶的部分,但又不得不关注。MJ逝世后,我们以为他终于可以远离喧嚣和痛苦、人们可以更多欣赏他的音乐和遗产的时候,嗜血的勒索者和小报媒体依然在玷污他的名誉。我们,MJ的爱之军团,要为他而战!</div>
- </div>
- </a>
- </div>
- </div>
-
- <div class="section-card">
- <div class="qrcode-block">
- <div class="qrcode-title">
- <i class="fas fa-qrcode"></i>
- 官方微信公众平台
- </div>
- <div class="qrcode-content">
- <div class="qrcode-img">
- <img src="https://33026137.s21i.faiusr.com/2/11/ABUIABACGAAg5q2IzAYovLuplAQwrgM4rgM.jpg" alt="官方微信公众平台">
- </div>
- <div class="qrcode-desc">
- 中国迈迷网成立于2025年1月12日,是迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上平台,也是一个集MJ资讯共享与MJ文化传播为一体的迈迷庇护所。
- </div>
- </div>
- </div>
- </div>
-
- <div class="section-card">
- <div class="links-block">
- <div class="links-title">
- <i class="fas fa-link"></i>
- 友情链接
- </div>
- <div class="links-grid">
- <a href="http://www.mjjlb.com" class="link-item">
- <div class="link-icon-box">
- <i class="fas fa-home"></i>
- </div>
- <span class="link-label">网站首页</span>
- </a>
- <a href="http://forum.mjjlb.com/mjjcfpw" class="link-item">
- <div class="link-icon-box">
- <i class="fas fa-users"></i>
- </div>
- <span class="link-label">歌迷论坛</span>
- </a>
- <a href="http://news.mjjlb.com" class="link-item">
- <div class="link-icon-box">
- <i class="fas fa-newspaper"></i>
- </div>
- <span class="link-label">新闻主站</span>
- </a>
- <a href="http://blog.mjjlb.com" class="link-item">
- <div class="link-icon-box">
- <i class="fas fa-blog"></i>
- </div>
- <span class="link-label">站长博客</span>
- </a>
- </div>
- </div>
- </div>
-
- <div class="music-player">
- <div class="music-header">
- <div class="music-cover">
- <i class="fas fa-music"></i>
- </div>
- <div class="music-info">
- <div class="music-name">Speechless</div>
- <div class="music-artist">Michael Jackson</div>
- </div>
- </div>
- <div class="music-controls">
- <button class="music-play-btn" id="playBtn">
- <i class="fas fa-play" id="playIcon"></i>
- </button>
- <div class="music-progress-wrap">
- <div class="music-progress-bar" id="progressBar">
- <div class="music-progress-fill" id="progressFill">
- <div class="music-progress-dot"></div>
- </div>
- </div>
- <div class="music-time">
- <span id="currentTime">0:00</span>
- <span id="musicStatus">点击播放</span>
- <span id="duration">4:54</span>
- </div>
- </div>
- </div>
- <audio id="audioPlayer" preload="none">
- <source src="http://love.mjjlb.com/Speechless.mp3" type="audio/ogg">
- </audio>
- </div>
-
- <div class="footer">
- <p>© 中国迈迷网 - 迈克尔·杰克逊中国歌迷网站</p>
- <p>迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上平台</p>
- </div>
- </div>
- </div>
-
- <div class="sidebar-overlay" id="sidebarOverlay"></div>
- <div class="sidebar" id="sidebar">
- <div class="sidebar-header">
- <div class="sidebar-user">
- <div class="sidebar-avatar">
- <img src="http://mjjcfpw.mjjlb.com/mjjcfpw.png" alt="LOGO">
- </div>
- <div class="sidebar-info">
- <div class="sidebar-name">中国迈迷网</div>
- <div class="sidebar-desc">迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上平台</div>
- </div>
- </div>
- </div>
- <div class="sidebar-menu">
- <a href="http://forum.mjjlb.com/mjjcfpw/home.php" class="sidebar-item">
- <i class="fas fa-home"></i>
- <span>我的页面</span>
- </a>
- <a href="http://forum.mjjlb.com/mjjcfpw/home.php?mod=space&do=favorite&view=me" class="sidebar-item">
- <i class="fas fa-star"></i>
- <span>我的收藏</span>
- </a>
- <a href="http://forum.mjjlb.com/mjjcfpw/home.php?mod=spacecp" class="sidebar-item">
- <i class="fas fa-cog"></i>
- <span>设置</span>
- </a>
- <div class="sidebar-divider"></div>
- <a href="http://forum.mjjlb.com/mjjcfpw/search.php" class="sidebar-item">
- <i class="fas fa-compass"></i>
- <span>发现</span>
- </a>
- <a href="http://forum.mjjlb.com/mjjcfpw/home.php?mod=space&do=friend" class="sidebar-item">
- <i class="fas fa-user-friends"></i>
- <span>好友</span>
- </a>
- <a href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=forumdisplay&fid=15" class="sidebar-item">
- <i class="fas fa-shopping-bag"></i>
- <span>购物</span>
- </a>
- <div class="sidebar-divider"></div>
- <a href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=forumdisplay&fid=26" class="sidebar-item">
- <i class="fas fa-question-circle"></i>
- <span>帮助与反馈</span>
- </a>
- <a href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=viewthread&tid=4" class="sidebar-item">
- <i class="fas fa-info-circle"></i>
- <span>关于我们</span>
- </a>
- </div>
- </div>
- <script>
- const menuBtn = document.getElementById('menuBtn');
- const sidebar = document.getElementById('sidebar');
- const sidebarOverlay = document.getElementById('sidebarOverlay');
-
- menuBtn.addEventListener('click', () => {
- sidebar.classList.add('active');
- sidebarOverlay.classList.add('active');
- });
-
- sidebarOverlay.addEventListener('click', () => {
- sidebar.classList.remove('active');
- sidebarOverlay.classList.remove('active');
- });
-
- const bannerSlides = document.getElementById('bannerSlides');
- const bannerDots = document.getElementById('bannerDots').children;
- let currentSlide = 0;
- const slideCount = bannerSlides.children.length;
-
- function showSlide(index) {
- if (index >= slideCount) index = 0;
- if (index < 0) index = slideCount - 1;
- bannerSlides.style.transform = `translateX(-${index * 100}%)`;
- for (let i = 0; i < bannerDots.length; i++) {
- bannerDots[i].classList.toggle('active', i === index);
- }
- currentSlide = index;
- }
-
- setInterval(() => showSlide(currentSlide + 1), 4000);
-
- let startX = 0;
- bannerSlides.addEventListener('touchstart', e => startX = e.touches[0].clientX);
- bannerSlides.addEventListener('touchend', e => {
- const diff = startX - e.changedTouches[0].clientX;
- if (Math.abs(diff) > 50) {
- diff > 0 ? showSlide(currentSlide + 1) : showSlide(currentSlide - 1);
- }
- });
-
- const audioPlayer = document.getElementById('audioPlayer');
- const playBtn = document.getElementById('playBtn');
- const playIcon = document.getElementById('playIcon');
- const progressFill = document.getElementById('progressFill');
- const progressBar = document.getElementById('progressBar');
- const currentTimeEl = document.getElementById('currentTime');
- const musicStatus = document.getElementById('musicStatus');
-
- let isPlaying = false;
-
- function formatTime(s) {
- if (isNaN(s)) return '0:00';
- const m = Math.floor(s / 60);
- const sec = Math.floor(s % 60);
- return `${m}:${sec < 10 ? '0' : ''}${sec}`;
- }
-
- function updateProgress() {
- if (audioPlayer.duration) {
- progressFill.style.width = `${(audioPlayer.currentTime / audioPlayer.duration) * 100}%`;
- currentTimeEl.textContent = formatTime(audioPlayer.currentTime);
- }
- }
-
- playBtn.addEventListener('click', () => {
- if (isPlaying) {
- audioPlayer.pause();
- playIcon.className = 'fas fa-play';
- musicStatus.textContent = '已暂停';
- isPlaying = false;
- } else {
- musicStatus.textContent = '加载中,请稍等片刻……';
- audioPlayer.play().then(() => {
- playIcon.className = 'fas fa-pause';
- musicStatus.textContent = '播放中';
- isPlaying = true;
- }).catch(() => {
- musicStatus.textContent = '点击重试';
- });
- }
- });
-
- audioPlayer.addEventListener('timeupdate', updateProgress);
- audioPlayer.addEventListener('ended', () => {
- playIcon.className = 'fas fa-play';
- musicStatus.textContent = '播放结束';
- isPlaying = false;
- progressFill.style.width = '0%';
- });
-
- progressBar.addEventListener('click', e => {
- if (!audioPlayer.duration) return;
- const rect = progressBar.getBoundingClientRect();
- audioPlayer.currentTime = ((e.clientX - rect.left) / rect.width) * audioPlayer.duration;
- });
-
- document.addEventListener('visibilitychange', () => {
- if (document.hidden && isPlaying) {
- audioPlayer.pause();
- playIcon.className = 'fas fa-play';
- musicStatus.textContent = '已暂停';
- isPlaying = false;
- }
- });
- </script>
- </body>
- </html>
复制代码
传记电影《迈克尔·杰克逊:巨星之路》宣传网页:
- <!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport">
- <title>迈克尔·杰克逊官方传记电影《迈克尔·杰克逊:巨星之路》专题宣传网页</title>
- <meta name="keywords" content="迈克尔传记电影, 杰克逊传记电影, 中国迈迷网站, 中文歌迷网站, 迈克尔·杰克逊:巨星之路, 迈克尔·杰克逊传记电影, 麥可傑克森, 傑克森, 麥可, Michael, Jackson, King of Pop, Michael Jackson, Chinese fanclub, fanclub, 歌迷, 胡萝卜烙饼网, MJJLB, MJ, 爱MJJ的烙饼, 偶像, 音乐, 流行音乐之王, 流行之王, 米高積遜, 積遜, 米高, 娱乐, 欧美音乐">
- <meta name="description" content="2026年4月24日,迈克尔·杰克逊官方传记电影《迈克尔·杰克逊:巨星之路》将在全球震撼上映,为了让大家能尽情交流这部备受期待的作品,我们在中国迈迷网特别建立了这个专题宣传网页。无论你是从哪里来的迈迷朋友,都欢迎在此分享关于电影的爆料、最新消息,尽情讨论、吐槽、交流!">
- <link rel="shortcut icon" href="http://michael.mjjlb.com/album.png">
-
- <style>
- .play-button {
- position: fixed;
- top: 20px;
- right: 20px;
- width: 50px;
- height: 50px;
- background-color: #0066cc;
- color: white;
- border: none;
- border-radius: 50%;
- cursor: pointer;
- z-index: 100;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 14px;
- }
- .play-button:hover {
- background-color: #0052a3;
- }
- </style>
- </head>
- <body style="background-color:#000000;">
- <audio id="backgroundAudio">
- <source src="http://michael.mjjlb.com/mjjlb.mp3" type="audio/mpeg">
- </audio>
- <button class="play-button" id="playButton">
- 播放
- </button>
-
- <table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#000000">
- <tr>
- <td> </td>
- </tr>
- <tr>
- <td height="600" style="background-image:url(http://michael.mjjlb.com/bac.jpg);background-position:center;background-repeat: no-repeat;background-attachment: fixed;"><div align="center"><img src="http://michael.mjjlb.com/album.png" width="590" height="587" alt=""></div></td>
- </tr>
- <tr>
- <td><div align="center"><img src="http://michael.mjjlb.com/botton.jpg" width="464" height="97" border="0" usemap="#Map" alt=""></div></td>
- </tr>
- </table>
- <table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#000000">
- <tr>
- <td><div align="center" style="color:#FFFFFF;">中国迈迷网 - 迈克尔·杰克逊中国歌迷自发创建的非营利性歌迷网上平台</div></td>
- </tr>
- </table>
- <map name="Map">
- <area shape="rect" coords="6,34,98,68" href="http://pc.mjjlb.com" target="_blank" alt="">
- <area shape="rect" coords="361,32,462,66" href="http://forum.mjjlb.com/mjjcfpw/forum.php?mod=forumdisplay&fid=5" target="_blank" alt="">
- <area shape="rect" coords="111,34,349,65" href="http://michael.mjjlb.com/movie.php" target="_blank" alt="">
- </map>
-
- <script>
- document.addEventListener('DOMContentLoaded', function() {
- var audio = document.getElementById('backgroundAudio');
- var playButton = document.getElementById('playButton');
- var isPlaying = false;
-
- playButton.addEventListener('click', function() {
- if (isPlaying) {
- audio.pause();
- playButton.innerHTML = '播放';
- } else {
- audio.play().catch(function(error) {
- console.log('音频播放失败,可能需要用户交互才能播放音频。', error);
- });
- playButton.innerHTML = '暂停';
- }
- isPlaying = !isPlaying;
- });
- });
- </script>
- </body>
- </html>
复制代码
- <?php
- if (function_exists('error_reporting')) {
- @error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);
- }
- if (function_exists('date_default_timezone_set')) {
- @date_default_timezone_set('Asia/Shanghai');
- }
- if (function_exists('session_start') && !session_id()) {
- @session_start();
- }
- define('DATA_FILE', 'messages.json');
- define('REPLY_FILE', 'reply.json');
- define('HITS_FILE', 'hits.json');
- define('PAGE_SIZE', 15);
- define('ADMIN_PASS', 'Leoben');
- define('MAX_CONTENT_LENGTH', 50000);
- define('MAX_IMAGE_SIZE', 10485760);
- define('UPLOAD_DIR', 'uploads/');
- if (!function_exists('json_encode')) {
- function json_encode_compat($data) {
- if (is_null($data)) return 'null';
- if ($data === false) return 'false';
- if ($data === true) return 'true';
- if (is_scalar($data)) {
- if (is_float($data)) {
- return floatval(str_replace(",", ".", strval($data)));
- }
- if (is_string($data)) {
- static $jsonReplaces = array(array("\", "/", "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '"'));
- return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $data) . '"';
- } else {
- return $data;
- }
- }
- $isList = true;
- for ($i = 0, reset($data); $i < count($data); $i++, next($data)) {
- if (key($data) !== $i) {
- $isList = false;
- break;
- }
- }
- $result = array();
- if ($isList) {
- foreach ($data as $v) $result[] = json_encode_compat($v);
- return '[' . join(',', $result) . ']';
- } else {
- foreach ($data as $k => $v) $result[] = json_encode_compat($k).':'.json_encode_compat($v);
- return '{' . join(',', $result) . '}';
- }
- }
-
- function json_decode_compat($json, $assoc = false) {
- if (trim($json) === '') return null;
- $json = str_replace(array("\n","\r"), "", $json);
- $json = preg_replace('/([{,]+)(\s*)([^"]+?)\s*:/','$1"$3":', $json);
- $json = preg_replace('/(,)\s*}$/', '}', $json);
-
- if (function_exists('json_decode')) {
- return json_decode($json, $assoc);
- }
-
- if ($json[0] === '{') {
- $json = substr($json, 1, -1);
- $parts = explode(',', $json);
- $result = $assoc ? array() : new stdClass();
- foreach ($parts as $part) {
- if (strpos($part, ':') !== false) {
- list($key, $value) = explode(':', $part, 2);
- $key = trim($key, '"\'');
- $value = trim($value);
-
- if ($value[0] === '"') $value = substr($value, 1, -1);
- elseif ($value === 'true') $value = true;
- elseif ($value === 'false') $value = false;
- elseif ($value === 'null') $value = null;
- elseif (is_numeric($value)) $value = floatval($value);
-
- if ($assoc) {
- $result[$key] = $value;
- } else {
- $result->$key = $value;
- }
- }
- }
- return $result;
- }
- return null;
- }
- }
- function read_json($filename, $default = array()) {
- if (!file_exists($filename)) return $default;
- $content = @file_get_contents($filename);
- if (empty($content)) return $default;
-
- if (function_exists('json_decode')) {
- $data = @json_decode($content, true);
- } else {
- $data = @json_decode_compat($content, true);
- }
-
- return is_array($data) ? $data : $default;
- }
- function write_json($filename, $data) {
- $dir = dirname($filename);
- if (!is_dir($dir)) {
- @mkdir($dir, 0755, true);
- }
-
- if (function_exists('json_encode')) {
- $content = @json_encode($data, JSON_UNESCAPED_UNICODE);
- } else {
- $content = @json_encode_compat($data);
- }
-
- return @file_put_contents($filename, $content) !== false;
- }
- function generate_captcha() {
- $chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
- $captcha = '';
- for ($i = 0; $i < 4; $i++) {
- $captcha .= $chars[mt_rand(0, strlen($chars) - 1)];
- }
- $_SESSION['captcha'] = $captcha;
- return $captcha;
- }
- function safe_input($str) {
- if (!function_exists('mb_convert_encoding')) {
- $str = preg_replace('/[^\x00-\x7F]/', '', $str);
- }
- $str = trim($str);
- $str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
- return $str;
- }
- function safe_output($str) {
- $str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
- $str = nl2br($str);
- return $str;
- }
- function validate_image_url($url) {
- $url = trim($url);
- if (empty($url)) return '';
-
- if (!preg_match('#^https?://#i', $url)) return '';
-
- $path = parse_url($url, PHP_URL_PATH);
- $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));
- $allowed = array('jpg', 'jpeg', 'png', 'gif', 'webp', 'bmp');
-
- if (in_array($ext, $allowed)) {
- return $url;
- }
-
- return '';
- }
- function is_admin() {
- return isset($_SESSION['admin_logged_in']) && $_SESSION['admin_logged_in'] === true;
- }
- function csrf_token() {
- if (!isset($_SESSION['csrf_token'])) {
- $_SESSION['csrf_token'] = md5(uniqid(mt_rand(), true));
- }
- return $_SESSION['csrf_token'];
- }
- function verify_csrf($token) {
- return isset($_SESSION['csrf_token']) && $_SESSION['csrf_token'] === $token;
- }
- if (!isset($_SESSION['captcha'])) {
- generate_captcha();
- }
- $hits = read_json(HITS_FILE, array('total' => 0, 'today' => 0, 'date' => date('Y-m-d')));
- $hits['total']++;
- if ($hits['date'] !== date('Y-m-d')) {
- $hits['today'] = 1;
- $hits['date'] = date('Y-m-d');
- } else {
- $hits['today']++;
- }
- write_json(HITS_FILE, $hits);
- if ($_SERVER['REQUEST_METHOD'] === 'POST') {
- $action = isset($_POST['action']) ? $_POST['action'] : '';
-
- if ($action === 'post_message') {
- if (!verify_csrf($_POST['csrf_token'])) {
- die('<script>alert("安全验证失败,请刷新页面重试");location.href="' . $_SERVER['PHP_SELF'] . '";</script>');
- }
-
- $name = isset($_POST['name']) ? safe_input($_POST['name']) : '';
- $content = isset($_POST['content']) ? safe_input($_POST['content']) : '';
- $image = isset($_POST['image']) ? validate_image_url($_POST['image']) : '';
- $captcha = isset($_POST['captcha']) ? strtoupper($_POST['captcha']) : '';
- $session_captcha = isset($_SESSION['captcha']) ? strtoupper($_SESSION['captcha']) : '';
-
- if (empty($captcha) || $captcha !== $session_captcha) {
- die('<script>alert("验证码错误");history.back();</script>');
- }
-
- if (empty($name) || empty($content)) {
- die('<script>alert("标题和内容不能为空");history.back();</script>');
- }
-
- $messages = read_json(DATA_FILE);
- $id = 1;
- if (!empty($messages)) {
- $keys = array_keys($messages);
- $id = max($keys) + 1;
- }
-
- $messages[$id] = array(
- 'name' => $name,
- 'content' => $content,
- 'image' => $image,
- 'time' => date('Y-m-d H:i:s'),
- 'like' => 0,
- 'dislike' => 0,
- 'ip' => isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '0.0.0.0'
- );
-
- if (write_json(DATA_FILE, $messages)) {
- generate_captcha();
- header('Location: ' . $_SERVER['PHP_SELF'] . '?success=1');
- exit;
- } else {
- die('<script>alert("保存失败,请重试");history.back();</script>');
- }
- }
-
- if ($action === 'vote') {
- if (!verify_csrf($_POST['csrf_token'])) {
- die('安全验证失败');
- }
-
- $id = intval($_POST['id']);
- $type = $_POST['type'] === 'like' ? 'like' : 'dislike';
-
- $vote_key = 'vote_' . $id;
- if (isset($_SESSION[$vote_key])) {
- header('Location: ' . $_SERVER['PHP_SELF'] . '?page=' . (isset($_GET['page']) ? intval($_GET['page']) : 1) . '#msg-' . $id);
- exit;
- }
-
- $messages = read_json(DATA_FILE);
- if (isset($messages[$id])) {
- $messages[$id][$type]++;
- write_json(DATA_FILE, $messages);
- $_SESSION[$vote_key] = true;
- }
-
- header('Location: ' . $_SERVER['PHP_SELF'] . '?page=' . (isset($_GET['page']) ? intval($_GET['page']) : 1) . '#msg-' . $id);
- exit;
- }
-
- if ($action === 'post_reply') {
- if (!verify_csrf($_POST['csrf_token'])) {
- die('安全验证失败');
- }
-
- $pid = intval($_POST['pid']);
- $rname = isset($_POST['rname']) ? safe_input($_POST['rname']) : '';
- $rcontent = isset($_POST['rcontent']) ? safe_input($_POST['rcontent']) : '';
-
- if (empty($rname) || empty($rcontent)) {
- die('<script>alert("昵称和回复内容不能为空");history.back();</script>');
- }
-
- $messages = read_json(DATA_FILE);
- if (!isset($messages[$pid])) {
- die('<script>alert("留言不存在");history.back();</script>');
- }
-
- $reply = read_json(REPLY_FILE);
- $rid = 1;
- if (!empty($reply)) {
- $keys = array_keys($reply);
- $rid = max($keys) + 1;
- }
-
- $reply[$rid] = array(
- 'pid' => $pid,
- 'name' => $rname,
- 'content' => $rcontent,
- 'time' => date('Y-m-d H:i:s'),
- 'ip' => isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '0.0.0.0'
- );
-
- write_json(REPLY_FILE, $reply);
- header('Location: ' . $_SERVER['PHP_SELF'] . '?page=' . (isset($_GET['page']) ? intval($_GET['page']) : 1) . '#msg-' . $pid);
- exit;
- }
-
- if ($action === 'admin_login') {
- $password = isset($_POST['password']) ? $_POST['password'] : '';
- if ($password === ADMIN_PASS) {
- $_SESSION['admin_logged_in'] = true;
- header('Location: ' . $_SERVER['PHP_SELF']);
- exit;
- } else {
- die('<script>alert("密码错误");history.back();</script>');
- }
- }
-
- if ($action === 'admin_logout') {
- unset($_SESSION['admin_logged_in']);
- header('Location: ' . $_SERVER['PHP_SELF']);
- exit;
- }
-
- if ($action === 'delete_message' && is_admin()) {
- if (!verify_csrf($_POST['csrf_token'])) {
- die('安全验证失败');
- }
-
- $id = intval($_POST['id']);
- $messages = read_json(DATA_FILE);
-
- if (isset($messages[$id])) {
- unset($messages[$id]);
- write_json(DATA_FILE, $messages);
-
- $reply = read_json(REPLY_FILE);
- foreach ($reply as $rid => $r) {
- if ($r['pid'] == $id) {
- unset($reply[$rid]);
- }
- }
- write_json(REPLY_FILE, $reply);
- }
-
- header('Location: ' . $_SERVER['PHP_SELF'] . '?page=' . (isset($_GET['page']) ? intval($_GET['page']) : 1));
- exit;
- }
-
- if ($action === 'delete_reply' && is_admin()) {
- if (!verify_csrf($_POST['csrf_token'])) {
- die('安全验证失败');
- }
-
- $rid = intval($_POST['rid']);
- $reply = read_json(REPLY_FILE);
-
- if (isset($reply[$rid])) {
- unset($reply[$rid]);
- write_json(REPLY_FILE, $reply);
- }
-
- header('Location: ' . $_SERVER['PHP_SELF'] . '?page=' . (isset($_GET['page']) ? intval($_GET['page']) : 1));
- exit;
- }
- }
- $messages = read_json(DATA_FILE);
- $total = count($messages);
- $messages = array_reverse($messages, true);
- $page = isset($_GET['page']) ? intval($_GET['page']) : 1;
- $page = max(1, $page);
- $total_pages = max(1, ceil($total / PAGE_SIZE));
- $page = min($page, $total_pages);
- $offset = ($page - 1) * PAGE_SIZE;
- $list = array_slice($messages, $offset, PAGE_SIZE, true);
- $reply = read_json(REPLY_FILE);
- if (isset($_GET['refresh_captcha'])) {
- echo generate_captcha();
- exit;
- }
- ?>
- <!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta charset="UTF-8">
- <title>迈克尔·杰克逊官方传记电影《迈克尔·杰克逊:巨星之路》专题宣传网页</title>
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta name="keywords" content="迈克尔传记电影, 杰克逊传记电影, 中国迈迷网站, 中文歌迷网站, 迈克尔·杰克逊:巨星之路, 迈克尔·杰克逊传记电影, 麥可傑克森, 傑克森, 麥可, Michael, Jackson, King of Pop, Michael Jackson, Chinese fanclub, fanclub, 歌迷, 巨星之路, MJJLB, MJ, 爱MJJ的烙饼, 偶像, 音乐, 流行音乐之王, 流行之王, 米高積遜, 積遜, 米高, 娱乐, 欧美音乐">
- <meta name="description" content="2026年4月24日,迈克尔·杰克逊官方传记电影《迈克尔·杰克逊:巨星之路》将在全球震撼上映,为了让大家能尽情交流这部备受期待的作品,我们在中国迈迷网特别建立了这个专题宣传网页。无论你是从哪里来的迈迷朋友,都欢迎在此分享关于电影的爆料、最新消息,尽情讨论、吐槽、交流!">
- <style>
- * {
- margin: 0;
- padding: 0;
- box-sizing: border-box;
- }
-
- body {
- font-family: 'Microsoft YaHei', 'Segoe UI', sans-serif;
- background: #f5f5f5;
- color: #333;
- line-height: 1.6;
- }
-
- .container {
- max-width: 1200px;
- margin: 0 auto;
- padding: 20px;
- }
-
- .site-header {
- background: linear-gradient(135deg, #000 0%, #222 100%);
- color: white;
- padding: 20px 0;
- margin-bottom: 30px;
- border-bottom: 3px solid #c00;
- }
-
- .header-content {
- max-width: 1200px;
- margin: 0 auto;
- padding: 0 20px;
- display: flex;
- justify-content: space-between;
- align-items: center;
- flex-wrap: wrap;
- }
-
- .logo-area {
- display: flex;
- align-items: center;
- gap: 15px;
- }
-
- .logo {
- font-size: 28px;
- font-weight: bold;
- color: white;
- text-decoration: none;
- }
-
- .logo span {
- color: #c00;
- }
-
- .site-nav ul {
- display: flex;
- list-style: none;
- gap: 20px;
- }
-
- .site-nav a {
- color: white;
- text-decoration: none;
- padding: 5px 10px;
- border-radius: 3px;
- transition: background-color 0.3s;
- }
-
- .site-nav a:hover {
- background-color: rgba(255, 255, 255, 0.1);
- }
-
- .admin-panel {
- position: fixed;
- top: 20px;
- right: 20px;
- z-index: 1000;
- }
-
- .admin-login-form {
- background: white;
- padding: 15px;
- border-radius: 5px;
- box-shadow: 0 2px 10px rgba(0,0,0,0.1);
- display: none;
- position: absolute;
- top: 100%;
- right: 0;
- min-width: 200px;
- }
-
- .main-content {
- background: white;
- border-radius: 8px;
- padding: 30px;
- box-shadow: 0 2px 10px rgba(0,0,0,0.05);
- }
-
- .page-title {
- color: #333;
- margin-bottom: 30px;
- padding-bottom: 15px;
- border-bottom: 2px solid #c00;
- font-size: 24px;
- }
-
- .success-message {
- background: #d4edda;
- color: #155724;
- padding: 15px;
- border-radius: 5px;
- margin-bottom: 20px;
- text-align: center;
- }
-
- .post-form {
- background: #f9f9f9;
- padding: 20px;
- border-radius: 8px;
- margin-bottom: 30px;
- border: 1px solid #eee;
- }
-
- .form-group {
- margin-bottom: 15px;
- }
-
- .form-label {
- display: block;
- margin-bottom: 5px;
- font-weight: bold;
- color: #555;
- }
-
- .form-input,
- .form-textarea {
- width: 100%;
- padding: 10px;
- border: 1px solid #ddd;
- border-radius: 4px;
- font-size: 14px;
- font-family: inherit;
- }
-
- .form-textarea {
- min-height: 100px;
- resize: vertical;
- }
-
- .captcha-area {
- display: flex;
- align-items: center;
- gap: 10px;
- margin-bottom: 15px;
- }
-
- .captcha-code {
- background: #333;
- color: white;
- font-size: 20px;
- font-weight: bold;
- padding: 8px 15px;
- border-radius: 4px;
- letter-spacing: 3px;
- user-select: none;
- min-width: 120px;
- text-align: center;
- }
-
- .captcha-refresh {
- color: #c00;
- text-decoration: none;
- font-size: 13px;
- }
-
- .captcha-refresh:hover {
- text-decoration: underline;
- }
-
- .submit-btn {
- background: #c00;
- color: white;
- border: none;
- padding: 10px 25px;
- border-radius: 4px;
- font-size: 16px;
- cursor: pointer;
- transition: background-color 0.3s;
- }
-
- .submit-btn:hover {
- background: #a00;
- }
-
- .message-list {
- margin-bottom: 30px;
- }
-
- .message-item {
- background: white;
- border: 1px solid #eee;
- border-radius: 6px;
- padding: 20px;
- margin-bottom: 20px;
- transition: box-shadow 0.3s;
- }
-
- .message-item:hover {
- box-shadow: 0 3px 15px rgba(0,0,0,0.1);
- }
-
- .message-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: 15px;
- flex-wrap: wrap;
- gap: 10px;
- }
-
- .message-title {
- color: #333;
- font-size: 18px;
- font-weight: bold;
- margin: 0;
- }
-
- .message-time {
- color: #999;
- font-size: 13px;
- background: #f5f5f5;
- padding: 3px 8px;
- border-radius: 3px;
- }
-
- .message-content {
- color: #444;
- line-height: 1.8;
- margin-bottom: 15px;
- }
-
- .message-image {
- max-width: 100%;
- height: auto;
- border-radius: 4px;
- margin: 10px 0;
- cursor: pointer;
- }
-
- .message-footer {
- display: flex;
- justify-content: space-between;
- align-items: center;
- flex-wrap: wrap;
- gap: 10px;
- padding-top: 15px;
- border-top: 1px solid #eee;
- }
-
- .vote-buttons {
- display: flex;
- gap: 10px;
- }
-
- .vote-btn {
- background: #f5f5f5;
- border: 1px solid #ddd;
- padding: 5px 12px;
- border-radius: 20px;
- cursor: pointer;
- display: flex;
- align-items: center;
- gap: 5px;
- transition: all 0.3s;
- }
-
- .vote-btn:hover {
- transform: translateY(-2px);
- }
-
- .like-btn:hover {
- background: #e8f5e9;
- border-color: #4caf50;
- }
-
- .dislike-btn:hover {
- background: #ffebee;
- border-color: #f44336;
- }
-
- .action-buttons {
- display: flex;
- gap: 10px;
- }
-
- .action-btn {
- background: #333;
- color: white;
- border: none;
- padding: 6px 12px;
- border-radius: 4px;
- cursor: pointer;
- font-size: 13px;
- text-decoration: none;
- }
-
- .action-btn:hover {
- background: #555;
- }
-
- .btn-danger {
- background: #d32f2f;
- }
-
- .btn-danger:hover {
- background: #b71c1c;
- }
-
- .reply-form {
- background: #f9f9f9;
- padding: 15px;
- border-radius: 6px;
- margin-top: 15px;
- display: none;
- }
-
- .reply-list {
- margin-top: 15px;
- }
-
- .reply-item {
- background: #f9f9f9;
- padding: 12px;
- border-radius: 6px;
- margin-top: 10px;
- border-left: 3px solid #c00;
- }
-
- .reply-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: 8px;
- flex-wrap: wrap;
- gap: 5px;
- }
-
- .reply-author {
- color: #333;
- font-weight: bold;
- }
-
- .reply-time {
- color: #999;
- font-size: 12px;
- }
-
- .reply-content {
- color: #555;
- }
-
- /* 分页样式 */
- .pagination {
- display: flex;
- justify-content: center;
- gap: 5px;
- margin: 30px 0;
- flex-wrap: wrap;
- }
-
- .page-link {
- padding: 8px 12px;
- background: white;
- border: 1px solid #ddd;
- border-radius: 4px;
- text-decoration: none;
- color: #333;
- transition: all 0.3s;
- }
-
- .page-link:hover {
- background: #f5f5f5;
- }
-
- .page-active {
- background: #c00;
- color: white;
- border-color: #c00;
- }
- .site-stats {
- text-align: center;
- color: #666;
- font-size: 14px;
- padding: 15px;
- background: #f9f9f9;
- border-radius: 6px;
- margin-top: 30px;
- }
- .site-footer {
- background: #333;
- color: #aaa;
- padding: 30px 0;
- margin-top: 50px;
- }
-
- .footer-content {
- max-width: 1200px;
- margin: 0 auto;
- padding: 0 20px;
- text-align: center;
- }
-
- .copyright {
- font-size: 13px;
- color: #888;
- margin-top: 20px;
- }
- .image-modal {
- display: none;
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background: rgba(0,0,0,0.9);
- z-index: 2000;
- align-items: center;
- justify-content: center;
- }
-
- .modal-image {
- max-width: 90%;
- max-height: 90%;
- border-radius: 8px;
- }
-
- .close-modal {
- position: absolute;
- top: 20px;
- right: 20px;
- color: white;
- font-size: 40px;
- cursor: pointer;
- background: none;
- border: none;
- }
- @media (max-width: 768px) {
- .header-content {
- flex-direction: column;
- gap: 15px;
- }
-
- .site-nav ul {
- justify-content: center;
- flex-wrap: wrap;
- }
-
- .admin-panel {
- position: static;
- margin-top: 15px;
- }
-
- .main-content {
- padding: 15px;
- }
-
- .message-header {
- flex-direction: column;
- align-items: flex-start;
- }
-
- .message-footer {
- flex-direction: column;
- align-items: flex-start;
- }
-
- .vote-buttons {
- width: 100%;
- justify-content: flex-start;
- }
-
- .action-buttons {
- width: 100%;
- justify-content: flex-start;
- }
-
- .captcha-area {
- flex-direction: column;
- align-items: flex-start;
- }
- }
- </style>
- </head>
- <body>
- <div class="image-modal" id="imageModal">
- <button class="close-modal" onclick="closeModal()">×</button>
- <img class="modal-image" id="modalImage" src="" alt="预览图片">
- </div>
- <header class="site-header">
- <div class="header-content">
- <div class="logo-area">
- <a href="http://michael.mjjlb.com" class="logo"><span>michael</span>.mjjlb.com</a>
- </div>
- <nav class="site-nav">
- <ul>
- <li><a href="http://michael.mjjlb.com">网站首页</a></li>
- <li><a href="#post">发表留言</a></li>
- <li><a href="#messages">留言列表</a></li>
- </ul>
- </nav>
- </div>
- </header>
- <div class="admin-panel">
- <?php if (is_admin()): ?>
- <div style="background: white; padding: 8px 15px; border-radius: 4px; box-shadow: 0 2px 5px rgba(0,0,0,0.1);">
- <span style="color: #c00; font-weight: bold;">管理员已登录</span>
- <form method="post" style="display: inline; margin-left: 10px;">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="admin_logout">
- <button type="submit" class="action-btn btn-danger" style="padding: 3px 8px;">退出</button>
- </form>
- </div>
- <?php else: ?>
- <button class="action-btn" onclick="toggleLoginForm()" style="background: #333; color: white; padding: 8px 15px;">管理员登录</button>
- <div class="admin-login-form" id="loginForm">
- <form method="post">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="admin_login">
- <div class="form-group">
- <label class="form-label">管理员密码:</label>
- <input type="password" name="password" class="form-input" required>
- </div>
- <button type="submit" class="submit-btn" style="width: 100%;">登录</button>
- </form>
- </div>
- <?php endif; ?>
- </div>
- <div class="container">
- <main class="main-content">
- <h1 class="page-title">迈克尔·杰克逊官方传记电影《迈克尔·杰克逊:巨星之路》专题宣传网页</h1>
- <?php if (isset($_GET['success'])): ?>
- <div class="success-message">
- <strong>留言发表成功!</strong> 您的留言已成功提交。
- </div>
- <?php endif; ?>
- <div class="post-form" id="post">
- <form method="post" id="messageForm">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="post_message">
-
- <div class="form-group">
- <label class="form-label">留言标题:</label>
- <input type="text" name="name" class="form-input" required placeholder="请输入留言标题" maxlength="50">
- </div>
-
- <div class="form-group">
- <label class="form-label">留言内容:</label>
- <textarea name="content" class="form-textarea" required placeholder="在这里写下您的留言内容..."></textarea>
- </div>
-
- <div class="form-group">
- <label class="form-label">图片链接(可选):</label>
- <input type="text" name="image" class="form-input" placeholder="支持jpg、png、gif、webp、bmp格式的图片">
- </div>
-
- <div class="form-group">
- <label class="form-label">验证码:</label>
- <div class="captcha-area">
- <div class="captcha-code" id="captchaDisplay"><?php echo $_SESSION['captcha']; ?></div>
- <input type="text" name="captcha" class="form-input" style="flex: 1;" required placeholder="请输入验证码" maxlength="4">
- <a href="javascript:void(0)" class="captcha-refresh" onclick="refreshCaptcha()">刷新验证码</a>
- </div>
- </div>
-
- <button type="submit" class="submit-btn">发表留言</button>
- </form>
- </div>
-
- <div class="message-list" id="messages">
- <?php if (empty($list)): ?>
- <div style="text-align: center; padding: 40px; color: #999;">
- <h3>暂无留言</h3>
- <p>快来发表第一条留言吧!</p>
- </div>
- <?php else: ?>
- <?php foreach ($list as $id => $msg): ?>
- <div class="message-item" id="msg-<?php echo $id; ?>">
- <div class="message-header">
- <h3 class="message-title"><?php echo safe_output($msg['name']); ?></h3>
- <span class="message-time"><?php echo $msg['time']; ?></span>
- </div>
-
- <div class="message-content">
- <?php echo safe_output($msg['content']); ?>
- </div>
-
- <?php if (!empty($msg['image'])): ?>
- <img src="<?php echo safe_output($msg['image']); ?>"
- alt="留言图片"
- class="message-image"
- onclick="showImage('<?php echo safe_output($msg['image']); ?>')">
- <?php endif; ?>
-
- <div class="message-footer">
- <div class="vote-buttons">
- <form method="post" class="vote-form">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="vote">
- <input type="hidden" name="id" value="<?php echo $id; ?>">
- <input type="hidden" name="type" value="like">
- <button type="submit" class="vote-btn like-btn">
- <span>👍</span>
- <span><?php echo isset($msg['like']) ? $msg['like'] : 0; ?></span>
- </button>
- </form>
-
- <form method="post" class="vote-form">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="vote">
- <input type="hidden" name="id" value="<?php echo $id; ?>">
- <input type="hidden" name="type" value="dislike">
- <button type="submit" class="vote-btn dislike-btn">
- <span>👎</span>
- <span><?php echo isset($msg['dislike']) ? $msg['dislike'] : 0; ?></span>
- </button>
- </form>
- </div>
-
- <div class="action-buttons">
- <button class="action-btn" onclick="showReplyBox(<?php echo $id; ?>)">回复</button>
-
- <?php if (is_admin()): ?>
- <form method="post" style="display: inline;" onsubmit="return confirm('确定要删除这条留言吗?');">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="delete_message">
- <input type="hidden" name="id" value="<?php echo $id; ?>">
- <button type="submit" class="action-btn btn-danger">删除</button>
- </form>
- <?php endif; ?>
- </div>
- </div>
-
- <div class="reply-form" id="replyBox-<?php echo $id; ?>">
- <form method="post">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="post_reply">
- <input type="hidden" name="pid" value="<?php echo $id; ?>">
-
- <div style="display: flex; gap: 10px; flex-wrap: wrap;">
- <input type="text" name="rname" class="form-input" style="flex: 1; min-width: 150px;" required placeholder="您的昵称">
- <input type="text" name="rcontent" class="form-input" style="flex: 2; min-width: 200px;" required placeholder="回复内容">
- <button type="submit" class="submit-btn" style="padding: 10px 15px;">发表回复</button>
- </div>
- </form>
- </div>
- <?php
- $related_replies = array();
- foreach ($reply as $rid => $r) {
- if ($r['pid'] == $id) {
- $related_replies[$rid] = $r;
- }
- }
- if (!empty($related_replies)):
- ?>
- <div class="reply-list">
- <?php foreach ($related_replies as $rid => $reply_data): ?>
- <div class="reply-item">
- <div class="reply-header">
- <span class="reply-author"><?php echo safe_output($reply_data['name']); ?></span>
- <span class="reply-time"><?php echo $reply_data['time']; ?></span>
- </div>
- <div class="reply-content">
- <?php echo safe_output($reply_data['content']); ?>
- </div>
- <?php if (is_admin()): ?>
- <div style="text-align: right; margin-top: 10px;">
- <form method="post" style="display: inline;" onsubmit="return confirm('确定要删除这条回复吗?');">
- <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>">
- <input type="hidden" name="action" value="delete_reply">
- <input type="hidden" name="rid" value="<?php echo $rid; ?>">
- <button type="submit" class="action-btn btn-danger" style="padding: 3px 8px; font-size: 12px;">删除</button>
- </form>
- </div>
- <?php endif; ?>
- </div>
- <?php endforeach; ?>
- </div>
- <?php endif; ?>
- </div>
- <?php endforeach; ?>
- <?php endif; ?>
- </div>
-
- <?php if ($total_pages > 1): ?>
- <div class="pagination">
- <?php if ($page > 1): ?>
- <a href="?page=1" class="page-link">首页</a>
- <a href="?page=<?php echo $page - 1; ?>" class="page-link">上一页</a>
- <?php endif; ?>
-
- <?php
- $start = max(1, $page - 2);
- $end = min($total_pages, $start + 4);
- if ($end - $start < 4) $start = max(1, $end - 4);
-
- for ($i = $start; $i <= $end; $i++):
- ?>
- <a href="?page=<?php echo $i; ?>" class="page-link <?php echo $i == $page ? 'page-active' : ''; ?>">
- <?php echo $i; ?>
- </a>
- <?php endfor; ?>
-
- <?php if ($page < $total_pages): ?>
- <a href="?page=<?php echo $page + 1; ?>" class="page-link">下一页</a>
- <a href="?page=<?php echo $total_pages; ?>" class="page-link">尾页</a>
- <?php endif; ?>
- </div>
- <?php endif; ?>
- <div class="site-stats">
- <p>
- 总留言:<?php echo $total; ?> 条 ·
- 今日浏览:<?php echo $hits['today']; ?> 次 ·
- 总浏览:<?php echo $hits['total']; ?> 次 ·
- 当前第 <?php echo $page; ?> 页/共 <?php echo $total_pages; ?> 页
- </p>
- </div>
- </main>
- </div>
- <footer class="site-footer">
- <div class="footer-content">
- <p>《迈克尔·杰克逊:巨星之路》</p>
- <p>2026年4月24日,全球震撼上映!</p>
- <div class="copyright">
- © <?php echo date('Y'); ?> 中国迈迷网 - 迈克尔·杰克逊官方传记电影《迈克尔·杰克逊:巨星之路》专题宣传网页</div>
- </div>
- </footer>
- <script>
- function showReplyBox(id) {
- var replyBox = document.getElementById('replyBox-' + id);
- if (replyBox.style.display === 'block') {
- replyBox.style.display = 'none';
- } else {
- var allReplyBoxes = document.querySelectorAll('.reply-form');
- allReplyBoxes.forEach(function(box) {
- box.style.display = 'none';
- });
- replyBox.style.display = 'block';
- replyBox.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
- }
- }
-
- function refreshCaptcha() {
- var xhr = new XMLHttpRequest();
- xhr.open('GET', '?refresh_captcha=1&t=' + new Date().getTime(), true);
- xhr.onreadystatechange = function() {
- if (xhr.readyState === 4 && xhr.status === 200) {
- document.getElementById('captchaDisplay').innerHTML = xhr.responseText;
- }
- };
- xhr.send();
- }
-
- function showImage(src) {
- document.getElementById('modalImage').src = src;
- document.getElementById('imageModal').style.display = 'flex';
- }
-
- function closeModal() {
- document.getElementById('imageModal').style.display = 'none';
- }
-
- document.getElementById('imageModal').addEventListener('click', function(e) {
- if (e.target === this) closeModal();
- });
-
- function toggleLoginForm() {
- var form = document.getElementById('loginForm');
- form.style.display = form.style.display === 'block' ? 'none' : 'block';
- }
-
- window.addEventListener('load', function() {
- if (window.location.hash) {
- var element = document.getElementById(window.location.hash.substring(1));
- if (element) {
- setTimeout(function() {
- element.scrollIntoView({ behavior: 'smooth' });
- }, 100);
- }
- }
- });
-
- setTimeout(function() {
- var successMsg = document.querySelector('.success-message');
- if (successMsg) {
- successMsg.style.opacity = '0';
- successMsg.style.transition = 'opacity 0.5s';
- setTimeout(function() {
- successMsg.style.display = 'none';
- }, 500);
- }
- }, 5000);
-
- document.getElementById('messageForm').addEventListener('submit', function(e) {
- var captchaInput = this.querySelector('input[name="captcha"]');
- if (captchaInput) {
- captchaInput.value = captchaInput.value.toUpperCase();
- }
- });
-
- document.querySelectorAll('.vote-form').forEach(function(form) {
- form.addEventListener('submit', function(e) {
- e.preventDefault();
- var formData = new FormData(this);
- var xhr = new XMLHttpRequest();
- xhr.open('POST', '', true);
- xhr.onreadystatechange = function() {
- if (xhr.readyState === 4) {
- if (xhr.status === 200) {
- window.location.reload();
- }
- }
- };
- xhr.send(formData);
- });
- });
- </script>
- </body>
- </html>
复制代码 |
|