Kann mir jemand Vorschläge für ein geeignetes/passendes Array in meinem php Code vorschlagen?

1 Antwort

Ich habe mir mal die Mühe gemacht, und den Code (soweit möglich) verbessert. Den Preis für eine Pizza solltest du nicht vom Client per POST annehmen, sondern in einer Datenbank oder einem Array je nach Größe nachschauen. Sonst kann der Kunde den Preis für eine Pizza auf 1€ setzen.

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <link href="style.css" type="text/css" rel="stylesheet" />
</head>

<body>
    <?php
    $bestellung = [
        'kunde' => [
            'vorname' => $_POST['vorname'],
            'nachname' => $_POST['nachname'],
            'adresse' => [
                $_POST['strasse_und_hausnummer'],
                $_POST['plz'],
                $_POST['ort']
            ],
            'telefon' => $_POST['telefonnummer'],
            'email' => $_POST['e_mail_adresse'],
            'stammkunde' => $_POST['stammkundenkarte'] == 'Ja'
        ],

        'pizza_sorten' => $_POST['pizzasorten'],
        'pizza_anzahl' =>  $_POST['pizzaanzahl'],
        'preis' => $_POST['groesse_preis'], // Hier ist eine Sicherheitslücke, da der Preis vom Kunde geändert werden könnte. Der Preis sollte auf dem Server (z.B. Datenbank) gespeichert werden
        'getraenk' => $_POST['getraenk'],

        'lieferoptionen' =>  $_POST['lieferoptionen'],
        'bemerkung' => $_POST['bemerkungen']
    ];

    $lieferkosten = 4.99;

    // Berechnung der Kosten
    $rabatt = 0.05;
    $lieferung_kostenlos = false;
    if ($bestellung['kunde']['stammkunde']) {
        $rabatt = 0.10; // Stammkunden erhalten 10% Rabatt
    }

    if ($bestellung['pizza_anzahl'] >= 3) {
        $lieferung_kostenlos = true; // Ab 3 Pizzen ist die Lieferung kostenlos
    }

    $bestellung['betrag'] = $bestellung['preis'] * $bestellung['pizza_anzahl'] * (1 - $rabatt) + ($lieferung_kostenlos ? 0 : $lieferkosten);

    $pizzas = ['Margherita', 'Pepperoni', 'Funghi', 'Quattro Formaggi', 'Diavola', 'Veggie Delight', 'Eigenkreation'];
    ?>

    <p>Ihre gewählte Pizzasorte ist: <?= $pizzas[2]; ?></p>

    <p>Vielen Dank, <?= $bestellung['kunde']['vorname']; ?> <?= $bestellung['kunde']['nachname']; ?>, für Ihren Bestellung.</p>
    <p>Der Zahlungsbetrag beträgt: <?= $bestellung['betrag']; ?> € (<?= $rabatt * 100; ?>% Rabatt wurde gewährt<?= $lieferung_kostenlos ? '' : ' inkl. der Lieferkosten'; ?>) <br>
        Wir freuen uns darauf, Ihnen Ihre <?= $bestellung['pizza_anzahl']; ?> <?= $bestellung['pizza_anzahl'] > 1 ? 'Pizzen' : 'Pizza'; ?> und <?= $bestellung['getraenk']; ?> zu liefern!</p>
    <?php if ($bestellung['kunde']['stammkunde']) { ?>
        <p>Wir schätzen Ihre Treue als Stammkunde!</p>
    <?php } ?>

</body>

</html>

Woher ich das weiß:Hobby – Entwickle seit ca 5 J. Software in vers. Programmiersprachen