Rilato Page Editor

$37.00 Versión 1.1 · PHP · sin base de datos

Añades una clave a la dirección, entras, y la página se vuelve editable donde esta. Haces clic en un párrafo, escribes, pulsas Guardar, y el archivo del disco se reescribe. Sin base de datos, sin caché, sin CMS.

https://tusitio.com/sobre-mi.php?mi_clave=<secreto>

Sin la clave correcta la página se ve exactamente como siempre: sin sesión, sin cookie, sin formulario de acceso, sin ninguna pista de que esto existe.

Corregir una errata no debería exigir FTP

Un sitio hecho a mano es rápido, barato de alojar y no se rompe. El coste aparece cuando cambia el número de teléfono. Abrir el cliente FTP, buscar el archivo, descargarlo, encontrar la línea en el editor, cambiarla, subirla, recargar y cruzar los dedos. Cinco minutos de trasteo para once caracteres, y eso si estas en la máquina que tiene el editor y las credenciales guardadas.

La respuesta habitual es ponerle un CMS. Y ahora tienes una base de datos, un acceso, una capa de plantillas, un ecosistema de extensiones y una obligación de seguridad mensual, todo para que alguien pueda cambiar una frase. La cura pesa más que la enfermedad.

Quédate con los archivos planos.
Solo haz que las palabras sean pulsables.

Qué hace

Marcas las partes de la página que quieres poder editar poniendo un atributo en un elemento que casi seguro ya tienes:

<section class="intro" data-bhe="intro"> <h1>Comida peruana en Katy</h1> <p>Ceviche, lomo saltado, anticuchos.</p> </section>

Ese es todo el cambio de marcado. El nombre solo tiene que ser único dentro del archivo. Si el contenido vive en realidad dentro de un include, lo dices y la edición se escribe donde de verdad esta:

<nav data-bhe="nav" data-bhe-file="inc/header.php">

Después añades una línea como lo primero de cada página, encima de todo el HTML:

<?php require __DIR__ . '/editor/edit-mode.php'; ?>

Cómo se usa

Las zonas editables salen con un borde punteado. Haces clic dentro y escribes; el borde se pone ámbar donde hay cambios sin guardar. La barra de herramientas va abajo — negrita, cursiva, enlace, quitar enlace, párrafo, H2, H3, lista con viñetas, lista numerada, limpiar formato, deshacer. Ctrl+S guarda, y el botón de Guardar te dice cuántas zonas quedan pendientes.

  • Pegar es siempre texto plano. Pegas desde Word o desde otra web y recibes las palabras, no las fuentes, los spans y los colores que suelen venir con ellas.
  • Pulsar un enlace no te saca del modo edición, así que puedes recorrer el sitio entero corrigiendo textos.
  • Fuente abre el archivo completo en un editor de código con vista previa al lado, para cuando hay que cambiar la estructura y no las palabras.
  • Cerrar sale del editor pero te deja dentro. Salir termina la sesión en ese dispositivo, y te avisa antes si hay zonas sin guardar.

Qué pasa cuando pulsas Guardar

Esta es la parte que decide si una herramienta así es segura en un sitio en producción, así que va la secuencia entera:

  1. Al HTML editado se le quita todo lo ejecutable: <?, <script>, <style>, manejadores on*, direcciones javascript:. Ni siquiera una sesión robada puede plantar código en tus páginas por esta vía.
  2. La zona se localiza en el archivo fuente y solo se reemplazan los bytes que hay entre sus etiquetas. Cada bloque PHP, include y bucle que quede fuera se conserva byte a byte.
  3. El resultado se vuelve a analizar como PHP. Si no compilara, el guardado se rechaza en vez de dejarte el sitio en blanco.
  4. El archivo anterior se copia a una carpeta de copias con su fecha. Se guardan las veinte últimas.
  5. El archivo nuevo se escribe en un temporal y se renombra a su sitio, así que a ningún visitante le llega una página a medio escribir.

El contenido se devuelve al archivo con la sangría de un HTML escrito a mano — títulos y párrafos en una línea, contenedores sangrados — así que el archivo sigue leyéndose bien en tu editor.

Una regla que recordar: deja el PHP fuera de las zonas editables. El editor devuelve el HTML ya generado de una zona, así que si dentro hubiera un foreach, al guardar se sustituiría el bucle por su propia salida. Una zona con PHP dentro se rechaza con un mensaje claro antes de escribir nada, pero es más fácil poner el PHP alrededor de la zona desde el principio.

Seguridad, con franqueza

Dos secretos controlan el contenido de tu sitio, así que conviene hablar claro de ellos.

  • La clave de la URL es una contraseña. Va al historial del navegador, a los registros del servidor y a la cabecera Referer cuando pulsas un enlace externo. Cambiala si se filtra.
  • Solo HTTPS, obligatorio por defecto. Por HTTP plano la contraseña y la cookie de sesión se leen en el cable.
  • Las sesiones son Secure, HttpOnly, SameSite=Strict, atadas a tu IP y a tu navegador, con caducidad de 30 minutos de inactividad y token CSRF en cada escritura.
  • Cinco contraseñas fallidas bloquean esa dirección quince minutos.
  • Las escrituras quedan encerradas en tu raíz web por una comprobación con realpath() y una lista de extensiones permitidas. ../../editor-config.php se rechaza, y el editor se niega a abrir sus propios archivos y su configuración.
  • El archivo de configuración vive encima de la raíz web, donde ninguna dirección llega.

Si solo editas desde casa o desde la oficina, pon además Require ip <tu dirección> en la carpeta del editor. Es barato y le cierra la puerta a todos los demás.

Probado

El paquete trae 29 comprobaciones sobre la lógica de zonas, que puedes ejecutar en tu propio servidor para confirmar que ahí se comporta igual que aquí. Se probo de punta a punta en PHP 8.3: entrada, guardado de dos zonas en dos archivos, estructura PHP conservada, salida destruyendo la sesión de verdad (una cookie reenviada después se rechaza), y rechazo de recorrido de rutas, sesión ausente, CSRF invalido e intentos de guardar PHP o <script> dentro de una página.

Requisitos

  • PHP 8.1 o posterior. Se probo en 8.3.
  • Sin base de datos. Nada que instalar, nada que respaldar.
  • HTTPS, y una carpeta por encima de tu raíz web donde puedas escribir un archivo de configuración.
  • Páginas .php en vez de .html, para que la línea del require pueda ejecutarse.

Qué cubre el precio

Veintisiete dolares son más o menos lo que cuesta una visita de alguien a quien si no tendrias que llamar para cambiar un número de teléfono. A partir de ahí el sitio es tuyo para editarlo, desde cualquier máquina con navegador y por cualquiera a quien le confies la clave.

Lo barato de una herramienta así es escribirla. Lo caro es todo lo de las dos secciones de arriba: reemplazar solo los bytes que hay entre las etiquetas de una zona para que tu PHP sobreviva, volver a analizar el resultado antes de escribirlo, guardar copias con fecha, renombrar el archivo nuevo a su sitio para que nunca se sirva una página a medias, y negarse a guardar nada ejecutable incluso a una sesión que ya entro. Ese trabajo es lo que separa a un editor que puedes dejar en un sitio en producción de uno que acaba comiendose una página.

$37.00

Un solo pago. Esta versión y todas sus actualizaciones son tuyas, en todos tus servidores.

Pedir este script

Este todavía lo estamos dando de alta en la tienda, así que por ahora el pedido va por la página de contacto. Escríbenos y te mandamos cómo pagar y la descarga el mismo día.

Versión 1.1 · PHP · Licencia y devoluciones