IFCD0210/Practicas/Practicas_PHP/ejercicios/envio_repaso_examen/Partes de codigo/codigo.php
2024-02-27 13:48:38 +01:00

141 lines
4.4 KiB
PHP

<?php
// Validar el método de solicitud HTTP
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Recopilar datos del formulario
$datosReserva = recopilarDatosReserva($_POST);
// Procesar la reserva
$resultadoProcesamiento = procesarReserva($datosReserva);
// Mostrar resultado al usuario
mostrarResultado($resultadoProcesamiento);
} else {
echo "No se han recibido datos del formulario";
}
// Función para recopilar datos del formulario
function recopilarDatosReserva($formulario)
{
$datos = [];
$campos = ['entrada', 'salida', 'habitacion', 'regimen', 'estancia', 'spa', 'guia', 'total', 'nombre', 'email', 'telefono', 'dni', 'noches', 'info'];
foreach ($campos as $campo) {
$datos[$campo] = $formulario[$campo] ?? '';
}
return $datos;
}
// Función para procesar la reserva
function procesarReserva($datosReserva)
{
// Variables para el resultado del procesamiento
$exito = true;
$mensaje = '';
// Obtener datos de reserva
$entrada = $datosReserva['entrada'];
$salida = $datosReserva['salida'];
$habitacion = $datosReserva['habitacion'];
$regimen = $datosReserva['regimen'];
$spa = $datosReserva['spa'];
$guia = $datosReserva['guia'];
$nombre = $datosReserva['nombre'];
$email = $datosReserva['email'];
$telefono = $datosReserva['telefono'];
$dni = $datosReserva['dni'];
$noches = $datosReserva['noches'];
$total = $datosReserva['total'];
// Generar identificador de reserva
$idReserva = time() . '_' . mt_rand(0000, 9999);
// Fecha de reserva
$fechaReserva = date("d-m-Y H:i:s");
// Estructurar ficha de reserva
$fichaReserva = "Id reserva: $idReserva \r\n";
$fichaReserva .= "Fecha de reserva: $fechaReserva \r\n";
$fichaReserva .= "Fecha de entrada: $entrada \r\n";
$fichaReserva .= "Fecha de salida: $salida \r\n";
$fichaReserva .= "Tipo de habitación: $habitacion \r\n";
$fichaReserva .= "Regimen de alojamiento: $regimen \r\n";
$fichaReserva .= "Días Spa: $spa \r\n";
$fichaReserva .= "Días Guia: $guia \r\n";
$fichaReserva .= "Duración estancia: $noches \r\n";
$fichaReserva .= "Coste Total: $total \r\n";
$fichaReserva .= "Nombre: $nombre \r\n";
$fichaReserva .= "Correo electrónico: $email \r\n";
$fichaReserva .= "Teléfono: $telefono \r\n";
$fichaReserva .= "DNI: $dni \r\n";
// Enviar correo electrónico con los detalles de la reserva
$destinatario = "appasin04@gmail.com";
$asunto = "Informacion de reserva - $idReserva";
$headers = 'Reply-To: appasin04@gmail.com' . "\r\n";
$headers .= 'Bcc: ' . $email . "\r\n";
if (!mail($destinatario, $asunto, $fichaReserva, $headers)) {
// Si falla el envío de correo, se marca como fallo
$exito = false;
$mensaje = "Error al enviar el correo electrónico.";
}
// Guardar la ficha de reserva en un archivo
$nombre_archivo = "reservas/" . $idReserva . ".txt";
if (!guardarFichaReserva($fichaReserva, $nombre_archivo)) {
// Si falla la escritura del archivo, se marca como fallo
$exito = false;
$mensaje = "Error al guardar la ficha de reserva.";
}
// Añadir al listado_reservas.txt una línea de reserva
$registroReserva = implode('/_/', [$idReserva, $nombre, $email, $telefono, $entrada, $salida, $fechaReserva, $noches]) . "\r\n";
$nombre_archivo = "listado_reservas.txt";
if (!guardaListaDatos($registroReserva, $nombre_archivo)) {
// Si falla la escritura del archivo, se marca como fallo
$exito = false;
$mensaje = "Error al guardar la lista de reservas.";
}
// Resultado del procesamiento
$resultado = [
'exito' => $exito,
'mensaje' => $mensaje
];
return $resultado;
}
// Función para guardar la ficha de reserva en un archivo
function guardarFichaReserva($fichaReserva, $nombre_archivo)
{
return file_put_contents($nombre_archivo, $fichaReserva) !== false;
}
// Función para añadir al listado_reservas.txt una línea de reserva
function guardaListaDatos($registroReserva, $nombre_archivo)
{
return file_put_contents($nombre_archivo, $registroReserva, FILE_APPEND | LOCK_EX) !== false;
}
// Función para mostrar el resultado al usuario
function mostrarResultado($resultado)
{
if ($resultado['exito']) {
echo "<p>{$resultado['mensaje']}</p>";
} else {
echo "<p>No se ha podido realizar la reserva correctamente.</p>";
}
}