Function tasks
This commit is contained in:
parent
2bd4c2215a
commit
07107708d0
@ -1 +1 @@
|
||||
20
|
||||
21
|
||||
1
tasks/functions/data/counter.txt
Normal file
1
tasks/functions/data/counter.txt
Normal file
@ -0,0 +1 @@
|
||||
3
|
||||
129
tasks/functions/funktionen.php
Normal file
129
tasks/functions/funktionen.php
Normal file
@ -0,0 +1,129 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<?php include_once "../../base/meta.php" ?>
|
||||
<title>Counter</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<?php
|
||||
include_once "../../base/settings.php";
|
||||
include_once "../../base/headers.php";
|
||||
|
||||
/* Aufgabe 1 (A)
|
||||
Programmieren Sie eine Funktion buildlink,
|
||||
die aus einem Text und einer Url einen
|
||||
HTML-Hyperlink zusammensetzt und diesen zurückgibt.*/
|
||||
|
||||
|
||||
//Hier Funktion 1 implementieren
|
||||
function buildlink($name, $url)
|
||||
{
|
||||
return "<a href=\"$url\">$name</a>";
|
||||
}
|
||||
|
||||
|
||||
/*So könnten die Funktionsaufrufe für die Funktion buildlink aussehen.
|
||||
Beim zweiten Aufruf wird die Rückgabe der Funktion ohne Zwischenvariable direkt mit echo ausgegeben. Die Beispielaufrufe können zum Testen der Funktion verwendet werden.*/
|
||||
$ergebnis = buildlink("Google", "https://www.google.de");
|
||||
echo "$ergebnis<br>";
|
||||
echo buildlink("PHP-Doku", "https://www.php.net");
|
||||
|
||||
|
||||
/* Aufgabe 2 (A)
|
||||
Programmiere Sie eine Funktion isHexColor, die überprüft, ob ein Wert eine hexadezimale Farbe ist. Die Funktion erhält den Wert als Zeichenkette. Sie soll true zurückgeben, wenn die Zeichenkette eine hexadezimale Farbe ist und sie soll false zurückgeben, wenn die Zeichenkette keine hexadezimale Zahl ist.*/
|
||||
|
||||
|
||||
//Hier Funktion 2 implementieren
|
||||
function isHexColor($colour)
|
||||
{
|
||||
return preg_match("/^#([0-9A-Fa-f]{3,4}|[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$/", $colour);
|
||||
}
|
||||
|
||||
|
||||
//So könnten die Funktionsaufrufe für die Funktion isHexColor aussehen.
|
||||
//Ändern Sie den Wert #GG000, um die Funktion auch mit anderen Eingaben zu testen.
|
||||
$wert = "#GG000"; //#330055
|
||||
$ergebnis = isHexColor($wert);
|
||||
if ($ergebnis == true)
|
||||
echo "<p>$wert ist eine hexadezimale Farbe</p>";
|
||||
else
|
||||
echo "<p>$wert ist keine hexadezimale Farbe</p>";
|
||||
|
||||
|
||||
/* 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 "<p>Der Satz <b>$satz</b> hat $ergebnis Wörter</p>"; //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 "<p>Die Seite wurde noch nicht besucht</p>";
|
||||
|
||||
$f = fopen("./data/$file", "r");
|
||||
if (flock($f, LOCK_EX)) {
|
||||
$cnt = intval(fgets($f)) + 1;
|
||||
return "<p>Sie sind der $cnt Besucher</p>";
|
||||
}
|
||||
flock($f, LOCK_UN);
|
||||
fclose($f);
|
||||
}
|
||||
|
||||
echo getHits("counter.txt");
|
||||
addHit("counter.txt");
|
||||
|
||||
Headers::html();
|
||||
?>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Loading…
x
Reference in New Issue
Block a user