summaryrefslogtreecommitdiffstats
path: root/prog/skovikanje/komentar.php
blob: 78b9c6e9d30cf0c9ebfd87966ec6674f998b96d5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<?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>&gt;</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>