Files
4WDCSA.co.za/membership_application.php
twotalesanimation 3247d15ce7 Task 9: Add CSRF tokens to form templates and backend processors
Updated forms with hidden CSRF token fields:
- comment_box.php - Comment form
- course_details.php - Course booking form
- campsites.php - Campsite addition modal form
- bar_tabs.php - Bar tab creation modal form
- membership_application.php - Membership application form

Updated backend processors with CSRF validation:
- create_bar_tab.php - Bar tab AJAX processor
- add_campsite.php - Campsite form processor
- submit_order.php - Order submission processor

All forms now require validated CSRF tokens before processing, preventing cross-site request forgery attacks.
2025-12-03 11:47:26 +02:00

304 lines
17 KiB
PHP

<?php include_once('header02.php');
checkUserSession();
// Assuming you have the user ID stored in the session
if (isset($_SESSION['user_id'])) {
$user_id = $_SESSION['user_id'];
}else{
header('Location: login.php');
exit(); // Stop further script execution
}
checkMembershipApplication($user_id);
// Fetch user data from the database
$sql = "SELECT * FROM users WHERE user_id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $user_id);
$stmt->execute();
$result = $stmt->get_result();
$user = $result->fetch_assoc();
?>
<?php
$bannerFolder = 'assets/images/banners/';
$bannerImages = glob($bannerFolder . '*.{jpg,jpeg,png,webp}', GLOB_BRACE);
$randomBanner = 'assets/images/base4/camping.jpg'; // default fallback
if (!empty($bannerImages)) {
$randomBanner = $bannerImages[array_rand($bannerImages)];
}
?>
<section class="page-banner-area pt-50 pb-35 rel z-1 bgs-cover" style="background-image: url('<?php echo $randomBanner; ?>');">
<div class="banner-overlay"></div>
<div class="container">
<div class="banner-inner text-white">
<h2 class="page-title mb-10" data-aos="fade-left" data-aos-duration="1500" data-aos-offset="50">Application</h2>
<nav aria-label="breadcrumb">
<ol class="breadcrumb justify-content-center mb-20" data-aos="fade-right" data-aos-delay="200" data-aos-duration="1500" data-aos-offset="50">
<li class="breadcrumb-item"><a href="index.php">Home</a></li>
<li class="breadcrumb-item ">Membership</li>
<li class="breadcrumb-item active">Application</li>
<li class="breadcrumb-item ">Indemnity</li>
<li class="breadcrumb-item ">Payment</li>
</ol>
</nav>
</div>
</div>
</section>
<!-- Page Banner End -->
<section class="contact-form-area py-70 rel z-1">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-12">
<div class="comment-form bgc-lighter z-1 rel mb-30 rmb-55">
<form id="registerForm" name="registerForm" action="process_application.php" method="post" data-aos="fade-left" data-aos-duration="1500" data-aos-offset="50">
<input type="hidden" name="csrf_token" value="<?php echo generateCSRFToken(); ?>">
<div class="section-title">
<div id="responseMessage"></div> <!-- Message display area -->
</div>
<!-- Personal Details Section -->
<h3>Main Member</h3>
<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="<?php echo $user['first_name']; ?>" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="last_name">Surname*</label>
<input type="text" id="last_name" name="last_name" class="form-control" placeholder="Smith" value="<?php echo $user['last_name']; ?>" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="id_number">ID Number / Passport Number*</label>
<input type="text" id="id_number" name="id_number" class="form-control" placeholder="1234567890" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="dob">Date of Birth*</label>
<input type="date" id="dob" name="dob" class="form-control" required>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="occupation">Occupation*</label>
<input type="text" id="occupation" name="occupation" class="form-control" placeholder="Occupation" required>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="phone_numbers">Cell Phone*</label>
<input type="text" id="tel_cell" name="tel_cell" class="form-control" placeholder="Cell Phone" value="<?php echo $user['phone_number']; ?>" required>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="email">Email Address*</label>
<input type="email" id="email" name="email" class="form-control" placeholder="Enter email" value="<?php echo $user['email']; ?>" required>
</div>
</div>
</div>
<!-- Spouse / Partner Details Section -->
<h3>Spouse / Life Partner / Other Details</h3>
<div class="row mt-35">
<div class="col-md-6">
<div class="form-group">
<label for="spouse_first_name">First Name</label>
<input type="text" id="spouse_first_name" name="spouse_first_name" class="form-control" placeholder="Jane">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="spouse_last_name">Surname</label>
<input type="text" id="spouse_last_name" name="spouse_last_name" class="form-control" placeholder="Smith">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="spouse_id_number">ID Number / Passport Number</label>
<input type="text" id="spouse_id_number" name="spouse_id_number" class="form-control" placeholder="1234567890">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="spouse_dob">Date of Birth</label>
<input type="date" id="spouse_dob" name="spouse_dob" class="form-control">
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="spouse_occupation">Occupation</label>
<input type="text" id="spouse_occupation" name="spouse_occupation" class="form-control" placeholder="Occupation">
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="spouse_phone_numbers">Cell Phone</label>
<input type="text" id="spouse_tel_cell" name="spouse_tel_cell" class="form-control" placeholder="Cell Phone">
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="spouse_email">Email Address</label>
<input type="email" id="spouse_email" name="spouse_email" class="form-control" placeholder="Enter email">
</div>
</div>
</div>
<!-- Children Section -->
<h3>Children's Names</h3>
<div class="row mt-35">
<div class="col-md-6">
<div class="form-group">
<label for="child_name1">Child 1 Name</label>
<input type="text" id="child_name1" name="child_name1" class="form-control" placeholder="Child 1 Name">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="child_dob1">Child 1 DOB</label>
<input type="date" id="child_dob1" name="child_dob1" class="form-control">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="child_name2">Child 2 Name</label>
<input type="text" id="child_name2" name="child_name2" class="form-control" placeholder="Child 2 Name">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="child_dob2">Child 2 DOB</label>
<input type="date" id="child_dob2" name="child_dob2" class="form-control">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="child_name3">Child 3 Name</label>
<input type="text" id="child_name3" name="child_name3" class="form-control" placeholder="Child 3 Name">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="child_dob3">Child 3 DOB</label>
<input type="date" id="child_dob3" name="child_dob3" class="form-control">
</div>
</div>
<!-- Repeat for other children if needed -->
</div>
<!-- Address Section -->
<h3>Address</h3>
<div class="row mt-35">
<div class="col-md-6">
<div class="form-group">
<label for="physical_address">Physical Address</label>
<textarea id="physical_address" name="physical_address" class="form-control" placeholder="Enter physical address"></textarea>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="postal_address">Postal Address</label>
<textarea id="postal_address" name="postal_address" class="form-control" placeholder="Enter postal address"></textarea>
</div>
</div>
</div>
<!-- Interests Section -->
<h3>Interests and Hobbies</h3>
<div class="row mt-35">
<div class="col-md-12">
<div class="form-group">
<textarea id="interests_hobbies" name="interests_hobbies" class="form-control" placeholder="Enter interests and hobbies"></textarea>
</div>
</div>
</div>
<!-- Vehicle Section -->
<h3>Primary Vehicle</h3>
<div class="row mt-35">
<div class="col-md-3">
<div class="form-group">
<label for="vehicle_make">Make</label>
<input type="text" id="vehicle_make" name="vehicle_make" class="form-control" placeholder="Vehicle Make">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label for="vehicle_model">Model</label>
<input type="text" id="vehicle_model" name="vehicle_model" class="form-control" placeholder="Vehicle Model">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label for="vehicle_year">Year</label>
<input type="text" id="vehicle_year" name="vehicle_year" class="form-control" placeholder="Vehicle Year">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label for="vehicle_registration">Registration</label>
<input type="text" id="vehicle_registration" name="vehicle_registration" class="form-control" placeholder="Vehicle Registration">
</div>
</div>
</div>
<h3>Secondary Vehicle</h3>
<div class="row mt-35">
<div class="col-md-3">
<div class="form-group">
<label for="secondary_vehicle_make">Make</label>
<input type="text" id="secondary_vehicle_make" name="secondary_vehicle_make" class="form-control" placeholder="Vehicle Make">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label for="secondary_vehicle_model">Model</label>
<input type="text" id="secondary_vehicle_model" name="secondary_vehicle_model" class="form-control" placeholder="Vehicle Model">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label for="secondary_vehicle_year">Year</label>
<input type="text" id="secondary_vehicle_year" name="secondary_vehicle_year" class="form-control" placeholder="Vehicle Year">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label for="secondary_vehicle_registration">Registration</label>
<input type="text" id="secondary_vehicle_registration" name="secondary_vehicle_registration" class="form-control" placeholder="Vehicle Registration">
</div>
</div>
</div>
</div>
<!-- Submit Section -->
<div class="col-md-12">
<div class="form-group mb-0">
<button type="submit" class="theme-btn style-two" style="width:100%;">Next</button>
<div id="msgSubmit" class="hidden"></div>
</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>
<?php include_once("insta_footer.php"); ?>