Help
RSS
API
Feed
Maltego
Contact
Domain > edu.xiaojiangmc.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-09-01
149.104.21.3
(
ClassC
)
2025-10-21
149.104.21.252
(
ClassC
)
Port 443
HTTP/1.1 200 OKServer: Starxn/starxn.comDate: Tue, 21 Oct 2025 08:25:20 GMTSet-Cookie: PHPSESSIDaqvp6kh42tiujn266s5oreglh0; path/Expires: Thu, 19 Nov 1981 08:52:00 GMTCache-Control: no-store, no-cache, must-revalidatePragma: no-cacheContent-type: text/html; charsetUTF-8X-Cache: MISS from Starxn for AFQAQTransfer-Encoding: chunked !DOCTYPE html>html langzh-CN>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>江东正课程统计系统/title> link hrefhttps://fonts.googleapis.com/css2?familyNoto+Sans+SC:wght@300;400;500;700&displayswap relstylesheet> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css> style> /* 完整的CSS样式 */ * { margin: 0; padding: 0; box-sizing: border-box; font-family: Noto Sans SC, sans-serif; } :root { --primary: #4361ee; --secondary: #3f37c9; --accent: #4895ef; --success: #4cc9f0; --light: #f8f9fa; --dark: #212529; --gray: #6c757d; --light-gray: #e9ecef; --border: #dee2e6; --shadow: 0 4px 6px rgba(0, 0, 0, 0.1); --success-light: #d4edda; --success-dark: #155724; --danger-light: #f8d7da; --danger-dark: #721c24; } body { background-color: #f5f7fb; color: var(--dark); line-height: 1.6; padding-bottom: 60px; } .container { width: 100%; max-width: 1200px; margin: 0 auto; padding: 15px; } header { background: linear-gradient(135deg, var(--primary), var(--secondary)); color: white; padding: 12px 0; box-shadow: var(--shadow); position: sticky; top: 0; z-index: 100; } .header-content { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; } .logo { display: flex; align-items: center; gap: 10px; } .logo i { font-size: 1.5rem; } .logo h1 { font-weight: 700; font-size: 1.3rem; } .mobile-menu-btn { display: none; background: none; border: none; color: white; font-size: 1.5rem; cursor: pointer; } .nav-tabs { display: flex; background: white; border-radius: 8px; overflow: hidden; margin: 10px 0 15px; box-shadow: var(--shadow); flex-wrap: wrap; } .tab { flex: 1; text-align: center; padding: 12px 5px; cursor: pointer; transition: all 0.3s ease; font-weight: 500; min-width: 90px; font-size: 0.9rem; } .tab.active { background: var(--primary); color: white; } .tab:not(.active):hover { background: var(--light-gray); } .content-section { display: none; animation: fadeIn 0.5s ease; } .content-section.active { display: block; } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .card { background: white; border-radius: 10px; box-shadow: var(--shadow); padding: 18px; margin-bottom: 18px; } .card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; padding-bottom: 12px; border-bottom: 1px solid var(--border); flex-wrap: wrap; } .card-title { font-size: 1.25rem; font-weight: 600; color: var(--primary); margin-bottom: 8px; } .stats-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 15px; margin-bottom: 20px; } .stat-card { background: white; border-radius: 10px; box-shadow: var(--shadow); padding: 15px; display: flex; align-items: center; gap: 12px; transition: transform 0.3s ease; position: relative; overflow: hidden; } .stat-card:hover { transform: translateY(-3px); } .stat-icon { width: 50px; height: 50px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 1.5rem; color: white; flex-shrink: 0; } .math { background: linear-gradient(135deg, #ff6b6b, #ff8e8e); } .chinese { background: linear-gradient(135deg, #4ecdc4, #88d3ce); } .english { background: linear-gradient(135deg, #1a936f, #4bb392); } .physics { background: linear-gradient(135deg, #7209b7, #9d4edd); } .chemistry { background: linear-gradient(135deg, #f8961e, #f9c74f); } .biology { background: linear-gradient(135deg, #277da1, #4d908e); } .history { background: linear-gradient(135deg, #f94144, #f3722c); } .geography { background: linear-gradient(135deg, #90be6d, #a9c88f); } .custom { background: linear-gradient(135deg, #a663cc, #b298dc); } .stat-info { flex: 1; min-width: 0; } .stat-title { font-size: 0.9rem; color: var(--gray); margin-bottom: 5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .stat-value { font-size: 1.4rem; font-weight: 700; color: var(--dark); } .progress-bar { height: 8px; background: var(--light-gray); border-radius: 4px; margin-top: 8px; overflow: hidden; } .progress { height: 100%; border-radius: 4px; background: var(--primary); } .btn-group { display: flex; gap: 8px; margin-top: 10px; } .btn { padding: 8px 12px; border-radius: 6px; border: none; cursor: pointer; font-weight: 500; transition: all 0.3s ease; display: inline-flex; align-items: center; gap: 6px; font-size: 0.85rem; flex: 1; justify-content: center; } .btn i { font-size: 0.9rem; } .btn-primary { background: var(--primary); color: white; } .btn-primary:hover { background: var(--secondary); } .btn-outline { background: transparent; border: 1px solid var(--primary); color: var(--primary); } .btn-outline:hover { background: var(--primary); color: white; } .btn-success { background: #28a745; color: white; } .btn-success:hover { background: #218838; } .btn-danger { background: #dc3545; color: white; } .btn-danger:hover { background: #c82333; } table { width: 100%; border-collapse: collapse; margin-top: 15px; font-size: 0.9rem; } th, td { padding: 12px 8px; text-align: left; border-bottom: 1px solid var(--border); } th { background: var(--light); font-weight: 600; color: var(--gray); } tr:hover { background: var(--light); } .form-group { margin-bottom: 15px; } label { display: block; margin-bottom: 6px; font-weight: 500; color: var(--dark); font-size: 0.9rem; } input, select, textarea { width: 100%; padding: 10px 12px; border: 1px solid var(--border); border-radius: 6px; font-size: 0.95rem; } input:focus, select:focus, textarea:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(67, 97, 238, 0.2); } .form-row { display: flex; gap: 15px; margin-bottom: 15px; } .form-row .form-group { flex: 1; margin-bottom: 0; } .action-btn { padding: 6px 10px; border-radius: 6px; border: none; cursor: pointer; font-size: 0.85rem; display: inline-flex; align-items: center; gap: 4px; } .action-btn.edit { background: #ffc107; color: #212529; } .action-btn.delete { background: #dc3545; color: white; } .schedule-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; margin-top: 15px; } .schedule-day { background: white; border-radius: 8px; padding: 12px; box-shadow: var(--shadow); min-height: 180px; } .day-header { text-align: center; font-weight: 600; padding-bottom: 8px; margin-bottom: 8px; border-bottom: 1px solid var(--border); color: var(--primary); font-size: 0.9rem; } .schedule-item { background: var(--light); padding: 8px; border-radius: 6px; margin-bottom: 8px; font-size: 0.85rem; position: relative; } .schedule-item .time { font-weight: 600; color: var(--gray); font-size: 0.75rem; margin-bottom: 4px; } .consumption-badge { display: inline-block; padding: 4px 8px; border-radius: 20px; font-size: 0.75rem; font-weight: 500; background: var(--light-gray); color: var(--gray); margin: 2px; white-space: nowrap; } .consumption-badge.decrease { background: var(--danger-light); color: var(--danger-dark); } .consumption-badge.increase { background: var(--success-light); color: var(--success-dark); } .auto-status { padding: 12px; border-radius: 8px; margin-bottom: 15px; display: flex; align-items: center; gap: 10px; font-size: 0.95rem; } .auto-status.success { background: #d4edda; color: #155724; border-left: 4px solid #28a745; } .auto-status.info { background: #cce5ff; color: #004085; border-left: 4px solid #007bff; } footer { text-align: center; padding: 20px 0; color: var(--gray); font-size: 0.85rem; margin-top: 30px; background: white; position: fixed; bottom: 0; width: 100%; border-top: 1px solid var(--border); } .notification { position: fixed; top: 15px; right: 15px; padding: 12px 20px; border-radius: 8px; background: white; box-shadow: 0 5px 15px rgba(0,0,0,0.1); display: flex; align-items: center; gap: 12px; transform: translateX(110%); transition: transform 0.3s ease; z-index: 1000; max-width: 90%; } .notification.show { transform: translateX(0); } .notification.success { border-left: 4px solid #28a745; } .notification.error { border-left: 4px solid #dc3545; } .notification i { font-size: 1.3rem; } .notification.success i { color: #28a745; } .notification.error i { color: #dc3545; } .modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.7); display: flex; align-items: center; justify-content: center; z-index: 2000; opacity: 0; visibility: hidden; transition: all 0.3s ease; padding: 15px; } .modal.active { opacity: 1; visibility: visible; } .modal-content { background: white; border-radius: 10px; width: 100%; max-width: 500px; padding: 25px; box-shadow: 0 10px 30px rgba(0,0,0,0.3); position: relative; transform: translateY(20px); transition: transform 0.3s ease; } .modal.active .modal-content { transform: translateY(0); } .modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; padding-bottom: 12px; border-bottom: 1px solid var(--border); } .modal-title { font-size: 1.3rem; font-weight: 600; color: var(--primary); } .modal-close { background: none; border: none; font-size: 1.3rem; cursor: pointer; color: var(--gray); position: absolute; top: 15px; right: 15px; } .login-icon { width: 70px; height: 70px; border-radius: 50%; background: var(--primary); display: flex; align-items: center; justify-content: center; margin: 0 auto 15px; font-size: 1.8rem; color: white; } .admin-only { display: none; } .logged-in .admin-only { display: block; } .logged-in .login-required { display: none; } .week-nav { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; } .week-title { font-weight: 600; color: var(--primary); font-size: 1.1rem; } .day-name { font-weight: 600; margin-bottom: 8px; color: var(--primary); font-size: 0.95rem; } .admin-info { display: flex; align-items: center; gap: 8px; margin-top: 8px; flex-wrap: wrap; justify-content: flex-end; } .month-nav { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; flex-wrap: wrap; gap: 10px; } .month-title { font-weight: 600; color: var(--primary); font-size: 1.2rem; text-align: center; flex: 1; min-width: 150px; } .calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; margin-top: 15px; } .calendar-day { background: white; border-radius: 8px; padding: 12px; box-shadow: var(--shadow); min-height: 110px; position: relative; } .day-number { position: absolute; top: 5px; right: 8px; font-weight: bold; color: var(--gray); font-size: 0.9rem; } .today .day-number { background: var(--primary); color: white; width: 22px; height: 22px; border-radius: 50%; display: flex; align-items: center; justify-content: center; line-height: 1; } .schedule-items { margin-top: 18px; } .schedule-item.small { padding: 4px; margin-bottom: 4px; font-size: 0.75rem; } .no-class { color: var(--gray); font-style: italic; font-size: 0.85rem; text-align: center; padding: 8px; } .add-lesson-modal { max-width: 400px; } .add-lesson-form { padding: 15px; } .action-buttons { display: flex; gap: 8px; margin-top: 10px; } /* 自动扣课设置样式 */ .schedule-card { background: #f8f9fa; border-radius: 8px; padding: 15px; margin-bottom: 20px; border: 1px solid #dee2e6; } .schedule-header { margin-bottom: 15px; } .schedule-header input { font-weight: 600; font-size: 1.1rem; padding: 8px 12px; } .days-selector { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 8px; } .day-checkbox { display: flex; align-items: center; gap: 5px; padding: 6px 12px; background: #e9ecef; border-radius: 20px; cursor: pointer; transition: all 0.3s ease; } .day-checkbox:hover { background: #dee2e6; } .day-checkbox inputtypecheckbox { margin: 0; width: auto; } .auto-schedule-table { width: 100%; margin-top: 15px; border-collapse: collapse; } .auto-schedule-table th, .auto-schedule-table td { padding: 10px; text-align: left; border-bottom: 1px solid #dee2e6; } .auto-schedule-table th { background: #e9ecef; font-weight: 600; } /* 修复开关样式 */ .switch { position: relative; display: inline-block; width: 50px; height: 24px; } .switch input { opacity: 0; width: 0; height: 0; } .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; -webkit-transition: .4s; transition: .4s; border-radius: 24px; } .slider:before { position: absolute; content: ; height: 16px; width: 16px; left: 4px; bottom: 4px; background-color: white; -webkit-transition: .4s; transition: .4s; border-radius: 50%; } input:checked + .slider { background-color: #4361ee; } input:checked + .slider:before { -webkit-transform: translateX(26px); -ms-transform: translateX(26px); transform: translateX(26px); } /* 移动端适配 */ @media (max-width: 768px) { .container { padding: 10px; } .header-content { flex-direction: column; align-items: flex-start; } .logo { margin-bottom: 10px; } .mobile-menu-btn { display: block; position: absolute; top: 15px; right: 15px; } .nav-tabs { flex-direction: column; display: none; margin: 10px 0; } .nav-tabs.active { display: flex; } .tab { min-width: 100%; padding: 12px; text-align: left; } .stats-grid { grid-template-columns: 1fr; gap: 12px; } .card { padding: 15px; } .card-header { flex-direction: column; align-items: flex-start; } .card-title { margin-bottom: 10px; font-size: 1.2rem; } .form-row { flex-direction: column; gap: 0; } .schedule-grid, .calendar-grid { grid-template-columns: repeat(1, 1fr); } .schedule-day { min-height: auto; } table { display: block; overflow-x: auto; white-space: nowrap; font-size: 0.8rem; } th, td { padding: 10px 6px; } .btn-group { flex-direction: column; gap: 6px; } .btn { width: 100%; padding: 10px; font-size: 0.9rem; } .admin-info { width: 100%; margin-top: 10px; } .action-buttons { flex-direction: column; width: 100%; } .month-nav { flex-direction: column; gap: 10px; } .month-nav button { width: 100%; } } @media (max-width: 480px) { .logo h1 { font-size: 1.1rem; } .stat-card { flex-direction: column; text-align: center; } .stat-info { width: 100%; } .modal-content { padding: 20px 15px; } .admin-info { flex-direction: column; align-items: flex-start; } } /style>/head>body class> header> div classcontainer> div classheader-content> div classlogo> i classfas fa-book-open>/i> h1>江东正课程统计系统/h1> /div> button classmobile-menu-btn idmobileMenuBtn> i classfas fa-bars>/i> /button> div classadmin-info idadminArea> span idadminInfo> i classfas fa-user>/i> 访客模式 /span> div classaction-buttons> button classbtn btn-outline idloginBtn> i classfas fa-sign-in-alt>/i> 管理员登录 /button> /div> /div> /div> /div> /header> div classcontainer> div classnav-tabs idnavTabs> div classtab active data-targetdashboard>课程统计/div> div classtab data-targetconsumptions>消耗记录/div> div classtab data-targetauto-deductions>自动扣课/div> div classtab data-targetsettings>课时管理/div> /div> div iddashboard classcontent-section active> div classcard> div classcard-header> div classcard-title>课程剩余情况/div> div> span classconsumption-badge>总课程: 344节/span> span classconsumption-badge>剩余: 317节/span> span classconsumption-badge>已消耗: 27节/span> /div> /div> div classstats-grid idstatsGrid> div classstat-card> div classstat-icon math> i classfas fa-calculator>/i> /div> div classstat-info> div classstat-title>苏宁课程/div> div classstat-value>294/308/div> div classprogress-bar> div classprogress stylewidth: 95%>/div> /div> /div> /div> div classstat-card> div classstat-icon chinese> i classfas fa-book>/i> /div> div classstat-info> div classstat-title>文拾课程/div> div classstat-value>23/36/div> div classprogress-bar> div classprogress stylewidth: 64%>/div> /div> /div> /div> /div> div classlogin-required styletext-align: center; padding: 20px; background: #f8f9fa; border-radius: 8px;> i classfas fa-lock stylefont-size: 2rem; margin-bottom: 15px; color: #6c757d;>/i> h3>管理员功能已锁定/h3> p>请登录管理员账号进行操作/p> button classbtn btn-primary idloginPromptBtn stylemargin-top: 15px;> i classfas fa-sign-in-alt>/i> 管理员登录 /button> /div> /div> /div> div idconsumptions classcontent-section> div classcard> div classcard-header> div classcard-title>课程消耗记录/div> div> a hrefexport.php classbtn btn-outline iddownloadLogBtn> i classfas fa-download>/i> 导出记录 /a> /div> /div> table idconsumptionTable> thead> tr> th>日期/th> th>课程/th> th>类型/th> th>数量/th> th>操作人/th> th>备注/th> /tr> /thead> tbody> tr> td>2025-07-30 10:39:22/td> td>文拾课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-30 10:38:47/td> td>苏宁课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-28 10:13:42/td> td>文拾课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-28 10:13:30/td> td>苏宁课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-25 10:08:11/td> td>文拾课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-25 10:08:00/td> td>苏宁课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-23 11:51:05/td> td>文拾课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-23 11:50:52/td> td>苏宁课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-21 11:42:09/td> td>文拾课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-21 11:41:57/td> td>苏宁课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-18 10:09:01/td> td>文拾课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-18 10:08:54/td> td>苏宁课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-16 10:46:14/td> td>文拾课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-16 10:46:02/td> td>苏宁课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-14 10:48:55/td> td>文拾课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-14 10:48:43/td> td>苏宁课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-11 10:29:36/td> td>文拾课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-11 10:29:29/td> td>苏宁课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-09 10:45:26/td> td>文拾课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-09 10:45:16/td> td>苏宁课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> tr> td>2025-07-09 10:45:07/td> td>文拾课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>7月7日正常上课/td> /tr> tr> td>2025-07-09 10:44:40/td> td>苏宁课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>7月7日正常上课/td> /tr> tr> td>2025-07-04 19:43:47/td> td>文拾课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>语文正常上课/td> /tr> tr> td>2025-07-04 19:43:40/td> td>苏宁课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>数学正常上课/td> /tr> tr> td>2025-07-02 14:36:14/td> td>文拾课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>语文正常上课/td> /tr> tr> td>2025-07-02 14:36:04/td> td>苏宁课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>数学正常上课/td> /tr> tr> td>2025-06-30 18:38:23/td> td>苏宁课程/td> td>span classconsumption-badge increase>增加/span>/td> td>1/td> td>admin/td> td>测试/td> /tr> tr> td>2025-06-30 18:38:22/td> td>苏宁课程/td> td>span classconsumption-badge increase>增加/span>/td> td>1/td> td>admin/td> td>测试/td> /tr> tr> td>2025-06-30 17:25:29/td> td>苏宁课程/td> td>span classconsumption-badge decrease>减少/span>/td> td>1/td> td>admin/td> td>正常上课/td> /tr> /tbody> /table> /div> /div> div idauto-deductions classcontent-section> div classcard> div classcard-header> div classcard-title>自动扣课设置/div> /div> !-- 显示自动扣课状态 --> div classauto-status info> i classfas fa-info-circle>/i> 今天的自动扣课尚未执行(设定时间: 09:00,当前时间: 16:25) /div> div classlogin-required styletext-align: center; padding: 20px; background: #f8f9fa; border-radius: 8px;> i classfas fa-lock stylefont-size: 2rem; margin-bottom: 15px; color: #6c757d;>/i> h3>管理员功能已锁定/h3> p>请登录管理员账号进行操作/p> button classbtn btn-primary idloginPromptBtn2 stylemargin-top: 15px;> i classfas fa-sign-in-alt>/i> 管理员登录 /button> /div> /div> div classcard> div classcard-header> div classcard-title>自动扣课记录/div> /div> table idautoLogsTable> thead> tr> th>日期/th> th>课程/th> th>数量/th> th>备注/th> th>操作/th> /tr> /thead> tbody> /tbody> /table> /div> /div> div idsettings classcontent-section> div classcard> div classcard-header> div classcard-title>课时管理/div> div> button classbtn btn-primary onclicklocation.reload()> i classfas fa-sync-alt>/i> 刷新数据 /button> /div> /div> table idcourseSettingsTable> thead> tr> th>课程名称/th> th>初始次数/th> th>当前剩余/th> th>操作/th> /tr> /thead> tbody> tr> td>苏宁课程/td> td>308/td> td>294/td> td> span classadmin-only>管理员操作/span> /td> /tr> tr> td>文拾课程/td> td>36/td> td>23/td> td> span classadmin-only>管理员操作/span> /td> /tr> /tbody> /table> /div> /div> /div> !-- 登录模态框 --> div classmodal idloginModal> div classmodal-content> button classmodal-close idcloseLoginModal> i classfas fa-times>/i> /button> div classlogin-icon> i classfas fa-lock>/i> /div> h2 classmodal-title>管理员登录/h2> form methodpost> div classform-group> label forusername>用户名/label> input typetext nameusername placeholder输入管理员用户名 required> /div> div classform-group> label forpassword>密码/label> input typepassword namepassword placeholder输入密码 required> /div> button typesubmit namelogin classbtn btn-primary> i classfas fa-sign-in-alt>/i> 登录系统 /button> /form> /div> /div> !-- 课时操作模态框 --> div classmodal idlessonModal> div classmodal-content add-lesson-modal> button classmodal-close idcloseLessonModal> i classfas fa-times>/i> /button> h2 classmodal-title idlessonModalTitle>课时操作/h2> form methodpost> input typehidden namecourse_name idlessonCourse> input typehidden nameaction idlessonAction> div classform-group> label>课时数量/label> input typenumber nameamount value1 min1 max20 required> /div> div classform-group> label>备注/label> textarea namenote placeholder输入备注信息(可选) rows2>/textarea> /div> button typesubmit namelesson_operation classbtn btn-primary> i classfas fa-check-circle>/i> 确认操作 /button> /form> /div> /div> !-- 减少课时确认模态框 --> div classmodal idconfirmModal> div classmodal-content stylemax-width: 400px;> button classmodal-close idcloseConfirmModal> i classfas fa-times>/i> /button> h2 classmodal-title>确认操作/h2> div classform-group styletext-align: center; padding: 20px 0;> i classfas fa-exclamation-triangle stylefont-size: 3rem; color: #ffc107; margin-bottom: 15px;>/i> p idconfirmMessage stylefont-size: 1.1rem; line-height: 1.5;>您确定要执行此操作吗?此操作不可撤销。/p> /div> div styledisplay: flex; gap: 10px; margin-top: 15px;> button classbtn btn-outline idcancelConfirmBtn styleflex: 1;> i classfas fa-times>/i> 取消 /button> form methodpost styleflex: 1;> input typehidden namecourse_name idconfirmCourse> input typehidden nameaction idconfirmAction> input typehidden nameamount idconfirmAmount> input typehidden namenote idconfirmNote> button classbtn btn-danger typesubmit namelesson_operation stylewidth: 100%;> i classfas fa-check>/i> 确认 /button> /form> /div> /div> /div> div classnotification idnotification> i classfas fa-check-circle>/i> div> div stylefont-weight: 600; idnotifTitle>操作成功/div> div idnotifMessage>课时操作已保存/div> /div> /div> footer> div classcontainer> p>© 2025 江东正课程统计系统 | by小江说世界/p> p stylemargin-top: 10px; font-size: 0.8rem; color: #6c757d;> 所有数据保存在服务器文本文件中,安全可靠 /p> /div> /footer> script> // DOM元素 const loginModal document.getElementById(loginModal); const closeLoginModal document.getElementById(closeLoginModal); const loginBtn document.getElementById(loginBtn); const notification document.getElementById(notification); const loginPromptBtn document.getElementById(loginPromptBtn); const loginPromptBtn2 document.getElementById(loginPromptBtn2); const lessonModal document.getElementById(lessonModal); const closeLessonModal document.getElementById(closeLessonModal); const confirmModal document.getElementById(confirmModal); const closeConfirmModal document.getElementById(closeConfirmModal); const cancelConfirmBtn document.getElementById(cancelConfirmBtn); const mobileMenuBtn document.getElementById(mobileMenuBtn); const navTabs document.getElementById(navTabs); // 绑定事件 document.addEventListener(DOMContentLoaded, function() { // 处理URL参数中的通知 const urlParams new URLSearchParams(window.location.search); if (urlParams.has(success)) { showNotification(urlParams.get(success), success); } if (urlParams.has(error)) { showNotification(urlParams.get(error), error); } // 标签切换 document.querySelectorAll(.tab).forEach(tab > { tab.addEventListener(click, () > { document.querySelectorAll(.tab).forEach(t > t.classList.remove(active)); document.querySelectorAll(.content-section).forEach(s > s.classList.remove(active)); tab.classList.add(active); const target tab.getAttribute(data-target); document.getElementById(target).classList.add(active); // 在移动端点击标签后隐藏菜单 if (window.innerWidth 768) { navTabs.classList.remove(active); } }); }); // 移动端菜单按钮 mobileMenuBtn.addEventListener(click, function() { navTabs.classList.toggle(active); }); // 登录按钮 if (loginBtn) { loginBtn.addEventListener(click, function() { loginModal.classList.add(active); }); } // 登录提示按钮 if (loginPromptBtn) { loginPromptBtn.addEventListener(click, function() { loginModal.classList.add(active); }); } if (loginPromptBtn2) { loginPromptBtn2.addEventListener(click, function() { loginModal.classList.add(active); }); } // 关闭登录模态框 closeLoginModal.addEventListener(click, function() { loginModal.classList.remove(active); }); // 关闭课时操作模态框 closeLessonModal.addEventListener(click, function() { lessonModal.classList.remove(active); }); // 关闭确认模态框 closeConfirmModal.addEventListener(click, function() { confirmModal.classList.remove(active); }); cancelConfirmBtn.addEventListener(click, function() { confirmModal.classList.remove(active); }); // 为操作按钮添加事件 document.querySelectorAll(.add-lesson-btn, .remove-lesson-btn).forEach(btn > { btn.addEventListener(click, function() { const courseName this.getAttribute(data-course); const action this.getAttribute(data-action); document.getElementById(lessonCourse).value courseName; document.getElementById(lessonAction).value action; // 更新模态框标题 document.getElementById(lessonModalTitle).textContent action add ? 增加课时 : 减少课时; lessonModal.classList.add(active); }); }); }); // 删除课程 function deleteCourse(courseId) { if (confirm(确定要删除这个课程吗?此操作不可撤销。)) { window.location.href `delete_course.php?id${courseId}`; } } // 显示通知 function showNotification(message, type) { const title type success ? 操作成功 : 操作失败; document.getElementById(notifTitle).textContent title; document.getElementById(notifMessage).textContent message; notification.className notification; notification.classList.add(type, show); // 更新图标 const icon notification.querySelector(i); icon.className type success ? fas fa-check-circle : fas fa-exclamation-circle; setTimeout(() > { notification.classList.remove(show); }, 3000); } /script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]