1
0
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.7 KiB

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$returnCode = "success";
if($_POST["botcheck"] != "isopod") {
$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"])) {
$returnCode = "invalidlink";
} else {
date_default_timezone_set("America/Edmonton");
$currentPost = array(
"date" => time(),
"name" => htmlentities($_POST["name"]),
"message" => htmlentities($_POST["message"]),
"found" => htmlentities($_POST["found"]),
"website" => $_POST["website"],
"cool" => $_POST["cool"],
"reply" => ""
);
$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);
}
}
}
header("Location: ./?return=$returnCode");
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Guestbook</title>
<link href="../style.css" rel="stylesheet" type="text/css" media="all">
<style type="text/css">
body {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
</style>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/seasonal.php'); ?>
</head>
<body>
<p>Your post has been submitted! It's weird that you're seeing this page though. Maybe your browser can't process location headers? At any rate, click <?php echo "<a href='./?return=$returnCode'>here</a>"; ?> to get where you're supposed to be right now.</p>
</body>
</html>