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'])); $adminHtml = "
" . htmlspecialchars($booking['name']) . " signed the rental waiver for booking {$ref}.
| Package | " . htmlspecialchars($pkg['label']) . " |
| Date | {$dateLabel} |
| Signed by | " . htmlspecialchars($sigName) . " |
| IP | " . htmlspecialchars($ip) . " |
| Timestamp | " . date('F j, Y g:i A') . " CT |
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.