aboutsummaryrefslogtreecommitdiff
path: root/guestbook/submit.php
diff options
context:
space:
mode:
authorHannah Isopod <me@bathynomus.xyz>2025-06-11 03:25:00 -0600
committerHannah Isopod <me@bathynomus.xyz>2025-06-11 03:25:00 -0600
commitb3bb0b898d3178963fefb9c0b16a00a76cf2a034 (patch)
treeeec6da7a21790183b15f31283fe3b8bcaabfaa4d /guestbook/submit.php
parent5023bdef46281034c0476bc4201342a0a4cc2ae7 (diff)
total guestbook overhaul + new blog post + etc
- Added /about/pronouns/ in leiu of something like a pronouns.cc profile - New blog post about my new and improved AI opinions - Moved Stop Using Chromium to an actual blog post page - Blog posts now have previous and next buttons - New /blog/ background - Moved status.cafe widget from /blog/ to landing page - Total overhaul of guestbook: - Merged guestbook and blog comment section code - Beefed up bot protection - Added a word filter - Added a property to entries to facilitate holding comments for review and approving or denying them manually (The interface for this is somewhere else) - IP address from which a post originates is now tracked in order to IP ban malicious actors - Various new buttons - Updated /greenhouse/ - The site is now a member of the No AI Webring - a couple minor CSS fixes
Diffstat (limited to 'guestbook/submit.php')
-rw-r--r--guestbook/submit.php81
1 files changed, 34 insertions, 47 deletions
diff --git a/guestbook/submit.php b/guestbook/submit.php
index 09d0404..7fab0d5 100644
--- a/guestbook/submit.php
+++ b/guestbook/submit.php
@@ -1,69 +1,56 @@
<?php
+ include($_SERVER['DOCUMENT_ROOT'] . '/common.php');
if ($_SERVER["REQUEST_METHOD"] == "POST") {
-
+
$returnCode = "success";
- if($_POST["botcheck"] != "isopod") {
+ if($_POST["botcheck"] != "isopod" or $_POST['msg']) {
$returnCode = "botcheckfailed";
} else if(!$_POST["name"]) {
$returnCode = "noname";
} else if(!$_POST["message"]) {
$returnCode = "nomessage";
- } else if($_POST["website"] and !preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", $_POST["website"])) {
- $returnCode = "invalidwebsite";
- } else if($_POST["cool"] and !preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", $_POST["cool"])) {
+ } else if(
+ $_POST["website"] and !preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", $_POST["website"])
+ or $_POST["cool"] and !preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", $_POST["cool"])
+ ) {
$returnCode = "invalidlink";
} else {
-
date_default_timezone_set("America/Edmonton");
+ $modstatus = $defaultmodstatus;
+ $bannedwords = json_decode(file_get_contents($datadir."bannedwords.json"));
+ $bwspotted = false;
+ foreach($bannedwords as $word) {
+ if(preg_grep($word, $_POST)) {
+ $modstatus = 0;
+ }
+ }
+ if($modstatus < 1) {
+ $returnCode = "review";
+ }
+
$currentPost = array(
+ "entry" => $_POST["entry"],
+ "sourceip" => $_SERVER['REMOTE_ADDR'],
"date" => time(),
- "name" => htmlentities($_POST["name"]),
- "message" => htmlentities($_POST["message"]),
- "found" => htmlentities($_POST["found"]),
+ "name" => $_POST["name"],
+ "message" => $_POST["message"],
+
+ "found" => $_POST["found"],
"website" => $_POST["website"],
"cool" => $_POST["cool"],
- "reply" => ""
+ "reply" => "",
+ "modstatus" => $modstatus
);
- $filename = "posts.json";
-
- $handle = @fopen($filename, 'r+');
-
- // create the file if needed
- if ($handle === null)
- {
- $handle = fopen($filename, 'w+');
- }
-
- if ($handle)
- {
- // seek to the end
- fseek($handle, 0, SEEK_END);
-
- // are we at the end of is the file empty
- if (ftell($handle) > 0)
- {
- // move back a byte
- fseek($handle, -2, SEEK_END);
-
- // add the trailing comma
- fwrite($handle, ",\n", 2);
-
- // add the new json string
- fwrite($handle, json_encode($currentPost) . "]\n");
- }
- else
- {
- // write the first event inside an array
- fwrite($handle, json_encode(array($currentPost)));
- }
-
- // close the handle on the file
- fclose($handle);
- }
+ $filename = $datadir."posts.json";
+ $extantPosts = json_decode(file_get_contents($filename));
+ array_push($extantPosts, $currentPost);
+ file_put_contents($filename, json_encode($extantPosts, JSON_PRETTY_PRINT));
+
}
}
- header("Location: ./?return=$returnCode");
+ $referrer = preg_replace("/\?.*/", "", $_SERVER['HTTP_REFERER']);
+ header("Location: $referrer?return=$returnCode");
?>
<!DOCTYPE html>
<html lang="en">