G. Carpeta « srv »

Versión para imprimir.

A. srv / procesa.php

1<?php
2
3require_once __DIR__ . "/../lib/php/BAD_REQUEST.php";
4require_once __DIR__ . "/../lib/php/ejecutaServicio.php";
5require_once __DIR__ . "/../lib/php/recuperaTexto.php";
6require_once __DIR__ . "/../lib/php/validaToken.php";
7require_once __DIR__ . "/../lib/php/recuperaTexto.php";
8require_once __DIR__ . "/../lib/php/ProblemDetails.php";
9require_once __DIR__ . "/../lib/php/devuelveJson.php";
10
11ejecutaServicio(function () {
12
13 session_start();
14
15 $token = recuperaTexto("token");
16 if ($token === false) {
17 throw new ProblemDetails(
18 status: BAD_REQUEST,
19 title: "Falta el token.",
20 type: "/error/faltatoken.html",
21 );
22 }
23
24 validaToken("formulario", $token);
25
26 // Si el token se halló, precesa normalmente la forma.
27
28 $saludo = recuperaTexto("saludo");
29 $nombre = recuperaTexto("nombre");
30
31 if ($saludo === false)
32 throw new ProblemDetails(
33 status: BAD_REQUEST,
34 title: "Falta el saludo.",
35 type: "/error/faltasaludo.html",
36 detail: "La solicitud no tiene el valor de saludo.",
37 );
38
39 if ($saludo === "")
40 throw new ProblemDetails(
41 status: BAD_REQUEST,
42 title: "El saludo está en blanco.",
43 type: "/error/saludoenblanco.html",
44 detail: "Pon texto en el campo saludo.",
45 );
46
47 if ($nombre === false)
48 throw new ProblemDetails(
49 status: BAD_REQUEST,
50 title: "Falta el nombre.",
51 type: "/error/faltanombre.html",
52 detail: "La solicitud no tiene el valor de nombre.",
53 );
54
55 if ($nombre === "")
56 throw new ProblemDetails(
57 status: BAD_REQUEST,
58 title: "El nombre está en blanco.",
59 type: "/error/nombreenblanco.html",
60 detail: "Pon texto en el campo nombre.",
61 );
62
63 $resultado = "{$saludo} {$nombre}.";
64
65 devuelveJson($resultado);
66});
67

B. srv / registra.php

1<?php
2
3require_once __DIR__ . "/../lib/php/ejecutaServicio.php";
4require_once __DIR__ . "/../lib/php/creaToken.php";
5require_once __DIR__ . "/../lib/php/devuelveJson.php";
6
7ejecutaServicio(function () {
8 session_start();
9 // Crea un token para la página "formulario" que expira en 5 minutos.
10 devuelveJson(creaToken("formulario", 5));
11});
12