diff --git a/tasks/counter/data/counter.txt b/tasks/counter/data/counter.txt index 2edeafb..b5045cc 100644 --- a/tasks/counter/data/counter.txt +++ b/tasks/counter/data/counter.txt @@ -1 +1 @@ -20 \ No newline at end of file +21 \ No newline at end of file diff --git a/tasks/functions/data/counter.txt b/tasks/functions/data/counter.txt new file mode 100644 index 0000000..e440e5c --- /dev/null +++ b/tasks/functions/data/counter.txt @@ -0,0 +1 @@ +3 \ No newline at end of file diff --git a/tasks/functions/funktionen.php b/tasks/functions/funktionen.php new file mode 100644 index 0000000..02b18ad --- /dev/null +++ b/tasks/functions/funktionen.php @@ -0,0 +1,129 @@ + + + +
+ +$wert ist eine hexadezimale Farbe
"; + else + echo "$wert ist keine hexadezimale Farbe
"; + + + /* 3 (M) +Programmieren Sie eine Funktion wortzaehler, +die eine Zeichenkette mit einem Satz erhält und die die Anzahl der Wörter im Satz zurückgibt.*/ + + + //Hier Funktion 3 implementieren + function wortzaehler($sentence) + { + return count(explode(" ", $sentence)); + } + + + /*So könnten ein Funktionsaufruf für die Funktion wortzaehler aussehen. Die Rückgabe der Funktion wird in der Variablen $ergebnis gespeichert und anschließend mit einem echo ausgegeben. +Der Beispielaufruf kann zum Testen der Funktion verwendet werden.*/ + $satz = "Das ist das Haus vom Nikolaus"; + $ergebnis = wortzaehler($satz); + echo "Der Satz $satz hat $ergebnis Wörter
"; //6 Wörter + + + + + + /*Aufgabe 4 (F) +Implementieren Sie mithilfe von zwei Funktionen: addHit und getHits einen einfachen Zugriffszähler. +Die Funktion addHit soll eine Zahl in einer Datei um eine Ganzzahl hochzählen. +Die Funktion getHits soll eine Zahl aus einer Datei auslesen und ausgeben. +Details siehe Aufgabenstellung in Blackboard. */ + + //Hier Funktion 4 implementieren + function addHit($file) + { + if (!file_exists("./data/$file")) { + file_put_contents("./data/$file", "1"); + setcookie("counter-visit", "true", ["expires" => time() + 60 * 60 * 24, "samesite" => "strict", "secure" => true, "httponly" => true]); + return; + } + + $f = fopen("./data/$file", "r+"); + if (flock($f, LOCK_EX)) { + $cnt = intval(fgets($f)) ?? 0; + + if (!isset($_COOKIE["counter-visit"])) { + rewind($f); + $cnt += 1; + fputs($f, strval($cnt)); + + setcookie("counter-visit", "true", ["expires" => time() + 60 * 60 * 24, "samesite" => "strict", "secure" => true, "httponly" => true]); + } + } + flock($f, LOCK_UN); + fclose($f); + } + + function getHits($file) + { + if (!file_exists("./data/$file")) + return "Die Seite wurde noch nicht besucht
"; + + $f = fopen("./data/$file", "r"); + if (flock($f, LOCK_EX)) { + $cnt = intval(fgets($f)) + 1; + return "Sie sind der $cnt Besucher
"; + } + flock($f, LOCK_UN); + fclose($f); + } + + echo getHits("counter.txt"); + addHit("counter.txt"); + + Headers::html(); + ?> + + + \ No newline at end of file