diff options
Diffstat (limited to 'prog/skovikanje/komentar.php')
-rw-r--r-- | prog/skovikanje/komentar.php | 129 |
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>></code>, bodo obarvane zeleno +<li>nizi <code><<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> |