my-homelab-configs/apps/website/save_idea.php

44 lines
1.1 KiB
PHP

<?php
require_once __DIR__ . '/ideas_helper.php';
function idea_redirect(string $lang, string $status): never {
$lang = preg_replace('/[^a-z]/', '', strtolower($lang));
if ($lang === '') {
$lang = 'en';
}
header('Location: blog.php?lang=' . rawurlencode($lang) . '&idea=' . rawurlencode($status) . '&saved=' . time() . '#visitor-ideas', true, 303);
exit;
}
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
exit;
}
$lang = (string) ($_POST['lang'] ?? 'en');
if ((int) ($_SERVER['CONTENT_LENGTH'] ?? 0) > 4096) {
idea_redirect($lang, 'invalid');
}
if (visitor_idea_clean((string) ($_POST['company_site'] ?? ''), 80) !== '') {
idea_redirect($lang, 'thanks');
}
$name = visitor_idea_clean((string) ($_POST['visitor_name'] ?? ''), 80);
$idea = visitor_idea_clean((string) ($_POST['visitor_idea'] ?? ''), 600);
if (strlen($idea) < 10) {
idea_redirect($lang, 'invalid');
}
if (visitor_ideas_recently_submitted()) {
idea_redirect($lang, 'slow');
}
if (!visitor_ideas_append($name, $idea)) {
idea_redirect($lang, 'error');
}
idea_redirect($lang, 'thanks');