123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- <?php
- $FILENAME = '../private/bookings.csv';
- // Success and error messages
- $responses = [
- 'bot' => ['danger' => 'bip, bap, booop'],
- 'required' => ['danger' => 'Todos los campos son requeridos'],
- 'email' => ['danger' => 'Email inválido'],
- 'ip_flood' => [
- 'danger' => 'Hay demasiada gente registrada desde esta IP, lo siento '.
- 'pero es suficiente. ¿Problemas? <a href="./contacto">contáctanos</a>'
- ],
- 'dupe_mail' => [
- 'danger' => 'Este correo ya está registrado. ¿Problemas? '.
- '<a href="./contacto">contáctanos</a>'
- ],
- 'success' => [
- 'success' => '<strong>¡Has reservado un cupo exitosamente!</strong>. '.
- 'Si por cualquier motivo no puedes asistir, recuerda anular tu '.
- 'reserva (al fondo de esta página) para liberar tu cupo. ¡Nos vemos!'
- ]
- ];
- if (file_exists($FILENAME)) {
- $fp = fopen($FILENAME, 'r+');
- fgetcsv($fp); // Jump over first line
- } else {
- $fp = fopen($FILENAME, 'w');
- fputcsv($fp, ['ip', 'name', 'email', 'mailing', 'reserves', 'aborts']);
- }
- /**
- * Validation */
- // Anti-spam
- if ($_POST['message'])
- $response = $responses['bot'];
- // Required fields
- foreach (['name', 'email', 'reserves'] as $field) {
- if (!isset($response) && empty($_POST[$field])) {
- $response = $responses['required'];
- break;
- }
- }
- // Valid email
- if (!isset($response) && !strpos($_POST['email'], '@'))
- $response = $responses['email'];
- if (!isset($response)) {
- $dupe_ips = 0;
- while (($line = fgetcsv($fp)) !== false) {
- // Anti-flood
- if ($line[0] === $_SERVER['REMOTE_ADDR'])
- $dupe_ips++;
-
- // No mail dupes
- if ($line[2] === strtolower($_POST['email']))
- $dupe_mail = true;
- };
- if ($dupe_ips > 2)
- $response = $responses['ip_flood'];
- else if (isset($dupe_mail))
- $response = $responses['dupe_mail'];
- }
- /**
- * Write file */
- // All good, let's write it
- if (!isset($response)) {
- fputcsv(
- $fp,
- [
- $_SERVER['REMOTE_ADDR'],
- $_POST['name'],
- strtolower($_POST['email']),
- (!empty($_POST['mailing']) ? 'y' : 'n'),
- implode(' ', $_POST['reserves']),
- 'n'
- ]
- );
- $response = $responses['success'];
- }
- fclose($fp);
- /**
- * Response */
- // If using AJAX return a direct JSON response, else save response in SESSION
- if (isset($_POST['fetch'])) {
- print json_encode($response);
- } else {
- session_start();
- $_SESSION['response'] = json_encode($response);
- header('Location: ./');
- }
|