87 lines
3.5 KiB
Markdown
87 lines
3.5 KiB
Markdown
# Aufgabe 1
|
|
> Dauer: 2 h
|
|
## 1)
|
|

|
|
## 2) Datenbankentwurf in Relationenschreibweise
|
|
```sql
|
|
use emensawerbeseite;
|
|
|
|
-- Tabelle 'Ersteller' erstellen
|
|
CREATE TABLE IF NOT EXISTS Ersteller (
|
|
EMail VARCHAR(255) PRIMARY KEY,
|
|
Name VARCHAR(255) DEFAULT 'anonym'
|
|
);
|
|
|
|
-- Tabelle 'Wunschgericht' erstellen
|
|
CREATE TABLE IF NOT EXISTS Wunschgericht (
|
|
ID INT AUTO_INCREMENT PRIMARY KEY,
|
|
Name VARCHAR(255) NOT NULL,
|
|
Beschreibung TEXT,
|
|
Erstellungsdatum DATE NOT NULL,
|
|
Ersteller_EMail VARCHAR(255) NOT NULL,
|
|
FOREIGN KEY (Ersteller_EMail) REFERENCES Ersteller(EMail)
|
|
);
|
|
```
|
|
## 6)
|
|
### a)
|
|
````sql
|
|
select * from wunschgericht order by Erstellungsdatum desc limit 5;
|
|
````
|
|
### b)
|
|
````sql
|
|
-- basierend auf M3 6) 4)
|
|
select ersteller.Name,
|
|
count(Ersteller_EMail) as anzahl from wunschgericht, ersteller where ersteller.EMail = wunschgericht.Ersteller_EMail
|
|
group by Ersteller_EMail
|
|
order by anzahl desc ;
|
|
````
|
|
---
|
|
# Aufgabe 2
|
|
> Dauer: 2h
|
|
|
|
Bei der Übergabe von Daten in die DB müssen diese geprüft werden.
|
|
Bei der Ausgabe von Daten aus der DB im HTML Code müssen diese Maskiert werden.
|
|
````php
|
|
// wunschgericht.php
|
|
// Zeile 33
|
|
$sql_ersteller_exists = "SELECT * FROM ersteller WHERE EMail = '" . $ersteller_email . "'";
|
|
$sql_ersteller_exists = "SELECT * FROM ersteller WHERE EMail = '" . mysqli_real_escape_string($link, $ersteller_email) . "'";
|
|
|
|
// Zeile 36
|
|
$sql_ersteller = "INSERT INTO ersteller(EMail, Name) VALUES ('" . $ersteller_email . "','" . $ersteller_name . "')";
|
|
$sql_ersteller = "INSERT INTO ersteller(EMail, Name) VALUES ('" . mysqli_real_escape_string($link, $ersteller_email) . "','" . mysqli_real_escape_string($link, $ersteller_name) . "')";
|
|
|
|
// Zeile 42
|
|
$sql = "INSERT INTO wunschgericht(Name, Beschreibung, Erstellungsdatum, Ersteller_EMail) VALUES ('" . $gericht_name . "','" . $gericht_beschreibung . "','". $date ."','" . $ersteller_email . "')";
|
|
$sql = "INSERT INTO wunschgericht(Name, Beschreibung, Erstellungsdatum, Ersteller_EMail) VALUES ('" . mysqli_real_escape_string($link, $gericht_name) . "','" . mysqli_real_escape_string($link, $gericht_beschreibung) . "','".$date."','" . mysqli_real_escape_string($link, $ersteller_email) . "')";
|
|
?>
|
|
````
|
|
|
|
````php
|
|
// index.php
|
|
// Zeile 43
|
|
$sql_besucher = "UPDATE besucher_counter SET besucher =".$besucherCount;
|
|
$sql_besucher = "UPDATE besucher_counter SET besucher =". mysqli_real_escape_string($link, $besucherCount);
|
|
|
|
// Zeile 190
|
|
$tabelle .= "<tr class=\"speisen\"><td>" . $row_gerichte['name'] . " <sup>" . $allergene . "</sup></td><td>" . $preisintern . "€</td><td>" . $preisextern . "€</td><td>Kein Bild in der Datenbank </td></tr>";
|
|
$tabelle .= "<tr class=\"speisen\"><td>" . htmlspecialchars($row_gerichte['name']) . " <sup>" . htmlspecialchars($allergene) . "</sup></td><td>" . htmlspecialchars($preisintern) . "€</td><td>" . htmlspecialchars($preisextern) . "€</td><td>Kein Bild in der Datenbank </td></tr>";
|
|
|
|
|
|
// Zeile 202
|
|
$verwendete_allergene_string .= "<sup>".$row_allergen['code']."</sup> ". $row_allergen['name']. ", ";
|
|
$verwendete_allergene_string .= "<sup>". htmlspecialchars($row_allergen['code']) ."</sup> ". htmlspecialchars($row_allergen['name']) . ", ";
|
|
|
|
// Zeile 214f
|
|
echo $besucherCount;
|
|
echo $newletterCount;
|
|
|
|
echo htmlspecialchars($besucherCount);
|
|
echo htmlspecialchars($newletterCount);
|
|
|
|
// Zeile 220
|
|
echo $ausgabe["COUNT(id)"];
|
|
echo htmlspecialchars($ausgabe["COUNT(id)"]);
|
|
````
|
|
Bei der Newsletteranmeldung sollte man sich auch ggf. überlegen, wie man die Eingaben prüft un zu vermeiden, das schadhafter Code gespeichert und später abgerufen wird.
|