Rilato Page Editor

$37.00 Version 1.1 · PHP · no database

Add a key to the URL, sign in, and the page becomes editable where it stands. Click into a paragraph, type, press Save, and the file on disk is rewritten. No database, no cache, no CMS.

https://yoursite.com/about.php?my_key=<secret>

Without the correct key the page renders exactly as it always did: no session, no cookie, no login form, no hint that any of this exists.

Fixing a typo should not require FTP

A hand-built site is fast, cheap to host and nothing breaks it. The cost shows up when the phone number changes. Open the FTP client, find the file, download it, find the line in an editor, change it, upload it, reload and hope. Five minutes of fiddling for eleven characters, and that is if you are at the machine with the editor and the saved credentials.

The usual answer is to put a CMS on it. Now you have a database, a login, a theme layer, a plugin ecosystem and a monthly security obligation — all so somebody can change a sentence. The cure is heavier than the disease.

Keep the flat files.
Just make the words clickable.

What it does

You mark the parts of a page you want to be editable by putting one attribute on an element you almost certainly already have:

<section class="intro" data-bhe="intro"> <h1>Peruvian food in Katy</h1> <p>Ceviche, lomo saltado, anticuchos.</p> </section>

That is the whole markup change. The name only has to be unique within the file. If the content actually lives in an include, say so and the edit is written where it really belongs:

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

Then add one line as the very first thing in each page, above all HTML:

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

Using it

Editable areas get a dashed outline. Click in and type; the outline turns amber where you have unsaved changes. The toolbar sits at the bottom — bold, italic, link, unlink, paragraph, H2, H3, bullet list, numbered list, clear formatting, undo. Ctrl+S saves, and the Save button shows how many regions are pending.

  • Pasting is always plain text. Paste from Word or another site and you get the words, not the fonts, spans and inline colours that usually come with them.
  • Clicking a link keeps you in edit mode, so you can walk the whole site fixing copy as you go.
  • Source opens the entire file in a code editor with a live preview beside it, for when you need to change structure rather than words.
  • Close leaves the editor but keeps you signed in. Sign out ends the session on that device — and warns you first if regions are unsaved.

What happens when you press Save

This is the part that decides whether a tool like this is safe to put on a live site, so here is the whole sequence:

  1. The edited HTML is stripped of anything executable — <?, <script>, <style>, on* handlers, javascript: URLs. Even a stolen session cannot plant code in your pages this way.
  2. The region is located in the source file and only the bytes between its tags are replaced. Every PHP block, include and loop outside it is untouched, byte for byte.
  3. The result is re-parsed as PHP. If it would not compile, the save is refused rather than white-screening your site.
  4. The old file is copied to a backup directory with a timestamp. The last twenty are kept.
  5. The new file is written to a temporary file and renamed into place, so a half-written page is never served to a visitor.

Content is written back indented like hand-written HTML — headings and paragraphs on one line, containers indented — so the file still reads well in your editor afterwards.

One rule to remember: keep PHP outside the editable regions. The editor sends back the rendered HTML of a region, so if a region contained a foreach loop, saving would replace the loop with its own output. A region containing PHP is refused with a clear message before anything is written — but it is easier to put the PHP around the region in the first place.

Security, honestly

Two secrets control your site's content, so it is worth being blunt about them.

  • The URL key is a password. It goes into browser history, access logs and the Referer header on outbound clicks. Rotate it if it leaks.
  • HTTPS only, enforced by default. Over plain HTTP the password and session cookie are readable on the wire.
  • Sessions are Secure, HttpOnly, SameSite=Strict, bound to your IP and user agent, with a 30-minute idle timeout and a CSRF token required on every write.
  • Five failed passwords lock that address out for fifteen minutes.
  • Writes are confined to your web root by a realpath() check and an extension allow-list. ../../editor-config.php is rejected, and the editor refuses to open its own files or its config.
  • The config file itself lives above the web root, where no URL reaches it.

If you only ever edit from home or the office, put Require ip <your address> on the editor directory as well. Cheap, and it closes the door on everybody else.

Tested

The package ships with 29 checks on the region logic, which you can run on your own host to confirm it behaves there the way it does here. It was tested end to end on PHP 8.3: login, saving two regions across two files, PHP structure preserved, logout genuinely destroying the session so a replayed cookie is rejected afterwards, and refusal of path traversal, missing session, bad CSRF, and attempts to save PHP or <script> into a page.

System requirements

  • PHP 8.1 or newer. PHP 8.3 is what it was tested on.
  • No database. Nothing to install, nothing to back up.
  • HTTPS, and a directory above your web root you can write a config file into.
  • Pages that are .php rather than .html, so the one require line can run.

What the price covers

Twenty-seven dollars is about one visit from somebody you would otherwise call to change a phone number. After that the site is yours to edit, by anybody you trust with the key, from any machine with a browser.

The cheap part of a tool like this is the typing. The expensive part is everything in the two sections above — replacing only the bytes between a region's tags so your PHP survives, re-parsing the result before it is written, keeping timestamped backups, renaming the new file into place so a half-written page is never served, and refusing to save anything executable even to a session that has already logged in. That work is what separates an editor you can leave on a live site from one that eventually eats a page.

$37.00

One payment. You own this version and every update to it, on as many of your own servers as you like.

Order this script

This one is still being listed in our shop, so for the moment the order goes through the contact page. Write and you get payment instructions and the download the same day.

Version 1.1 · PHP · Licence and refunds