From caccd81c3eb7954662d20cab10cc3afeeabca615 Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Sat, 2 Dec 2023 11:23:08 -0600 Subject: initial commit --- blog/2021-04-23-php-comment-system.org | 262 +++++++++++++++++++++++++++++++++ 1 file changed, 262 insertions(+) create mode 100644 blog/2021-04-23-php-comment-system.org (limited to 'blog/2021-04-23-php-comment-system.org') diff --git a/blog/2021-04-23-php-comment-system.org b/blog/2021-04-23-php-comment-system.org new file mode 100644 index 0000000..38132fd --- /dev/null +++ b/blog/2021-04-23-php-comment-system.org @@ -0,0 +1,262 @@ ++++ +date = 2021-04-23 +title = "Roll Your Own Static Commenting System in PHP" +description = "Learn how to skip the tedium of finding the proper commenting system by simply rolling your own in PHP." +draft = false ++++ + +## The Terrible-ness of Commenting Systems + +The current state of affairs regarding interactive comment systems is, well, +terrible. It is especially awful if you're a privacy conscious person who does +not generally load third-party scripts or frames on the websites you visit. + +Even further, many comment systems are charging exorbitant fees for something +that should be standard. + +Of course, there are some really terrible options: + +- Facebook Comments +- Discourse + +There are some options that are better but still use too many scripts, frames, +or social integrations on your web page that could impact some users: + +- Disqus +- Isso +- Remark42 + +Lastly, I looked into a few unique ways of generating blog comments, such as +using Twitter threads or GitHub issues to automatically post issues. However, +these both rely on external third-party sites that I don't currently use. + +## Stay Static with Server-Side Comments + +The main issue for my personal use-case is that my blog is completely, 100% +static. I use PHP on the back-end but website visitors only see HTML and a +single CSS file. No external javascript and no embedded frames. + +So, how do we keep a site static and still allow users to interact with blog +posts? The key actually pretty simple - I'm already using PHP, so why not rely +on the classic HTML `
` and a PHP script to save the comments somewhere? As +it turns out, this was a perfect solution for me. + +The second issue for my personal use-case is that I am trying to keep the +contents of my website accessible over time, as described by @brandur, in his +post entitled +[Blog with Markdown + Git, and degrade gracefully through time](https://brandur.org/fragments/graceful-degradation-time) +. + +This means I cannot rely on a database for comments, since I do not rely on a +database for any other part of my websites. + +I blog in plain Markdown files, commit all articles to Git, and ensure that +future readers will be able to see the source data long after I'm gone, or the +website has gone offline. However, I still haven't committed any images served +on my blog to Git, as I'm not entirely sold on Git LFS yet - for now, images can +be found at [img.0x4b1d.org](https://img.0x4b1d.org). + +Saving my comments back to the Git repository ensures that another aspect of my +site will degrade gracefully. + +## Create a Comment Form + +Okay, let's get started. The first step is to create an HTML form that users can +see and utilize to submit comments. This is fairly easy and can be changed +depending on your personal preferences. + +Take a look at the code block below for the form I currently use. Note that +`` is replaced automatically in PHP with the current post's URL, so +that my PHP script used later will know which blog post the comment is related +to. + +The form contains the following structure: + +1. `` - This is the form and will determine which PHP script to send the + comment to. +2. `