summaryrefslogtreecommitdiffstats
path: root/prog/skovikanje/komentar.php
blob: c6939edd7a4fd9d8b670e36006ac07a0131b839b (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
<?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>