aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlonkaars <loek@pipeframe.xyz>2023-06-01 16:30:41 +0200
committerlonkaars <loek@pipeframe.xyz>2023-06-01 16:30:41 +0200
commit6715936a3b33c14b2d8c581677855bb6c1297940 (patch)
tree49ef59d2c62f5a7cb6a640c9ac3196c4b22ecd6a
parent879c72e50c172f6e20416dcf06fccdbb59525c7a (diff)
implement promotion buff coefficient to promotion string converter
-rw-r--r--db/data.sql12
-rw-r--r--public/index.php17
-rw-r--r--readme.md16
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.