Files
4WDCSA.co.za/register.php
twotalesanimation 110c853945 Refactor: Update all remaining pages to use unified header template
- Updated 39 pages from old header01.php and header02.php includes
- All pages now use single configurable header.php with $headerStyle variable
- Light style (default): Most pages (login, register, trips, courses, etc.)
- Dark style: Coming from header01 original usage

Pages updated:
  - Admin pages: admin_*.php (10 files)
  - Booking pages: bookings.php, campsite_booking.php, etc.
  - Content pages: blog.php, blog_details.php, contact.php, events.php, etc.
  - User pages: account_settings.php, membership*.php, register.php, etc.
  - Utility pages: 404.php, payment_confirmation.php, reset_password.php, etc.

All pages now maintain single header template source - easier to update navigation, styles, and functionality across the entire site.
2025-12-03 16:55:32 +02:00

174 lines
9.2 KiB
PHP

<?php
$headerStyle = 'light';
include_once('header.php') ?>
<style>
@media (min-width: 991px) {
.container {
max-width: 720px;
padding: 0 15px;
}
}
#passwordRequirements li {
transition: color 0.3s;
}
.text-success {
color: green !important;
}
.text-danger {
color: red !important;
}
</style>
<!-- Contact Form Area start -->
<section class="contact-form-area py-70 rel z-1">
<div class="container">
<div class="row align-items-center">
<div class="">
<div class="comment-form bgc-lighter z-1 rel mb-30 rmb-55">
<form id="registerForm" name="registerForm" action="register_user.php" method="post" data-aos="fade-left" data-aos-duration="1500" data-aos-offset="50">
<div class="section-title">
<h2>Register</h2>
</div>
<p>Register to create your 4WDCSA.co.za user profile.</p>
<div class="row mt-35">
<div class="col-md-6">
<div class="form-group">
<label for="first_name">First Name</label>
<input type="text" id="first_name" name="first_name" class="form-control" placeholder="John" value="" required data-error="Please enter your Name">
<div class="help-block with-errors"></div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="last_name">Last Name</label>
<input type="text" id="last_name" name="last_name" class="form-control" placeholder="Smith" value="" required data-error="Please enter your Last Name">
<div class="help-block with-errors"></div>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label for="phone_number">Phone Number</label>
<input type="text" id="phone_number" name="phone_number" class="form-control" placeholder="Phone" value="" required data-error="Please enter your Phone">
<div class="help-block with-errors"></div>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label for="email">Email Address</label>
<input type="email" id="email" name="email" class="form-control" placeholder="Enter email" value="" required data-error="Please enter your Email">
<div class="help-block with-errors"></div>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label for="password">Password</label>
<input type="password" id="password" name="password" class="form-control" placeholder="Enter password" value="" required data-error="Please enter your password">
<ul id="passwordRequirements" class="small mt-2" style="list-style: none; padding-left: 0;">
<li id="length" class="text-danger">✗ At least 8 characters</li>
<li id="uppercase" class="text-danger">✗ At least one uppercase letter</li>
<li id="lowercase" class="text-danger">✗ At least one lowercase letter</li>
<li id="number" class="text-danger">✗ At least one number</li>
<li id="special" class="text-danger">✗ At least one special character</li>
</ul>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label for="password_confirm">Confirm Password</label>
<input type="password" id="password_confirm" name="password_confirm" class="form-control" placeholder="Enter password" value="" required data-error="Please enter your password">
<div class="help-block with-errors"></div>
</div>
</div>
<div class="col-md-12">
<div class="form-group mb-0">
<input type="hidden" name="csrf_token" value="<?php echo generateCSRFToken(); ?>">
<button type="submit" class="theme-btn style-two" style="width:100%;">Register</button>
<div id="msgSubmit" class="hidden"></div>
</div>
<div id="responseMessage"></div> <!-- Message display area -->
</div>
<div class="pt-20">Already have an account? <a href="login.php"><b>Log in here.</b></a></div>
</div>
</form>
</div>
</div>
</div>
</div>
</section>
<!-- Contact Form Area end -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
function updatePasswordFeedback(password) {
const length = password.length >= 8;
const uppercase = /[A-Z]/.test(password);
const lowercase = /[a-z]/.test(password);
const number = /[0-9]/.test(password);
const special = /[\W_]/.test(password);
$('#length').toggleClass('text-success', length).toggleClass('text-danger', !length).html(`${length ? '✓' : '✗'} At least 8 characters`);
$('#uppercase').toggleClass('text-success', uppercase).toggleClass('text-danger', !uppercase).html(`${uppercase ? '✓' : '✗'} At least one uppercase letter`);
$('#lowercase').toggleClass('text-success', lowercase).toggleClass('text-danger', !lowercase).html(`${lowercase ? '✓' : '✗'} At least one lowercase letter`);
$('#number').toggleClass('text-success', number).toggleClass('text-danger', !number).html(`${number ? '✓' : '✗'} At least one number`);
$('#special').toggleClass('text-success', special).toggleClass('text-danger', !special).html(`${special ? '✓' : '✗'} At least one special character`);
}
$('#password').on('input', function() {
const password = $(this).val();
updatePasswordFeedback(password);
});
$(document).ready(function() {
$('#registerForm').on('submit', function(event) {
event.preventDefault(); // Prevent default form submission
const password = $('#password').val();
const confirmPassword = $('#password_confirm').val();
const passwordPattern = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/;
if (!passwordPattern.test(password)) {
$('#responseMessage').html(`
<div class="alert alert-danger">
Password must be at least 8 characters long, include uppercase and lowercase letters, a number, and a special character.
</div>
`);
return;
}
if (password !== confirmPassword) {
$('#responseMessage').html(`
<div class="alert alert-danger">Passwords do not match.</div>
`);
return;
}
// If validation passes, proceed with AJAX
$.ajax({
url: 'register_user.php',
type: 'POST',
data: $(this).serialize(),
dataType: 'json',
success: function(response) {
if (response.status === 'success') {
$('#responseMessage').html('<div class="alert alert-success">' + response.message + '</div>');
$('#registerForm')[0].reset(); // Optionally reset the form
} else {
$('#responseMessage').html('<div class="alert alert-danger">' + response.message + '</div>');
}
},
error: function() {
$('#responseMessage').html('<div class="alert alert-danger">An error occurred while processing your request.</div>');
}
});
});
});
</script>
<?php include_once("insta_footer.php"); ?>