Mini Shell
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="apple-touch-icon" sizes="76x76" href="assets/img/logo1.gif" />
<link rel="icon" type="image/png" href="icon1.ico" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title>ลงทะเบียนผู้ใช้งาน - โปรแกรมระบบตรวจสอบธุรกิจแปรรูปปุ๋ยผสม</title>
<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
<meta name="viewport" content="width=device-width" />
<link href="assets/css/bootstrap.min.css" rel="stylesheet" />
<link href="assets/css/material-dashboard.css" rel="stylesheet" />
<link href="assets/css/demo.css" rel="stylesheet" />
<link href="assets/css/font-awesome.css" rel="stylesheet" />
<link href="assets/css/google-roboto-300-700.css" rel="stylesheet" />
<link href="assets/css/fonts1.css" rel="stylesheet"/>
<link href="assets/smoke/css/smoke.min.css" rel="stylesheet"/>
<link href="assets/css/sweetalert.css" rel="stylesheet"/>
<link href="assets/css/all.min.css" rel="stylesheet" />
</head>
<body>
<nav class="navbar navbar-primary navbar-transparent navbar-absolute">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navigation-example-2">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">โปรแกรมระบบตรวจสอบธุรกิจแปรรูปปุ๋ยผสม</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-right">
<li>
<a href="login.php">
<i class="material-icons"><i class="fas fa-sign-in-alt"></i></i> เข้าสู่ระบบ
</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="wrapper wrapper-full-page">
<div class="full-page login-page" filter-color="black" data-image="assets/img/login1.jpg">
<div class="content">
<div class="container">
<div class="row">
<div class="col-md-6 col-sm-8 col-md-offset-3 col-sm-offset-2">
<div class="card">
<div class="card-header text-center" data-background-color="green">
<img class="mr-3 mt-3 rounded-circle" src="assets/img/logo1.png" style="width:60px;" >
<h4 class="card-title"> ลงทะเบียนผู้ใช้งาน</h4>
</div>
<div class="card-content">
<form id="registerForm">
<!-- ===== 1. ค้นหาและเลือกชื่อ ===== -->
<div class="form-group">
<label><strong>1. เลือกชื่อผู้ใช้ <span class="text-danger">*</span></strong></label>
<input type="text" id="searchName" class="form-control" placeholder="พิมพ์ชื่อ หรือ นามสกุล เพื่อค้นหา">
<ul id="searchResults" class="list-group mt-2"></ul>
<input type="hidden" id="selectedUserId">
</div>
<!-- ===== ข้อมูลผู้ใช้ที่เลือก ===== -->
<div class="form-group">
<label><strong>ชื่อ - นามสกุล:</strong></label>
<input type="text" id="selectedUserName" class="form-control" readonly style="background-color: #f5f5f5;">
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label><strong>ตำแหน่ง:</strong></label>
<input type="text" id="selectedUserPosition" class="form-control" readonly style="background-color: #f5f5f5;">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label><strong>หน่วยงาน:</strong></label>
<input type="text" id="selectedUserAgency" class="form-control" readonly style="background-color: #f5f5f5;">
</div>
</div>
</div>
<hr>
<!-- ===== 2. ชื่อผู้ใช้งาน ===== -->
<div class="form-group">
<label><strong>2. ชื่อผู้ใช้งาน <span class="text-danger">*</span></strong></label>
<input type="text" id="registerUsername" class="form-control" placeholder="กรุณากรอกชื่อผู้ใช้งาน">
<small id="usernameFeedback" class="form-text d-none"></small>
</div>
<!-- ===== 3. รหัสผ่าน ===== -->
<div class="form-group">
<label><strong>3. รหัสผ่าน <span class="text-danger">*</span></strong></label>
<input type="password" id="registerPassword" class="form-control" placeholder="กรุณากรอกรหัสผ่าน (อย่างน้อย 8 ตัวอักษร)">
<small id="passwordFeedback" class="form-text d-none"></small>
</div>
<!-- ===== 4. ยืนยันรหัสผ่าน ===== -->
<div class="form-group">
<label><strong>4. ยืนยันรหัสผ่าน <span class="text-danger">*</span></strong></label>
<input type="password" id="registerConfirmPassword" class="form-control" placeholder="พิมพ์รหัสผ่านอีกครั้งเพื่อยืนยัน">
<small id="confirmPasswordFeedback" class="form-text d-none"></small>
</div>
<div class="form-group mt-4">
<button type="submit" class="btn btn-success btn-block" id="btnRegisterSubmit">ลงทะเบียน</button>
</div>
<div class="form-group">
<a href="login.php" class="btn btn-secondary btn-block">ยกเลิก</a>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="spin"></div>
<footer class="footer">
<div class="container">
<nav class="pull-left">
<ul>
<li><a href="http://region8.cad.go.th/">เว็บไซต์สำนักงานตรวจบัญชีสหกรณ์ที่ 8</a></li>
</ul>
</nav>
<p class="copyright pull-right">
© <script>document.write(new Date().getFullYear())</script>
<a href="http://region8.cad.go.th/">กลุ่มเทคโนโลยีสารสนเทศ</a>, by Taveesak Tohlee.
</p>
</div>
</footer>
</div>
</div>
<script src="assets/js/jquery-3.1.1.min.js" type="text/javascript"></script>
<script>
// กำหนด base path สำหรับ AJAX requests
var BASE_PATH = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/') + 1);
</script>
<script src="assets/js/bootstrap.min.js" type="text/javascript"></script>
<script src="assets/js/material.min.js" type="text/javascript"></script>
<script src="assets/js/perfect-scrollbar.jquery.min.js" type="text/javascript"></script>
<script src="assets/js/jquery.validate.min.js"></script>
<script src="assets/js/moment.min.js"></script>
<script src="assets/js/chartist.min.js"></script>
<script src="assets/js/jquery.bootstrap-wizard.js"></script>
<script src="assets/js/bootstrap-notify.js"></script>
<script src="assets/js/jquery.sharrre.js"></script>
<script src="assets/js/bootstrap-datetimepicker.js"></script>
<script src="assets/js/jquery-jvectormap.js"></script>
<script src="assets/js/nouislider.min.js"></script>
<script src="assets/js/jquery.select-bootstrap.js"></script>
<script src="assets/js/jquery.datatables.js"></script>
<script src="assets/js/sweetalert.min.js"></script>
<script src="assets/js/jasny-bootstrap.min.js"></script>
<script src="assets/js/fullcalendar.min.js"></script>
<script src="assets/js/jquery.tagsinput.js"></script>
<script src="assets/js/material-dashboard.js"></script>
<script src="assets/js/demo.js"></script>
<script src="assets/smoke/js/smoke.min.js" ></script>
<script src="assets/js/spin.min.js" type="text/javascript"></script>
<script src="assets/js/all.min.js"></script>
<script type="text/javascript">
$().ready(function() {
demo.checkFullPageBackgroundImage();
});
</script>
<script>
$(document).ajaxStart(function () {
$("#spin").show();
}).ajaxStop(function () {
$("#spin").hide();
});
var BASE_PATH = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/') + 1);
$(document).ready(function(){
$("#searchName").focus();
var spinner = new Spinner().spin();
$("#spin").append(spinner.el);
$("#spin").hide();
// ======= 2. ค้นหารายชื่อจากตาราง user_confirm =======
$(document).on('keyup', '#searchName', function() {
var search = $(this).val();
if (search.length < 1) {
$('#searchResults').empty().html('<li class="list-group-item text-muted">กรุณาพิมพ์ชื่อเพื่อค้นหา</li>');
return;
}
$.ajax({
url: BASE_PATH + 'register_api.php',
type: 'POST',
data: {
action: 'get_users_confirm',
search: search
},
dataType: 'json',
success: function(response) {
if (response.status === 'success' && response.data && response.data.length > 0) {
var html = '';
response.data.forEach(function(user) {
html += '<li class="list-group-item cursor-pointer user-item" data-id="' + user.id + '">' +
'<strong>' + user.name + ' ' + user.last_name + '</strong><br>' +
'<small class="text-muted">' + user.position + '</small><br>' +
'<small class="text-muted">' + user.agency + '</small>' +
'</li>';
});
$('#searchResults').html(html);
} else {
$('#searchResults').html('<li class="list-group-item text-warning">ไม่พบข้อมูลรายชื่อ</li>');
}
},
error: function() {
$('#searchResults').html('<li class="list-group-item text-danger">เกิดข้อผิดพลาดในการค้นหา</li>');
}
});
});
// ======= 3. เลือกรายชื่อจากผลการค้นหา =======
$(document).on('click', '.user-item', function() {
var id = $(this).data('id');
var name = $(this).find('strong').text();
var position = $(this).find('small').eq(0).text();
var agency = $(this).find('small').eq(1).text();
$('#selectedUserId').val(id);
$('#selectedUserName').val(name);
$('#selectedUserPosition').val(position);
$('#selectedUserAgency').val(agency);
// ซ่อนผลการค้นหา
$('#searchResults').empty();
$('#searchName').val('');
// โฟกัสไปที่ username
$('#registerUsername').focus();
});
// ======= 4. ตรวจสอบ Username ว่างขณะขอบคุณ =======
$(document).on('blur', '#registerUsername', function() {
var username = $(this).val().trim();
if (username === '') {
$('#usernameFeedback').removeClass('d-none').text('กรุณากรอกชื่อผู้ใช้งาน');
return;
}
$.ajax({
url: BASE_PATH + 'register_api.php',
type: 'POST',
data: {
action: 'check_username',
username: username
},
dataType: 'json',
success: function(response) {
if (response.status === 'error') {
$('#usernameFeedback').removeClass('d-none').addClass('text-danger').text(response.message);
$('#registerUsername').addClass('is-invalid');
} else {
$('#usernameFeedback').addClass('d-none').removeClass('text-danger');
$('#registerUsername').removeClass('is-invalid');
}
}
});
});
// ======= 5. ตรวจสอบความยาวรหัสผ่าน =======
$(document).on('keyup', '#registerPassword', function() {
var password = $(this).val();
var feedback = $('#passwordFeedback');
if (password.length === 0) {
feedback.addClass('d-none');
} else if (password.length < 8) {
feedback.removeClass('d-none').addClass('text-danger').text('รหัสผ่านต้องมีอย่างน้อย 8 ตัวอักษร');
$(this).addClass('is-invalid');
} else {
feedback.removeClass('d-none').addClass('text-success').text('รหัสผ่านสามารถใช้ได้');
$(this).removeClass('is-invalid');
}
});
// ======= 6. ตรวจสอบการยืนยันรหัสผ่าน =======
$(document).on('keyup', '#registerConfirmPassword', function() {
var password = $('#registerPassword').val();
var confirmPassword = $(this).val();
var feedback = $('#confirmPasswordFeedback');
if (confirmPassword === '') {
feedback.addClass('d-none');
} else if (password !== confirmPassword) {
feedback.removeClass('d-none').addClass('text-danger').text('รหัสผ่านไม่ตรงกัน');
$(this).addClass('is-invalid');
} else {
feedback.removeClass('d-none').addClass('text-success').text('รหัสผ่านตรงกัน');
$(this).removeClass('is-invalid');
}
});
// ======= 7. ส่งฟอร์มลงทะเบียน =======
$(document).on('submit', '#registerForm', function(e) {
e.preventDefault();
var confirmId = $('#selectedUserId').val();
var username = $('#registerUsername').val().trim();
var password = $('#registerPassword').val();
var confirmPassword = $('#registerConfirmPassword').val();
// ===== ตรวจสอบ =====
if (!confirmId) {
swal('แจ้งเตือน!', 'กรุณาเลือกชื่อผู้ใช้ก่อนลงทะเบียน', 'warning');
return false;
}
if (!username) {
swal('แจ้งเตือน!', 'กรุณากรอกชื่อผู้ใช้งาน', 'warning');
return false;
}
if (password.length < 8) {
swal('แจ้งเตือน!', 'รหัสผ่านต้องมีอย่างน้อย 8 ตัวอักษร', 'warning');
return false;
}
if (password !== confirmPassword) {
swal('แจ้งเตือน!', 'รหัสผ่านและการยืนยันรหัสผ่านไม่ตรงกัน', 'warning');
return false;
}
// ===== ส่งข้อมูลไปลงทะเบียน =====
$.ajax({
url: BASE_PATH + 'register_api.php',
type: 'POST',
data: {
action: 'register',
confirm_id: confirmId,
username: username,
password: password,
confirm_password: confirmPassword
},
dataType: 'json',
timeout: 30000,
beforeSend: function() {
$('#btnRegisterSubmit').prop('disabled', true).text('กำลังลงทะเบียน...');
},
success: function(response) {
if (response.status === 'success') {
swal({
title: 'สำเร็จ!',
text: response.message,
type: 'success',
timer: 1500,
showConfirmButton: false
});
$('#btnRegisterSubmit').prop('disabled', false).text('ลงทะเบียน');
// กลับไปหน้า login
setTimeout(function() {
window.location.href = BASE_PATH + 'login.php';
}, 1500);
} else if (response.status === 'warning') {
$('#btnRegisterSubmit').prop('disabled', false).text('ลงทะเบียน');
swal('แจ้งเตือน', response.message, 'warning');
} else {
$('#btnRegisterSubmit').prop('disabled', false).text('ลงทะเบียน');
swal('เกิดข้อผิดพลาด!', response.message, 'error');
}
},
error: function(xhr, status, error) {
$('#btnRegisterSubmit').prop('disabled', false).text('ลงทะเบียน');
console.error('AJAX Error:', status, error);
swal('ระบบขัดข้อง!', 'เกิดข้อผิดพลาดในการเชื่อมต่อเซิร์ฟเวอร์', 'error');
},
complete: function() {
// ปิด spinner แน่นอน
$('#spin').hide();
}
});
return false;
});
});
</script>
</body>
</html>
Zerion Mini Shell 1.0