Door
Jan Trent
op 30-05-2018 11:36
gewijzigd op 30-05-2018 12:02
3.931 views
Beste allen ,
Ik loop vast met een php code die ik moet maken heb jullie hulp daarbij nodig.
Wat er moet gebeuren is in de if statement moet twee post methoden staan naam en hash die mogen niet leeg zijn heb zelf ook opgezocht naar multiple conditions maar kwam er niet uit.
Controller:
<?php
$leren = new Categorieen();
$leren->find_all();
$i = 1;
if($_POST['naam'] || $_POST['hash']) {
if ($test->naam !== "test") {
$test = new Categorieen();
$test->naam = $_POST['naam'];
$test->hash = $_POST['hash'];
$test->save();
} else {
$error = "Categorie is niet opgeslagen";
}
Actually, een neutralere check om te controleren of er gePOST wordt is, zoals hierboven al is aangehaald:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// ...
}
?>
Hierbij is het ook verstandig om van het Post/Redirect/Get patroon gebruik te maken. Dit houdt kortweg in dat nadat je iets POST je meteen redirect. Dit is voornamelijk, maar niet uitsluitend, bedoeld om dubbelposts tegen te gaan.
En zorg er voor dat je de input valideert voor er kan worden gesubmit. Dan moet na posten de invoer worden gesantized voordat je het naar de database wegschrijft.
Sanitizing wordt misschien in meerdere betekenissen gebruikt, maar ik associeer dat toch voornamelijk met het inhoudelijk aanpassen van input, wat wat mij betreft eigenlijk nooit wenselijk is want daarmee geef je in feite aan dat de invoer niet klopte en je een poging onderneemt om dit te repareren. Je probeert dan recht te maken wat krom was. Ik zou dit soort invoer gewoon weigeren. Fout is fout.
Als je het meer bedoelt in de betekenis van escaping, m.a.w. de invoer van enige speciale betekenis ontdoen binnen een specifieke context, by all means. Gebruik voor elke context (HTML, SQL et cetera) voor ALLE output de juiste escaping-functionaliteit maar vooral ook: gebruik deze op de juiste manier!
real_escape_string() alleen is niet afdoende en is alleen "veilig" in combinatie met quotes, en is sowieso geen wondermiddel (interne link).