diff options
author | lonkaars <loek@pipeframe.xyz> | 2023-06-01 16:30:41 +0200 |
---|---|---|
committer | lonkaars <loek@pipeframe.xyz> | 2023-06-01 16:30:41 +0200 |
commit | 6715936a3b33c14b2d8c581677855bb6c1297940 (patch) | |
tree | 49ef59d2c62f5a7cb6a640c9ac3196c4b22ecd6a | |
parent | 879c72e50c172f6e20416dcf06fccdbb59525c7a (diff) |
implement promotion buff coefficient to promotion string converter
-rw-r--r-- | db/data.sql | 12 | ||||
-rw-r--r-- | public/index.php | 17 | ||||
-rw-r--r-- | readme.md | 16 |
3 files changed, 39 insertions, 6 deletions
diff --git a/db/data.sql b/db/data.sql index e6ac757..d0c5d96 100644 --- a/db/data.sql +++ b/db/data.sql @@ -27,10 +27,14 @@ insert into webs.user (`name`, `hash`) values ("willem", "$2b$12$vCDpn5fnGBL7dv3Ty1cgZegDKOguoRIgHNrUFYOCWoensgI4HnJde"); -- biege update webs.user set `privileges` = 1073741824 where `name` = "loek"; -insert into webs.promotion (`product`, `price_buff`) values - (1, 0.80), -- 20% korting - (2, 0.80), - (3, 0.80); +insert into webs.promotion (`product`, `price_buff`, `count_buff`) values + (1, 0.80, 1), -- 20% korting + (2, 0.50, 2), -- 1+1 gratis + (3, 0.6666666, 3), -- 2+1 gratis + (4, 0.50, 4), -- 2+2 gratis + (5, 0.75, 4), -- 3+1 gratis + (6, 0.80, 4), -- ???? + (7, 0.50, 6); -- 50% korting per 6-pack set @order_id = webs.cart(1); -- cart id voor loek insert into webs.orderproduct (`product`, `count`, `order`) values diff --git a/public/index.php b/public/index.php index cf8e7d1..0fd0ff2 100644 --- a/public/index.php +++ b/public/index.php @@ -1,5 +1,16 @@ <!DOCTYPE html> <?php require "../lib/db.php"; ?> +<?php +function promobuff2str($price_buff, $count_buff) { + if ($count_buff == 1) return ((1-$price_buff)*100)."% korting"; + if ($count_buff <= 4) { + for ($i = $count_buff-1; $i > 0; $i--) + if (abs((($i/$count_buff)-$price_buff)/$price_buff) < 0.001) + return $i."+".($count_buff - $i)." gratis"; + } + return ((1-$price_buff)*100)."% korting per ".$count_buff."-pack"; +} +?> <html> <head> <?php include 'head.php' ?> @@ -13,9 +24,11 @@ <h1>hier zijn de aanbiedingen</h1> <ul> <?php - $res = $cursor->query("select product.id, product.name as name from promotion join product on product.id = promotion.product"); + $res = $cursor->query("select product.id, product.name as name, promotion.count_buff, promotion.price_buff from promotion join product on product.id = promotion.product"); while ($product = $res->fetch_object()) { - echo "<li><a href=\"/product.php?id=$product->id\">$product->name</a></li>"; + echo "<li><a href=\"/product.php?id=$product->id\">$product->name</a>: "; + echo promobuff2str($product->price_buff, $product->count_buff); + echo "</li>"; } ?> </ul> diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..96e6f2c --- /dev/null +++ b/readme.md @@ -0,0 +1,16 @@ +# webs eindopdracht + +dingen die niet (goed) werken met onderbouwing: + +- **wachtwoorden/authenticatie** + ik sla de wachtwoorden op als bcrypt hash in de database, en stuur het + plaintext wachtwoord met elke request als cookie. dit is onveilig. een betere + oplossing zou werken met tokens maar dat kost meer moeite. +- **xss/html injectie** + gebruikersnamen worden direct uit de database gehaald en alleen voor de + gebruiker zelf op de mand-pagina weergeven. de gebruiker zou technisch gezien + een html tag in zijn naam kunnen stoppen en (voor zichzelf) de hele website + slopen. ik vind dat html injectie tegengaan de taak is van een html + templating engine. deze website gebruikt bewust PHP string + templating/concatenation als html templating 'engine' omdat het de simpelste + (onveilige) oplossing is. |