<?php
session_start();
$na = "";
$koga = "";
$ref = @str_replace("HTTP_REFERER", $_SERVER["HTTP_REFERER"], $_REQUEST["ref"]);
if (!empty($_REQUEST["na"]))
$na = str_replace(" ", "+", $_REQUEST["na"]);
if (!empty($_REQUEST["koga"]))
$koga = str_replace(" ", "+", $_REQUEST["koga"]);
if (!empty($_POST["besedilo"]))
$_SESSION["besedilo"] = $_POST["besedilo"];
if (!empty($_POST["geslo"]))
$_SESSION["geslo"] = $_POST["geslo"];
if (!empty($_POST["avtor"]))
$_SESSION["avtor"] = $_POST["avtor"];
if (!empty($_POST["antispam"]))
$_SESSION["antispam"] = $_POST["antispam"];
if (str_contains($koga, "..") || str_contains($koga, "/"))
die("brez .. in / v id-ju komentarja!");
$naregex = "/^[a-z0-9-+čžš<>]*$/i";
if (!preg_match($naregex, $na)) {
die("na bi moral ustrezati $naregex");
}
$requesturi = $_SERVER["REQUEST_URI"];
if ($_SERVER["REQUEST_METHOD"] == "POST" && !empty($_REQUEST["koga"]))
$obstojey = file_get_contents("komentarji/" . $koga);
if ($_SERVER["REQUEST_METHOD"] == "POST" && empty($_REQUEST["login"])) {
if ($koga) {
if (!password_verify($_POST["geslo"], explode("\t", explode("\n", $obstojey)[0])[2]))
die("napaka! napačno geslo. <a href=$requesturi>vrnitev nazaj</a>");
}
if (strtolower($_POST["antispam"]) != "a")
die("napaka! v polje za onemogočanje dostopa robotom bi morali vnesti črko a. <a href=$requesturi>vrnitev nazaj</a>");
if (str_contains($_POST["avtor"], "\t") || str_contains($_POST["avtor"], "\n"))
die("napaka! polje z imenom avtorja ne bi smelo vsebovati niti tabulatorja niti presledka. <a href=$requesturi>vrnitev nazaj</a>");
$d = $na . "\t" . $_POST["avtor"] . "\t" . (!empty($_POST["geslo"]) ? password_hash($_POST["geslo"], PASSWORD_DEFAULT) : "") . "\n" . trim($_POST["besedilo"]) . "\n";
if (file_put_contents("komentarji/" . ($koga ? $koga : str_replace("/", "-", base64_encode(random_bytes(3)))), $d)) {
echo "komentar oddan! ";
if (!empty($_REQUEST["ref"]))
echo "<a href='" . htmlspecialchars($ref) . "'>vrnitev nazaj na diskusijo</a>";
$_SESSION["besedilo"] = "";
if ($_POST["besedilo"] == "" && $koga) {
echo "\n------------- KOMENTAR IZBRISAN! --------------";
unlink("komentarji/$koga");
die();
}
if (!empty($koga))
$obstojey = file_get_contents("komentarji/" . $koga);
else
die();
} else
die("napaka! shranjevanje ni uspelo. pišite na <a href=mailto:anton@sijanec.eu>anton@šijanec.eu</a>. <a href=$requesturi>vrnitev nazaj</a>");
}
$avtor = @$_SESSION["avtor"] ? htmlspecialchars($_SESSION["avtor"]) : "";
$besedilo = @$_SESSION["besedilo"] ? htmlspecialchars($_SESSION["besedilo"]) : "";
$geslo = @$_SESSION["geslo"] ? htmlspecialchars($_SESSION["geslo"]) : (empty($na) ? "" : trim(`pwgen 8 1`));
if ($koga) {
if (empty($_POST["geslo"])) {
?>
<form method=post <?php if (!empty($_REQUEST["action"])) echo "action='" . @htmlspecialchars(str_replace("HTTP_REFERER", $_SERVER["HTTP_REFERER"], $_REQUEST["action"])) . "'"; ?>>
<label for=geslo>
geslo za urejanje:
</label>
<input type=password value="<?= !empty($_SESSION["geslo"]) ? htmlspecialchars($_SESSION["geslo"]) : "" ?>" name=geslo id=geslo />
<input type=submit name=login value=login />
</form>
<?php
die();
}
if (!password_verify($_POST["geslo"], explode("\t", explode("\n", $obstojey)[0])[2]))
die("napaka! napačno geslo. <a href=$requesturi>vrnitev nazaj</a>");
$avtor = explode("\t", explode("\n", $obstojey)[0])[1];
$geslo = $_POST["geslo"];
$besedilo = implode("\n", array_slice(explode("\n", $obstojey), 1));
}
?>
<?php if ($na || $koga) { ?>
<h1><?= $koga ? "urejanje" : "komentiranje" ?></h1>
<?= file_get_contents("header.html"); ?>
<?= $koga ? "koga" : "na" ?>:
<div style="border:1px solid red">
<?php
$tip = "komentar";
if (@$_REQUEST["tip"] == "objava")
$tip = "objava";
?>
<?= $koga ? `./komentar.sh $tip html $koga` : `./komentar.sh $tip html $na` ?>
</div>
<?php } ?>
<form method=post <?php if (!empty($_REQUEST["action"])) echo "action='" . @htmlspecialchars(str_replace("HTTP_REFERER", $_SERVER["HTTP_REFERER"], $_REQUEST["action"])) . "'"; ?>>
<label for=avtor>
avtor:
</label>
<input id=avtor name=avtor placeholder="lahko pustite prazno" value="<?= $avtor ?>" />
<br>
<textarea cols=40 rows=14 id=besedilo placeholder="besedilo komentarja ..." name=besedilo>
<?= $besedilo ?>
</textarea>
<br>
<div <?= $koga ? "hidden" : "" ?>>
<label for=geslo>
geslo za urejanje:
</label>
<input id=geslo name=geslo value="<?= $geslo ?>" placeholder="geslo ..." />
</div>
<div id=antispamdiv>
<label for=antispam <?= @$_SESSION["antispam"] == "a" ? "hidden" : "" ?>>
v polje vpišite črko a (za onemogočanje robotov):
</label>
<input id=antispam name=antispam placeholder="sem vpišite črko a" value="<?= @htmlspecialchars($_SESSION["antispam"]) ?>" />
<script>
document.getElementById("antispam").value = "a";
document.getElementById("antispamdiv").hidden = true;
</script>
</div>
<input type=submit value=<?= $koga ? "uredi!" : "komentiraj!" ?> />
<details><summary>oblikovanje</summary>
<ul>
<li>na novi vrstici napišite <code>!http://url/do/slike</code> da vgradite sliko
<li>začni vrstico z *, da izdelaš seznam
<li>vrstice, ki se začno z <code>></code>, bodo obarvane zeleno
<li>nizi <code>>>xxxx</code> bodo citirali komentarje
<li>povezave zaznam avtomatično
<?php if ($koga) {
echo "<li><b>komentar bo izbrisan, če mu med urejanjem shranite prazno telo.</b>";
echo "<input type=hidden name=na value=" . htmlspecialchars(explode("\t", explode("\n", $obstojey)[0])[0]) . " />";
}
?>
</ul>
</details>
</form>