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.
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:
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:
Then add one line as the very first thing in each page, above all HTML:
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:
- 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. - 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.
- The result is re-parsed as PHP. If it would not compile, the save is refused rather than white-screening your site.
- The old file is copied to a backup directory with a timestamp. The last twenty are kept.
- 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.
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
Refererheader 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.phpis 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
.phprather 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 scriptThis 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