Help
RSS
API
Feed
Maltego
Contact
Domain > portal.relimasijunjung.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-09-14
91.108.98.49
(
ClassC
)
2025-10-16
77.37.76.244
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyDate: Thu, 16 Oct 2025 16:12:26 GMTContent-Type: text/htmlContent-Length: 795Connection: keep-aliveLocation: https://portal.relimasijunjung.com/platform: hostingerpanel: hpanelContent-Security-Policy: upgrade-insecure-requestsServer: hcdnalt-svc: h3:443; ma86400x-hcdn-request-id: c7a26cc51099cd8b1eb67cb4363caf3e-phx-edge7x-hcdn-cache-status: MISSx-hcdn-upstream-rt: 0.445 !DOCTYPE html>html styleheight:100%>head>meta nameviewport contentwidthdevice-width, initial-scale1, shrink-to-fitno />title> 301 Moved Permanently/title>style>@media (prefers-color-scheme:dark){body{background-color:#000!important}}/style>/head>body stylecolor: #444; margin:0;font: normal 14px/20px Arial, Helvetica, sans-serif; height:100%; background-color: #fff;>div styleheight:auto; min-height:100%; > div styletext-align: center; width:800px; margin-left: -400px; position:absolute; top: 30%; left:50%;> h1 stylemargin:0; font-size:150px; line-height:150px; font-weight:bold;>301/h1>h2 stylemargin-top:20px;font-size: 30px;>Moved Permanently/h2>p>The document has been permanently moved./p>/div>/div>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Thu, 16 Oct 2025 16:12:27 GMTContent-Type: text/htmlTransfer-Encoding: chunkedConnection: keep-aliveVary: Accept-EncodingLast-Modified: Wed, 17 Sep 2025 15:41:25 GMTEtag: W/9fc0-68cad6a5-8cf562245fcc51d6;gzplatform: hostingerpanel: hpanelContent-Security-Policy: upgrade-insecure-requestsX-Content-Type-Options: nosniffX-Frame-Options: SAMEORIGINX-XSS-Protection: 1; modeblockServer: hcdnalt-svc: h3:443; ma86400x-hcdn-request-id: c8eba944da1987c5544df53d002df5d9-phx-edge6x-hcdn-cache-status: DYNAMICx-hcdn-upstream-rt: 0.642 !DOCTYPE html>html langid>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>Login - Portal RELIMA Sijunjung/title> link hrefhttps://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css relstylesheet> style> * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: Arial, sans-serif; background: linear-gradient(135deg, #2E7D32, #0277BD); min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 20px; } .login-container { background: white; border-radius: 20px; box-shadow: 0 20px 60px rgba(0,0,0,0.3); overflow: hidden; max-width: 1200px; width: 100%; display: flex; min-height: 700px; } .login-left { flex: 0.35; background: linear-gradient(135deg, #2E7D32, #0277BD); padding: 40px; display: flex; flex-direction: column; justify-content: center; align-items: center; color: white; } .logo-container { width: 120px; height: 120px; border-radius: 50%; border: 4px solid #FFD700; overflow: hidden; background: white; margin-bottom: 30px; } .logo-container img { width: 100%; height: 100%; object-fit: cover; } .login-left h1 { font-size: 2em; margin-bottom: 10px; text-align: center; } .login-left p { text-align: center; font-size: 1.1em; opacity: 0.9; margin-bottom: 5px; } .contact-info { margin-top: 40px; text-align: center; padding-top: 20px; border-top: 1px solid rgba(255,255,255,0.3); } .contact-info p { font-size: 0.9em; margin-bottom: 10px; } .contact-info a { color: #FFD700; text-decoration: none; font-weight: bold; } .login-right { flex: 0.65; padding: 40px; display: flex; flex-direction: column; overflow-y: auto; max-height: 90vh; } .form-header { margin-bottom: 25px; } .form-header h2 { color: #333; font-size: 1.8em; margin-bottom: 10px; } .form-header p { color: #666; } .tab-buttons { display: flex; gap: 10px; margin-bottom: 25px; } .tab-btn { flex: 1; padding: 12px; border: 2px solid #e0e0e0; background: white; color: #666; cursor: pointer; border-radius: 8px; font-weight: bold; transition: all 0.3s; display: flex; align-items: center; justify-content: center; gap: 8px; } .tab-btn.active { background: linear-gradient(135deg, #2E7D32, #0277BD); color: white; border-color: transparent; } .tab-content { display: none; } .tab-content.active { display: block; } .form-group { margin-bottom: 18px; } .form-group label { display: block; margin-bottom: 6px; color: #333; font-weight: bold; font-size: 0.9em; } .form-group input, .form-group select, .form-group textarea { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 8px; font-size: 14px; transition: all 0.3s; } .form-group input:focus, .form-group select:focus, .form-group textarea:focus { outline: none; border-color: #2E7D32; box-shadow: 0 0 0 3px rgba(46, 125, 50, 0.1); } .password-field { position: relative; } .toggle-password { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); background: none; border: none; color: #666; cursor: pointer; } .page-select { background: #FEF3C7; border: 1px solid #F59E0B; padding: 15px; border-radius: 8px; margin-bottom: 20px; } .page-select h3 { color: #92400E; margin-bottom: 15px; font-size: 1.1em; } .page-dropdown { position: relative; } .page-dropdown select { background: white; border: 2px solid #F59E0B; color: #333; font-weight: 500; } .page-dropdown select option { padding: 10px; background: white; color: #333; } .page-dropdown select optgroup { font-weight: bold; color: #2E7D32; background: #E8F5E9; } .page-description { margin-top: 10px; padding: 10px; background: white; border-radius: 5px; border-left: 4px solid #F59E0B; font-size: 0.9em; color: #666; display: none; } .page-description.show { display: block; } .badge { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 0.7em; font-weight: bold; margin-left: 8px; } .badge-free { background: linear-gradient(135deg, #10B981, #059669); color: white; } .badge-premium { background: linear-gradient(135deg, #EF4444, #DC2626); color: white; } .badge-new { background: linear-gradient(135deg, #FFD700, #FFA500); color: #2E7D32; } .badge-multi { background: linear-gradient(135deg, #8B5CF6, #7C3AED); color: white; } .file-upload { position: relative; display: inline-block; cursor: pointer; width: 100%; } .file-upload inputtypefile { position: absolute; opacity: 0; width: 100%; height: 100%; cursor: pointer; } .file-upload-label { display: block; padding: 10px; background: #f8f8f8; border: 2px dashed #2E7D32; border-radius: 8px; text-align: center; color: #2E7D32; font-weight: bold; transition: all 0.3s; font-size: 0.9em; } .file-upload:hover .file-upload-label { background: #E8F5E9; } .btn { width: 100%; padding: 14px; border: none; border-radius: 8px; cursor: pointer; font-weight: bold; font-size: 16px; transition: all 0.3s; display: flex; align-items: center; justify-content: center; gap: 8px; } .btn-primary { background: linear-gradient(135deg, #2E7D32, #0277BD); color: white; } .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 10px 25px rgba(46, 125, 50, 0.3); } .btn-secondary { background: #f0f0f0; color: #666; margin-top: 10px; } .btn-secondary:hover { background: #e0e0e0; } .divider { text-align: center; margin: 20px 0; color: #999; position: relative; } .divider::before, .divider::after { content: ; position: absolute; top: 50%; width: 45%; height: 1px; background: #e0e0e0; } .divider::before { left: 0; } .divider::after { right: 0; } .alert { padding: 12px; border-radius: 8px; margin-bottom: 20px; display: none; } .alert.show { display: block; } .alert-success { background: #D1FAE5; color: #065F46; border: 1px solid #10B981; } .alert-error { background: #FEE2E2; color: #991B1B; border: 1px solid #EF4444; } .alert-info { background: #DBEAFE; color: #1E40AF; border: 1px solid #3B82F6; } .loading { display: none; text-align: center; padding: 20px; } .loading.active { display: block; } .spinner { border: 3px solid #f3f3f3; border-top: 3px solid #2E7D32; border-radius: 50%; width: 40px; height: 40px; animation: spin 1s linear infinite; margin: 0 auto; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } @media (max-width: 768px) { .login-container { flex-direction: column; max-height: none; } .login-left { padding: 30px; flex: none; } .login-right { max-height: none; } .logo-container { width: 80px; height: 80px; } } /style>/head>body> div classlogin-container> div classlogin-left> div classlogo-container> img srcrelima.png altLogo RELIMA> /div> h1>Portal RELIMA/h1> p>Relawan Literasi Masyarakat/p> p>Kabupaten Sijunjung/p> div classcontact-info> p>© 2025 RELIMA Sijunjung/p> p>Komplek Cendekia Muslim/p> p>Jorong Pale/p> p> a hrefhttps://wa.me/6282268900329> i classfab fa-whatsapp>/i> 0822-6890-0329 /a> /p> /div> /div> div classlogin-right> div classform-header> h2>Selamat Datang/h2> p>Portal AI Literasi & Administrasi Pendidikan/p> /div> div idalertBox classalert>/div> div classtab-buttons> button classtab-btn active onclickswitchTab(login)> i classfas fa-sign-in-alt>/i> Masuk /button> button classtab-btn onclickswitchTab(register)> i classfas fa-user-plus>/i> Daftar /button> /div> !-- Login Form --> div idloginTab classtab-content active> form idloginForm onsubmithandleLogin(event)> div classform-group> label forloginEmail>Email/label> input typeemail idloginEmail required placeholderemail@example.com> /div> div classform-group> label forloginPassword>Password/label> div classpassword-field> input typepassword idloginPassword required placeholderMasukkan password> button typebutton classtoggle-password onclicktogglePassword(loginPassword)> i classfas fa-eye>/i> /button> /div> /div> button typesubmit classbtn btn-primary> i classfas fa-sign-in-alt>/i> Masuk /button> div classdivider>atau/div> button typebutton classbtn btn-secondary onclickswitchTab(register)> Belum punya akun? Daftar sekarang /button> /form> /div> !-- Register Form --> div idregisterTab classtab-content> form idregisterForm onsubmithandleRegister(event)> div classform-group> label forregFullName>Nama Lengkap */label> input typetext idregFullName required placeholderNama lengkap sesuai KTP> /div> div classform-group> label forregEmail>Email */label> input typeemail idregEmail required placeholderemail@example.com> /div> div classform-group> label forregPhone>No. HP/WhatsApp */label> input typetel idregPhone required placeholder08xxxxxxxxxx> /div> div classform-group> label forregPassword>Password */label> div classpassword-field> input typepassword idregPassword required placeholderMinimal 6 karakter> button typebutton classtoggle-password onclicktogglePassword(regPassword)> i classfas fa-eye>/i> /button> /div> /div> div classform-group> label forregConfirmPassword>Konfirmasi Password */label> div classpassword-field> input typepassword idregConfirmPassword required placeholderUlangi password> button typebutton classtoggle-password onclicktogglePassword(regConfirmPassword)> i classfas fa-eye>/i> /button> /div> /div> div classform-group> label forregInstitution>Asal Instansi/Organisasi/label> input typetext idregInstitution placeholderNama instansi/organisasi> /div> div classform-group> label forregAddress>Alamat Lengkap */label> textarea idregAddress required rows2 placeholderAlamat lengkap>/textarea> /div> div classform-group> label forregBirthPlace>Tempat Lahir/label> input typetext idregBirthPlace placeholderKota/Kabupaten> /div> div classform-group> label forregBirthDate>Tanggal Lahir/label> input typedate idregBirthDate> /div> div classform-group> label forregPhoto>Foto Profil/label> div classfile-upload> input typefile idregPhoto acceptimage/* onchangehandlePhotoUpload(event)> label classfile-upload-label forregPhoto> i classfas fa-camera>/i> Upload Foto (Opsional) /label> /div> /div> div classpage-select> h3>Pilih Halaman yang Ingin Diakses */h3> div classpage-dropdown> select idpageSelect required onchangeshowPageDescription()> option value>-- Pilih Satu Halaman --/option> optgroup label🎨 AI Kreatif & Literasi> option valuepuisiku data-descriptionAI Poetry Writer yang membantu Anda menulis puisi dengan bantuan Multi-AI. Cocok untuk pengembangan kreativitas dan literasi sastra. data-badgeMulti-AI data-badge-typemulti>PuisiKu - AI Poetry Writer/option> option valuejurnalku data-descriptionAI Article Writer untuk membuat artikel berkualitas dengan bantuan Multi-AI. Ideal untuk jurnalis, blogger, dan content creator. data-badgeMulti-AI data-badge-typemulti>JurnalKu - AI Article Writer/option> option valuecerpenku data-descriptionAI Short Story Writer untuk menulis cerita pendek yang menarik. Fitur terbaru untuk pengembangan kemampuan menulis fiksi. data-badgeNEW data-badge-typenew>CerpenKu - AI Short Story Writer/option> option valuefiksiku data-descriptionMenulis Novel dengan AI - fitur premium untuk penulis yang ingin mengembangkan karya fiksi panjang dengan bantuan AI canggih. data-badgePremium data-badge-typepremium>FiksiKu - Menulis Novel dengan AI/option> option valueesaiku data-descriptionAI Essay Writer untuk menulis esai akademik dan populer. Fitur baru yang membantu dalam penulisan argumentatif. data-badgeNEW data-badge-typenew>EsaiKu - AI Essay Writer/option> option valueceritaku data-descriptionCerita Anak dengan AI - gratis untuk semua user. Cocok untuk pendidik dan orangtua yang ingin membuat cerita edukatif untuk anak. data-badgeFree data-badge-typefree>CeritaKu - Cerita Anak dengan AI/option> /optgroup> optgroup label🏫 Sistem Administrasi Sekolah> option valueadmin_guru data-descriptionSistem Administrasi Guru lengkap untuk mengelola data guru, jadwal, dan administrasi kepegawaian. Fitur premium dengan dukungan penuh. data-badgePremium data-badge-typepremium>Sistem Administrasi Guru/option> option valueadmin_bos data-descriptionAdminKu BOS - Administrasi Keuangan Sekolah untuk mengelola dana BOS dan pelaporan keuangan secara sistematis. data-badgePremium data-badge-typepremium>AdminKu BOS - Administrasi Keuangan/option> option valueadmin_umum data-descriptionSistem Administrasi Umum Sekolah untuk mengelola berbagai keperluan administratif sekolah. Fitur terbaru dan komprehensif. data-badgeNEW data-badge-typenew>Sistem Administrasi Umum Sekolah/option> option valueteacher_planner data-descriptionTeacher Planner AI dengan Deep Learning untuk perencanaan pembelajaran yang optimal dan personal. Fitur premium dengan AI canggih. data-badgePremium data-badge-typepremium>Teacher Planner AI - Deep Learning/option> option valueevaluasiku data-descriptionEvaluasiKu - Sistem Evaluasi & Pelaporan untuk menganalisis kinerja dan membuat laporan evaluasi komprehensif. data-badgeNEW data-badge-typenew>EvaluasiKu - Sistem Evaluasi & Pelaporan/option> /optgroup> optgroup label🎓 AI Akademik & Penelitian> option valuebuku_ajar data-descriptionBuat Buku Ajar dengan AI - fitur premium untuk dosen dan guru yang ingin membuat buku ajar berkualitas dengan bantuan AI. data-badgePremium data-badge-typepremium>Buat Buku Ajar dengan AI/option> option valueskripsi_to_buku data-descriptionKonverter Skripsi ke Buku Populer - ubah penelitian akademis menjadi buku yang dapat dibaca masyarakat umum. data-badgeNEW data-badge-typenew>Konverter Skripsi ke Buku Populer/option> option valueskripsi_generator data-descriptionAI Skripsi Generator - bantuan premium untuk mahasiswa dalam menyusun kerangka dan draft skripsi dengan panduan AI. data-badgePremium data-badge-typepremium>AI Skripsi Generator/option> option valuereference_search data-descriptionAcademic Reference Search - cari referensi akademik gratis untuk mendukung penelitian dan penulisan ilmiah. data-badgeFree data-badge-typefree>Academic Reference Search/option> option valuegrammar_checker data-descriptionGrammar & Spell Checker gratis untuk memperbaiki tata bahasa dan ejaan dalam tulisan akademik dan populer. data-badgeFree data-badge-typefree>Grammar & Spell Checker/option> option valueplagiarism_checker data-descriptionPlagiarism Checker premium untuk memastikan orisinalitas karya tulis dan penelitian akademik. data-badgePremium data-badge-typepremium>Plagiarism Checker/option> option valuecitation_generator data-descriptionCitation Generator gratis untuk membuat kutipan dan daftar pustaka sesuai standar akademik internasional. data-badgeFree data-badge-typefree>Citation Generator/option> option valueparaphrase_tool data-descriptionParaphrase Tool gratis untuk membantu mengubah kalimat sambil mempertahankan makna asli. data-badgeFree data-badge-typefree>Paraphrase Tool/option> option valuesummary_generator data-descriptionSummary Generator gratis untuk membuat ringkasan otomatis dari teks panjang dan dokumen akademik. data-badgeFree data-badge-typefree>Summary Generator/option> /optgroup> optgroup label🎨 AI Media Generator> option valueimage_generator data-descriptionAI Image Generator premium untuk membuat gambar dan ilustrasi berkualitas tinggi dengan berbagai style. data-badgePremium data-badge-typepremium>AI Image Generator/option> option valuemusic_generator data-descriptionAI Music Generator premium untuk menciptakan musik dan audio dengan teknologi AI terdepan. data-badgePremium data-badge-typepremium>AI Music Generator/option> /optgroup> /select> !-- Hidden checkboxes for backend compatibility --> div styledisplay: none;> input typecheckbox idpagePuisiku namepages valuepuisiku> input typecheckbox idpageJurnalku namepages valuejurnalku> input typecheckbox idpageCerpenku namepages valuecerpenku> input typecheckbox idpageFiksiku namepages valuefiksiku> input typecheckbox idpageEsaiku namepages valueesaiku> input typecheckbox idpageCeritaku namepages valueceritaku> input typecheckbox idpageAdminGuru namepages valueadmin_guru> input typecheckbox idpageAdminBos namepages valueadmin_bos> input typecheckbox idpageAdminUmum namepages valueadmin_umum> input typecheckbox idpageTeacherPlanner namepages valueteacher_planner> input typecheckbox idpageEvaluasiku namepages valueevaluasiku> input typecheckbox idpageBukuAjar namepages valuebuku_ajar> input typecheckbox idpageSkripsiToBuku namepages valueskripsi_to_buku> input typecheckbox idpageSkripsiGen namepages valueskripsi_generator> input typecheckbox idpageRefSearch namepages valuereference_search> input typecheckbox idpageGrammar namepages valuegrammar_checker> input typecheckbox idpagePlagiarism namepages valueplagiarism_checker> input typecheckbox idpageCitation namepages valuecitation_generator> input typecheckbox idpageParaphrase namepages valueparaphrase_tool> input typecheckbox idpageSummary namepages valuesummary_generator> input typecheckbox idpageImageGen namepages valueimage_generator> input typecheckbox idpageMusicGen namepages valuemusic_generator> /div> /div> div idpageDescription classpage-description> i classfas fa-info-circle>/i> Pilih halaman untuk melihat deskripsi fitur /div> small stylecolor: #666; margin-top: 10px; display: block;> * Pilih satu halaman yang paling sesuai dengan kebutuhan Anda. Anda dapat mengajukan akses halaman tambahan setelah akun disetujui admin. /small> /div> button typesubmit classbtn btn-primary> i classfas fa-user-plus>/i> Daftar Sekarang /button> div classdivider>atau/div> button typebutton classbtn btn-secondary onclickswitchTab(login)> Sudah punya akun? Masuk /button> /form> /div> div classloading idloadingBox> div classspinner>/div> p>Memproses.../p> /div> /div> /div> script> // Check if already logged in window.onload function() { checkAuth(); }; function checkAuth() { const token localStorage.getItem(relimaToken); const userId localStorage.getItem(relimaUserId); if (token && userId) { // Verify token with server fetch(api_relima.php, { method: POST, headers: { Content-Type: application/json, Authorization: `Bearer ${token}` }, body: JSON.stringify({ action: verify_token, user_id: userId }) }) .then(response > response.json()) .then(data > { if (data.success) { // Redirect based on role if (data.role admin) { window.location.href admin_panel.html; } else { window.location.href user_dashboard.html; } } else { // Invalid token, clear storage localStorage.removeItem(relimaToken); localStorage.removeItem(relimaUserId); localStorage.removeItem(relimaUserRole); } }) .catch(error > { console.error(Error verifying token:, error); }); } } function switchTab(tab) { // Update tab buttons document.querySelectorAll(.tab-btn).forEach(btn > { btn.classList.remove(active); }); // Find the correct button to activate const buttons document.querySelectorAll(.tab-btn); if (tab login) { buttons0.classList.add(active); } else { buttons1.classList.add(active); } // Update tab content document.querySelectorAll(.tab-content).forEach(content > { content.classList.remove(active); }); if (tab login) { document.getElementById(loginTab).classList.add(active); } else { document.getElementById(registerTab).classList.add(active); } // Clear alerts hideAlert(); } function togglePassword(fieldId) { const field document.getElementById(fieldId); const button field.nextElementSibling; const icon button.querySelector(i); if (field.type password) { field.type text; icon.classList.remove(fa-eye); icon.classList.add(fa-eye-slash); } else { field.type password; icon.classList.remove(fa-eye-slash); icon.classList.add(fa-eye); } } function showPageDescription() { const select document.getElementById(pageSelect); const description document.getElementById(pageDescription); const selectedOption select.optionsselect.selectedIndex; // Clear all hidden checkboxes first document.querySelectorAll(inputnamepages).forEach(checkbox > { checkbox.checked false; }); if (selectedOption && selectedOption.value) { // Check the corresponding hidden checkbox for backend compatibility const targetCheckbox document.querySelector(`inputnamepagesvalue${selectedOption.value}`); if (targetCheckbox) { targetCheckbox.checked true; } const desc selectedOption.getAttribute(data-description); const badge selectedOption.getAttribute(data-badge); const badgeType selectedOption.getAttribute(data-badge-type); let badgeHtml ; if (badge) { badgeHtml `span classbadge badge-${badgeType}>${badge}/span>`; } description.innerHTML ` i classfas fa-info-circle>/i> strong>${selectedOption.text}/strong> ${badgeHtml} br>br>${desc} `; description.classList.add(show); } else { description.innerHTML i classfas fa-info-circle>/i> Pilih halaman untuk melihat deskripsi fitur; description.classList.remove(show); } } function showAlert(message, type) { const alertBox document.getElementById(alertBox); alertBox.className `alert alert-${type} show`; alertBox.innerHTML ` i classfas ${type success ? fa-check-circle : type error ? fa-exclamation-circle : fa-info-circle}>/i> ${message} `; alertBox.scrollIntoView({ behavior: smooth, block: nearest }); } function hideAlert() { const alertBox document.getElementById(alertBox); alertBox.className alert; } function showLoading() { document.getElementById(loadingBox).classList.add(active); } function hideLoading() { document.getElementById(loadingBox).classList.remove(active); } function handlePhotoUpload(event) { const file event.target.files0; if (file) { const label event.target.nextElementSibling; label.innerHTML `i classfas fa-check>/i> ${file.name}`; label.style.color #2E7D32; } } async function handleLogin(event) { event.preventDefault(); hideAlert(); showLoading(); const email document.getElementById(loginEmail).value; const password document.getElementById(loginPassword).value; // Get device info const deviceInfo { userAgent: navigator.userAgent, platform: navigator.platform, language: navigator.language, screenResolution: `${screen.width}x${screen.height}`, timezone: Intl.DateTimeFormat().resolvedOptions().timeZone }; try { const response await fetch(api_relima.php, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ action: login, email: email, password: password, device: deviceInfo }) }); const data await response.json(); hideLoading(); if (data.success) { // Store auth data localStorage.setItem(relimaToken, data.token); localStorage.setItem(relimaUserId, data.user_id); localStorage.setItem(relimaUserRole, data.role); localStorage.setItem(relimaUserName, data.name); showAlert(Login berhasil! Mengalihkan..., success); // Redirect based on role setTimeout(() > { if (data.role admin) { window.location.href admin_panel.html; } else { window.location.href user_dashboard.html; } }, 1500); } else { showAlert(data.message || Login gagal. Silakan coba lagi., error); } } catch (error) { hideLoading(); showAlert(Terjadi kesalahan. Silakan coba lagi., error); console.error(Login error:, error); } } async function handleRegister(event) { event.preventDefault(); hideAlert(); // Validate passwords match const password document.getElementById(regPassword).value; const confirmPassword document.getElementById(regConfirmPassword).value; if (password ! confirmPassword) { showAlert(Password tidak cocok!, error); return; } if (password.length 6) { showAlert(Password minimal 6 karakter!, error); return; } // Check if a page is selected const selectedPage document.getElementById(pageSelect).value; if (!selectedPage) { showAlert(Pilih satu halaman yang ingin diakses!, error); return; } showLoading(); // Prepare form data const formData new FormData(); formData.append(action, register); formData.append(full_name, document.getElementById(regFullName).value); formData.append(email, document.getElementById(regEmail).value); formData.append(phone, document.getElementById(regPhone).value); formData.append(password, password); formData.append(institution, document.getElementById(regInstitution).value || ); formData.append(address, document.getElementById(regAddress).value); formData.append(birth_place, document.getElementById(regBirthPlace).value || ); formData.append(birth_date, document.getElementById(regBirthDate).value || ); // Get selected pages from hidden checkboxes (maintains backend compatibility) const selectedPages Array.from(document.querySelectorAll(inputnamepages:checked)) .map(cb > cb.value); formData.append(pages, JSON.stringify(selectedPages)); // Add photo if uploaded const photoFile document.getElementById(regPhoto).files0; if (photoFile) { formData.append(photo, photoFile); } try { const response await fetch(api_relima.php, { method: POST, body: formData }); const data await response.json(); hideLoading(); if (data.success) { showAlert(Pendaftaran berhasil! Silakan tunggu persetujuan admin. Anda akan menerima notifikasi melalui email/WhatsApp., success); // Reset form document.getElementById(registerForm).reset(); document.getElementById(pageDescription).classList.remove(show); // Switch to login tab after 3 seconds setTimeout(() > { switchTab(login); }, 3000); } else { showAlert(data.message || Pendaftaran gagal. Silakan coba lagi., error); } } catch (error) { hideLoading(); showAlert(Terjadi kesalahan. Silakan coba lagi., error); console.error(Register error:, error); } } /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
]