summaryrefslogtreecommitdiffstats
path: root/prog/skovikanje/komentar.php
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--prog/skovikanje/komentar.php129
1 files changed, 129 insertions, 0 deletions
diff --git a/prog/skovikanje/komentar.php b/prog/skovikanje/komentar.php
new file mode 100644
index 0000000..c6939ed
--- /dev/null
+++ b/prog/skovikanje/komentar.php
@@ -0,0 +1,129 @@
+<?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(6)))), $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!" ?> />
+<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>&gt;</code>, bodo obarvane zeleno
+<li>nizi <code>&lt;&lt;xxxxxxxx</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>
+</form>