prepare("SELECT * FROM bookings WHERE booking_ref = ?"); $stmt->execute([$ref]); $booking = $stmt->fetch(); if (!$booking) { $error = 'Booking reference not found. Please check your confirmation email.'; } elseif ($booking['status'] === 'cancelled') { $error = 'This booking has been cancelled. Please contact us if you have questions.'; } elseif ($booking['waiver_signed']) { $signed = true; } } // Handle submission if ($_SERVER['REQUEST_METHOD'] === 'POST' && $booking && !$signed) { $sigName = trim(strip_tags($_POST['sig_name'] ?? '')); $sigData = $_POST['sig_data'] ?? ''; // base64 canvas PNG $checks = (array)($_POST['checks'] ?? []); $required = ['age','license','insurance','rules','damage','waiver']; $missing = array_diff($required, $checks); if (!$sigName) { $error = 'Please type your full name to sign.'; } elseif ($missing) { $error = 'Please check all required boxes before signing.'; } elseif (!$sigData || strpos($sigData, 'data:image/png;base64,') !== 0) { $error = 'Please draw your signature in the box above.'; } else { $ip = $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? ''; $ip = explode(',', $ip)[0]; db()->prepare( "UPDATE bookings SET waiver_signed=1, waiver_signed_at=NOW(), waiver_ip=?, waiver_name=?, waiver_sig=? WHERE booking_ref=?" )->execute([trim($ip), $sigName, $sigData, $ref]); $pkg = PACKAGES[$booking['package']] ?? ['label'=>$booking['package']]; $dateLabel = date('F j, Y', strtotime($booking['rental_date'])); $checkLabels = [ 'age' => 'Age & License: I am 25+ years old and hold a valid driver\'s license.', 'insurance' => 'Insurance: I will provide proof of valid personal auto insurance at pickup.', 'rules' => 'Vehicle Rules: I agree to operate safely, lawfully, and sober, and wear the helmet at all times.', 'damage' => 'Damage Responsibility: I am financially responsible for any damage or fines during my rental.', 'license' => 'License Verification: I consent to license verification at pickup.', 'waiver' => 'Assumption of Risk: I have read and agree to the Release of Liability terms.', ]; $checkRows = ''; foreach ($checkLabels as $val => $label) { $checked = in_array($val, $checks); $icon = $checked ? '✅' : '❌'; $checkRows .= "
Booking {$ref} — " . htmlspecialchars($booking['name']) . "
| Booking Ref | {$ref} |
| Customer | " . htmlspecialchars($booking['name']) . " <" . htmlspecialchars($booking['email']) . "> |
| Package | " . htmlspecialchars($pkg['label']) . " |
| Rental Date | {$dateLabel} |
| Signed Name | " . htmlspecialchars($sigName) . " |
| IP Address | " . htmlspecialchars($ip) . " |
| Timestamp | " . date('F j, Y g:i:s A') . " CT |
This Rental Agreement (“Agreement”) is entered into between Parker County Slingshot Rentals (“Company”) and the renter identified above (“Renter”). By signing below, Renter agrees to all terms stated herein.
Eligibility Requirements
Renter must be at least 25 years of age and hold a valid Class C driver’s license (or equivalent) issued by a U.S. state or territory. Renter must not have any DUI/DWI convictions within the past 5 years.
Insurance Requirement
Renter is required to carry and provide proof of valid personal auto insurance at the time of vehicle pickup. The Company maintains a fleet insurance policy covering the vehicle; however, Renter’s personal insurance is primary for liability arising from Renter’s operation of the vehicle. Renter accepts financial responsibility for any deductible, damages, or losses not covered by either policy.
Vehicle Use & Rules
Renter agrees to operate the Polaris Slingshot in a safe, lawful manner and specifically agrees to:
Damage & Security Deposit
A refundable security deposit is required at pickup. Renter is financially responsible for any damage to the vehicle, including but not limited to collision damage, tire damage, interior damage, and any fines or citations incurred during the rental period. The Company reserves the right to apply the security deposit toward any such costs.
Assumption of Risk & Release of Liability
Renter acknowledges that operating a Polaris Slingshot involves inherent risks including, but not limited to, physical injury or death. Renter voluntarily assumes all such risks and, to the fullest extent permitted by Texas law, releases and holds harmless Parker County Slingshot Rentals, its owners, employees, and agents from any and all claims, damages, or liability arising out of Renter’s use of the vehicle.
Cancellation Policy
Cancellations made more than 24 hours before the rental start time are fully refunded. Cancellations within 24 hours of the rental start time are subject to a 50% cancellation fee.
Signed as: " . htmlspecialchars($sigName) . " — " . date('F j, Y g:i A') . " CT
This electronic signature was captured via the ESIGN Act-compliant form at parkerslingshot.epictravelexpeditions.com/waiver.php
© " . date('Y') . " Parker County Slingshot Rentals — Weatherford, TX — This is an automated record for your files.
Hey " . htmlspecialchars($booking['name']) . ", your rental agreement for booking {$ref} is signed and on file. See you on {$dateLabel}!
Remember to bring:
Questions? Call or text (817) 555-0199.
Ride on,
The Parker County Slingshot Team
© " . date('Y') . " Parker County Slingshot Rentals — Weatherford, TX
Enter your booking reference from your confirmation email to access your rental agreement.
Your rental agreement for booking = htmlspecialchars($ref) ?> is signed and on file. We'll see you on = htmlspecialchars($dateLabel) ?>!
A confirmation was sent to = htmlspecialchars($booking['email']) ?>.
Remember to bring:
Please read and sign the agreement below for your upcoming rental.
This Rental Agreement ("Agreement") is entered into between Parker County Slingshot Rentals ("Company") and the renter identified above ("Renter"). By signing below, Renter agrees to all terms stated herein.
Renter must be at least 25 years of age and hold a valid Class C driver's license (or equivalent) issued by a U.S. state or territory. Renter must not have any DUI/DWI convictions within the past 5 years.
Renter is required to carry and provide proof of valid personal auto insurance at the time of vehicle pickup. The Company maintains a fleet insurance policy covering the vehicle; however, Renter's personal insurance is primary for liability arising from Renter's operation of the vehicle. Renter accepts financial responsibility for any deductible, damages, or losses not covered by either policy.
Renter agrees to operate the Polaris Slingshot in a safe, lawful manner and specifically agrees to:
A refundable security deposit is required at pickup. Renter is financially responsible for any damage to the vehicle, including but not limited to collision damage, tire damage, interior damage, and any fines or citations incurred during the rental period. The Company reserves the right to apply the security deposit toward any such costs.
Renter acknowledges that operating a Polaris Slingshot involves inherent risks including, but not limited to, physical injury or death. Renter voluntarily assumes all such risks and, to the fullest extent permitted by Texas law, releases and holds harmless Parker County Slingshot Rentals, its owners, employees, and agents from any and all claims, damages, or liability arising out of Renter's use of the vehicle.
Cancellations made more than 24 hours before the rental start time are fully refunded. Cancellations within 24 hours of the rental start time are subject to a 50% cancellation fee.