<link rel="shortcut icon" href="data:image/png;base64,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">
margin: 1.5rem 0 10rem 1.5rem;
font-family: Verdana, Arial, Sans-Serif;
box-shadow: Inset 0px 0px 10px 100px
input[type=radio]:checked + label {
input[type=radio]:checked + label
transition: box-shadow 0.30s ease-in-out;
input[type="text"]:focus,
input[type="password"]:focus,
box-shadow: 0 0 3px rgb(149, 171, 238);
border: 1px solid rgb(149, 171, 238);
font-family: Arial, Sans-Serif;
window.addEventListener("DOMContentLoaded", counter);
var str = document.getElementById("inhalt1").value;
pos = str.indexOf("\n", pos + 1);
var wort = str.split(" ");
document.getElementById("zeichen").innerText = zeilen + " / " + wort.length + " / " + (str.length + 1);
<form action="<?=basename($_SERVER['SCRIPT_NAME'])?>" method="get">
<input type="search" name="suchbegriff" size="35" value="<?=isset($_GET['suchbegriff']) ? $_GET['suchbegriff'] : '';?>" placeholder="Suche nach Dateiname oder Inhalt" required="required">
<input type="submit" value="➥" title="Suche starten">
$verzeichnis = "verzeichnis/";
date_default_timezone_set("Europe/Vienna");
$zurueck = '<br>« <a href="javascript:history.back();">Zurück</a>';
$seite = ((isset($_GET["seite"])) ? abs(intval($_GET["seite"])) : 0);
if (isset($_GET["suchbegriff"])) {
$dateien = array_slice(scanDir($verzeichnis), 2);
foreach ($dateien as $datei) {
$dinfo = pathinfo($datei);
if ($dinfo['extension'] == $dateiendung) {
$text = file_get_contents($verzeichnis . $datei);
if (mb_stristr($datei, $_GET["suchbegriff"]) or
mb_stristr($text, $_GET["suchbegriff"])) {
array_push($ergebnisse, '<a href="' . $verzeichnis . basename($datei) . '" target="_blank" title="Datei direkt aufrufen">📰</a> <a href="?datei=' .
basename($datei) . '" title="Datei editieren">' . basename($datei) . '</a>');
if (count($ergebnisse) > 0) {
echo '<p class="ok">Suchergebnisse: ' . count($ergebnisse) . '</p>' .
foreach ($ergebnisse as $ergebnis) {
echo '<li>' . $ergebnis . '</li>';
echo '<p class="ko">Keine Suchergebnisse!</p>';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if ($_POST["option"] == "vorschau") {
echo '<fieldset><legend>👀 Vorschau</legend>' . nl2br($_POST["inhalt"]) . '</fieldset>';
if ($_POST["passwort"] === $passwort) {
if ($_POST["option"] == "speichern") {
if (!empty($_POST["dateiname"]) &&
!empty($_POST["inhalt"])) {
$dateiname = $_POST["dateiname"];
if (!file_exists($verzeichnis . $dateiname . '.' . $dateiendung)) {
$dateiname = trim(mb_strtolower($dateiname, 'UTF-8'));
$dateiname = strtr($dateiname, [" "=>"_", "ä"=>"ae", "ö"=>"oe", "ü"=>"ue", "ß"=>"ss"]);
$dateiname = preg_replace("/[^a-z0-9_-]/", "", $dateiname);
$dateiname = ($dateiname == '') ? 'unbenannt' : $dateiname;
else if ($_POST["neu"] == 'ja') {
exit('<p class="ko">Die Datei "' . $dateiname . '.' . $dateiendung . '" ist bereits vorhanden!' . $zurueck . '</p>');
if (file_put_contents($verzeichnis . $dateiname . '.' . $dateiendung, $_POST["inhalt"])) {
echo '<p class="ok">Die Datei "' . $dateiname . '.' . $dateiendung . '" wurde erfolgreich gespeichert.</p>';
echo '<p class="ko">Beim speichern der Datei "' . $dateiname . '.' . $dateiendung . '" ist ein Fehler aufgetreten (Schreibrechte überprüfen)!' . $zurueck . '</p>';
echo '<p class="ko">Es wurden nicht alle Formularfelder korrekt ausgefüllt!' . $zurueck . '</p>';
if ($_POST["option"] == "loeschen") {
if (!empty($_POST["dateiname"])) {
if (file_exists($verzeichnis . $_POST["dateiname"] . '.' . $dateiendung)) {
if (unlink($verzeichnis . $_POST["dateiname"] . '.' . $dateiendung)) {
echo '<p class="ok">Die Datei "' . $_POST["dateiname"] . '.' . $dateiendung . '" wurde erfolgreich gelöscht.</p>';
echo '<p class="ko">Die Datei "' . $_POST["dateiname"] . '.' . $dateiendung . '" konnte nicht gelöscht werden (Schreibrechte überprüfen)!' . $zurueck . '</p>';
echo '<p class="ko">Der Dateiname fehlt!' . $zurueck . '</p>';
if ($_POST["option"] == "hochladen") {
if ($_FILES["datei"]["name"] != "" &&
$_FILES["datei"]["error"] === UPLOAD_ERR_OK) {
$dinfo = pathinfo($_FILES["datei"]["name"]);
$dateiname = $dinfo['filename'];
if ($dinfo['extension'] == $dateiendung) {
$dateiname = trim(mb_strtolower($dateiname, 'UTF-8'));
$dateiname = strtr($dateiname, [" "=>"_", "ä"=>"ae", "ö"=>"oe", "ü"=>"ue", "ß"=>"ss"]);
$dateiname = preg_replace("/[^a-z0-9_-]/", "", $dateiname);
$dateiname = ($dateiname == '') ? 'unbenannt' : $dateiname;
if (!file_exists($verzeichnis . "/" . $dateiname . "." . $dateiendung)) {
if (move_uploaded_file($_FILES["datei"]["tmp_name"], $verzeichnis . "/" . $dateiname . "." . $dateiendung)) {
echo '<p class="ok">Die Datei "' . $dateiname . '.' . $dateiendung . '" wurde erfolgreich hochgeladen.</p>';
echo '<p class="ko">Fehler beim verschieben der Datei!' . $zurueck . '</p>';
echo '<p class="ko">Die Datei "' . $dateiname . '.' . $dateiendung . '" ist bereits vorhanden!' . $zurueck . '</p>';
echo '<p class="ko">Dieses Dateiformat wird nicht unterstützt (nur: <i>.' . $dateiendung . '</i>-Formate)!' . $zurueck . '</p>';
echo '<p class="ko">Beim hochladen ist ein Fehler aufgetreten!' . $zurueck . '</p>';
echo '<p class="ko">Das Passwort ist fehlerhaft!' . $zurueck . '</p>';
if (isset($_GET["datei"])) {
$dateiname = basename($_GET["datei"]);
if (file_exists($verzeichnis . $dateiname)) {
if (is_readable($verzeichnis . $dateiname)) {
$dinfo = pathinfo($_GET["datei"]);
$dateiname = $dinfo['filename'];
if ($dinfo['extension'] == $dateiendung) {
$inhalt = file_get_contents($verzeichnis . $_GET["datei"]);
echo '<p class="ko">Die Datei "' . $_GET["datei"] . '" besitzt keine Leserechte!' . $zurueck . '</p>';
<form action="<?=basename($_SERVER['SCRIPT_NAME']) . '?seite=' . $seite?>" method="post" accept-charset="UTF-8" enctype="multipart/form-data">
<input type="text" size="34" name="dateiname" value="<?=$dateiname?>" pattern="^[a-z0-9-_]{1,100}$"
title="Der Dateiname darf nur aus: Kleinbuchstaben, Zahlen, Bindestrich oder Unterstrich bestehen (keine Umlaute, Leerzeichen oder Sonderzeichen)!"></label>
<textarea name="inhalt" id="inhalt1" rows="12" cols="50" spellcheck="true" onInput="counter()"><?=$inhalt?></textarea>
<input type="radio" name="option" value="speichern" id="speichern" checked="checked"> <label for="speichern" title="Datei speichern">&
<input type="radio" name="option" value="loeschen" id="loeschen" required="required"> <label for="loeschen" id="delete" title="Datei löschen">&
<input type="radio" name="option" value="vorschau" id="vorschau" title="Vorschau anzeigen"> <label for="vorschau">&
<input type="radio" name="option" value="hochladen" id="hochladen" required="required"> <label for="hochladen" title="Datei hochladen">&
<input type="file" name="datei" accept="text/plain"><!-- text/html, text/css, text/php --></label>
<input type="hidden" name="neu" value="<?=$neu?>">  
<input type="submit" value="✔ Ausführen" title="Ausgewählte Option ausführen">
if (is_dir($verzeichnis)) {
$dateien = glob($verzeichnis . "*." . $dateiendung);
foreach ($dateien as $datei) {
$ausgabe[] = '<tr><td><a href="' . $verzeichnis . basename($datei) . '" target="_blank" title="Datei direkt aufrufen">📰</a> <a href="?datei=' .
basename($datei) . '&seite=' . $seite . '" title="Datei editieren">' . basename($datei) . '</a></td><td><small>' .
number_format((filesize($datei) / 1024), 2, ",", ".") . ' KB</small></td><td><small>' .
date("d.m.Y - H:i", fileMtime($datei)) . ' Uhr</small></td></tr>';
echo '<table id="tabelle"><tr><td colspan="3">📁 "<code>' . $verzeichnis . '</code>" '
. count($dateien) . (count($dateien) == 1 ? ' Datei' : ' Dateien') . ' Seite: ';
for ($zaehler = 0; $zaehler < count($ausgabe); $zaehler = $zaehler + $eintraege) {
echo (($zaehler == $seite) ? ' <strong>' . $nr . '</strong>' :
' <a href="?seite=' . $zaehler . '" title="Seite ' . $nr . ' anzeigen">' . $nr . '</a>');
echo '</td></tr><tr><th title="Dateiname" width="48%">📰</th>' .
'<th title="Dateigröße" width="15%">⚖</th><th title="Letzte Änderung" >⏳</th></tr>';
for ($zaehler = $seite; $zaehler < ($seite + $eintraege); $zaehler++) {
if (isset($ausgabe[$zaehler])) {
echo '<p class="ko">Das Verzeichnis "' . $verzeichnis . '" ist nicht vorhanden!</p>';
document.write(unescape("%3Cbr%3E%3Cbr%3E%3Clink%20href%3D%22https%3A//fonts.googleapis.com/css%3Ffamily%3DAladin%3A400%2C700%2C300%7CFarsan%7CAcme%22%20rel%3D%22stylesheet%22%3E%0A%3Cdiv%20style%3D%22text-align%3A%20left%3B%20vertical-align%3A%20bottom%3B%22%3E%3Cfont%20face%3D%22Farsan%22%20size%3D%223%22%3E%A9%202005%20-%202019%20by%20%3Ca%20href%3D%22http%3A//kumhofer.at/connectme/kumhofer%22%20onfocus%3D%22track_file%28%27Copyright%20Text%27%29%22%20target%3D%22_blank%22%3EChristian%20Kumhofer%3C/a%3E%0A%3C/b%3E%3C/u%3E%3Cimg%20src%3D%22http%3A//www.gravatar.com/avatar/c6c088ea18fb20cdae38ce93bd951b4f%3Fdefault%3D%26size%3D24%26rating%3D%22%20alt%3D%22Christian%20Kumhofer%22%20title%3D%22Christian%20Kumhofer%22%20border%3D%220%22/%3E%3Cscript%20type%3D%22text/javascript%22%20src%3D%22https%3A//kumhofer.at/stat/plugins/onclick/pws_file.php%22%14%3C/script%3E%3C/div%3E%0A"));