naam en quantity toevoegen in php

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • NO12BEAT
  • Registratie: December 2016
  • Laatst online: 01-06-2022
Hoi,

voor een project op school maak ik een database op een raspberry pi 3, waar met een barcode scanner producten aan toegevoegd (en uitgehaald, hier ben ik alleen nog niet aan toe) kunnen worden. Dit om bij te kunnen houden wat voor producten je allemaal in huis hebt als je in de supermarkt staat en vergeten bent om te kijken :)

De code werkt behalve dat de quantity en name niet toegevoegd worden in mijn database.
Iemand een idee hoe ik dit werkend kan krijgen? Ben redelijk nieuw met mysql en php dus het liefst simpel :)


<?php
error_reporting(E_ALL ^ E_DEPRECATED);
$link=mysqli_connect("localhost","root","wachtwoord");
mysqli_select_db($link,"producten");

if(isset($_POST['submit'])){
$barcode = $_POST['barcode'];
$query = mysqli_query($link," INSERT INTO barcode (barcode_no, date, quantity, name) VALUES ('$barcode',now(),'$quantity','$name' )");
header("LOCATION:barcode.php");

}
?>

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form method="POST" action="barcode.php">

barcode: <input type="text" name="barcode">
quantity: <input type="value" name="quantity">
productname: <input type="text" name="name"><br>
<input type="submit" name = "submit" value="submit">
<input type="submit" name = "remove" value="remove">


</form>
</body>
</html>

Beste antwoord (via NO12BEAT op 04-05-2018 15:57)


  • Kryziek
  • Registratie: Juni 2010
  • Laatst online: 21:56

Kryziek

bb || !bb

Je bent vergeten je quantity en name variabelen te definieren.
Als in:
PHP:
1
2
$quantity = $_POST['quantity'];
$name = $_POST['name'];

Deze kun je onder je
PHP:
1
 $barcode = $_POST['barcode'];
plaatsen.

[ Voor 30% gewijzigd door Kryziek op 04-05-2018 15:52 ]

Alle reacties


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Kryziek
  • Registratie: Juni 2010
  • Laatst online: 21:56

Kryziek

bb || !bb

Je bent vergeten je quantity en name variabelen te definieren.
Als in:
PHP:
1
2
$quantity = $_POST['quantity'];
$name = $_POST['name'];

Deze kun je onder je
PHP:
1
 $barcode = $_POST['barcode'];
plaatsen.

[ Voor 30% gewijzigd door Kryziek op 04-05-2018 15:52 ]


Acties:
  • +1 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
<input type="text" name="barcode" value="1' SQL INJECTION"> ;)

Vraag even aan de leraar om een lesje beveiliging voordat jullie aan de gang gaan met programmeren.

[ Voor 58% gewijzigd door DJMaze op 04-05-2018 15:54 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 23:21

AW_Bos

Liefhebber van nostalgie... 🕰️

En vergeet geen exit() na je location-header.

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • 0 Henk 'm!

  • NO12BEAT
  • Registratie: December 2016
  • Laatst online: 01-06-2022
DJMaze schreef op vrijdag 4 mei 2018 @ 15:51:
<input type="text" name="barcode" value="1' SQL INJECTION"> ;)

Vraag even aan de leraar om een lesje beveiliging voordat jullie aan de gang gaan met programmeren.
Mijn docent kan het verschil tussen mysql en html amper uitleggen, vraag me af of hij iets snapt van beveiliging haha.

Acties:
  • +1 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
@NO12BEAT even melden bij de directie?
Zo kan je natuurlijk geen les geven.
Jij leert namelijk compleet foute dingen waarvoor je straks in het bedrijfsleven heel hard wordt afgestraft.

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • Kryziek
  • Registratie: Juni 2010
  • Laatst online: 21:56

Kryziek

bb || !bb

Nog een tip om achter zulke fouten te kunnen komen:
Ga alles outputten naar je scherm om je data te bekijken. Bijvoorbeeld met echo of met var_dump. Zo kun je er de volgende keer achter komen dat je variabelen leeg zijn of in dit geval, niet eens bestonden. :)

Acties:
  • 0 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
DJMaze schreef op vrijdag 4 mei 2018 @ 15:51:
<input type="text" name="barcode" value="1' SQL INJECTION"> ;)

Vraag even aan de leraar om een lesje beveiliging voordat jullie aan de gang gaan met programmeren.
Onzin. Als je nog niets snapt van SQL kan je ook niets begrijpen van Injection. Aan het niveau te zien is TS nog amper les 1 voorbij (no offense, iedereen moet ergens beginnen). Dan mogen eenvoudig te injecteren programma's nog. Die zullen toch nooit het daglicht zien.

Acties:
  • +2 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 23:21

AW_Bos

Liefhebber van nostalgie... 🕰️

Stoelpoot schreef op vrijdag 4 mei 2018 @ 16:04:
[...]


Onzin. Als je nog niets snapt van SQL kan je ook niets begrijpen van Injection. Aan het niveau te zien is TS nog amper les 1 voorbij (no offense, iedereen moet ergens beginnen). Dan mogen eenvoudig te injecteren programma's nog. Die zullen toch nooit het daglicht zien.
Oneens, het gaat niet direct om SQL-injection, maar om het escapen wat ontbreekt.
Als de gebruiker nu eens string met een apostrof invult zoals 's-hertogenbosch, dan zal de query meteen falen.
En als gevolg van het niet escapen is SQL-injection dus mogelijk.

Misschien dat het een paragraaf later komt, maar het moet gewoon geleerd worden!

Vroeger had je de magic-quotes die je beschermden, maar die zijn er in PHP 5.4 uitgesloopt. En maar goed ook. het gaf ook meer ellende.

[ Voor 16% gewijzigd door AW_Bos op 04-05-2018 16:09 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • +2 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Stoelpoot schreef op vrijdag 4 mei 2018 @ 16:04:
Onzin. Als je nog niets snapt van SQL kan je ook niets begrijpen van Injection. Aan het niveau te zien is TS nog amper les 1 voorbij (no offense, iedereen moet ergens beginnen). Dan mogen eenvoudig te injecteren programma's nog. Die zullen toch nooit het daglicht zien.
Ik zie het toch echt zo:
Les 1: leer HTML
Les 2: leer PHP
Les 3: leer beveiliging van user input
Les 4: leer SQL
Les 5: leer SQL beveiliging
Les 6: voeg nu alles samen (dit is blijkbaar jouw les 1?!?)

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
AW_Bos schreef op vrijdag 4 mei 2018 @ 16:07:
[...]

Oneens, het gaat niet direct om SQL-injection, maar om het escapen wat ontbreekt.
Als de gebruiker nu eens string met een apostrof invult zoals 's-hertogenbosch, dan zal de query meteen falen.
En als gevolg van het niet escapen is SQL-injection dus mogelijk.

Misschien dat het een paragraaf later komt, maar het moet gewoon geleerd worden!

Vroeger had je de magic-quotes die je beschermde tegen die praktijk, maar die zijn er in PHP 5.4 uitgesloopt.
Inderdaad is dat het materiaal wat een paragraaf later komt, na een regel: "Vul nu eens 'DROP TABLE [Users]" in in je barcode veld. Zonder de opdracht om het in te vullen kan je niet uitleggen wat er nou mis mee is. En als dit opdracht 1 is, moet je dit wel zonder beveiliging doen. De meeste leerlingen die dit niveau aan opdrachten doen zullen nog moeite hebben een missende ; te vinden omdat ze het simpelweg nog niet lang genoeg doen.
DJMaze schreef op vrijdag 4 mei 2018 @ 16:09:
[...]

Ik zie het toch echt zo:
Les 1: leer HTML
Les 2: leer PHP
Les 3: leer beveiliging van user input
Les 4: leer SQL
Les 5: leer SQL beveiliging
Les 6: voeg nu alles samen (dit is blijkbaar jouw les 1?!?)
Ik zou eerder de lessen geven als Leer HTML -> Leer PHP en SQL -> Leer beveiliging. Waarbij dit dus les 1 HTML / PHP is. Aan het gebruik van 'professor' door TS verwacht ik ook dat het een hogere opleiding is waar die leercurve best acceptabel is.

Maar we dwalen wel erg af

[ Voor 23% gewijzigd door Stoelpoot op 04-05-2018 16:14 ]


Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 23:21

AW_Bos

Liefhebber van nostalgie... 🕰️

Maar dan zou ik het wel direct in uitleg meenemen op een forum

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • +1 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
offtopic:
@Stoelpoot ik begrijp je insteek.
Zal ik jou in les 1 voor vrachtwagenchauffeur de sleutels van de wagen geven en je alleen op pad sturen?
In les 2 leg ik je uit hoe je niet die fietser over het hoofd ziet en de gevolgen kan vermijden.

Ik snap niet waarom een rijinstructeur wel begrijpt hoe het moed.
Zal wel iets met de gevoelsmatige impact te maken hebben.

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 00:20

DukeBox

loves wheat smoothies

input type="value"

Lijkt me ook niet helemaal w3c compatibel.

Duct tape can't fix stupid, but it can muffle the sound.


Acties:
  • 0 Henk 'm!

  • LordSinclair
  • Registratie: Oktober 2014
  • Laatst online: 21:10
DJMaze schreef op vrijdag 4 mei 2018 @ 16:17:
[ot]@Stoelpoot ik begrijp je insteek.
Zal ik jou in les 1 voor vrachtwagenchauffeur de sleutels van de wagen geven en je alleen op pad sturen?
In les 2 leg ik je uit hoe je niet die fietser over het hoofd ziet en de gevolgen kan vermijden.
Precies zoals het gaat met je autorijbewijs. De basis is ook eerste de bediening van de auto en niet de speciale verrichtingen.

Het is lastig om iets te beveiligen als je nog geen eens weet hoe het werkt.

There's no need to kneel, I'm a very democratic sort of lord.


Acties:
  • 0 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
DJMaze schreef op vrijdag 4 mei 2018 @ 16:17:
@Stoelpoot ik begrijp je insteek.
Zal ik jou in les 1 voor vrachtwagenchauffeur de sleutels van de wagen geven en je alleen op pad sturen?
In les 2 leg ik je uit hoe je niet die fietser over het hoofd ziet en de gevolgen kan vermijden.

Ik snap niet waarom een rijinstructeur wel begrijpt hoe het moed.
Zal wel iets met de gevoelsmatige impact te maken hebben.
Wat dacht je van lessen op een lesterrein zonder voetgangers en fietsers, met pedalen voor de instructeur? ;) Zonder te begrijpen wat bewegingen grofweg doen wordt het lastig om een fietser te ontwijken. Of wil jij uitleggen waar je heen moet kijken zonder dat mensen weten waar die plaatsen zitten?

Om terug te komen op het topic at hand, die input type="value" klopt inderdaad niet. Voor een nummer gebruik je "number" als type.
Pagina: 1