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";
}

}
?>
Zo zo... we willen allemaal helpen toch? Even een tip om te testen of $_POST goed gebruikt is: if (isset($_POST[‘naam’])) { ...
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.

Bijvoorbeeld: $naam = mysqli_real_escape_string($conn, $naam);
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).
Jan te Pas op 31/05/2018 19:10:53

Dan moet na posten de invoer worden gesantized ...


Is de Kerstman alweer in het land?
Dan ga ik volgende week alvast de oliebollen voorbakken!
Ja ja, ik bedoelde escapen. Stom hè? ja. Zo zo, ik heb al wel zin in oliebollen..

[size=xsmall]Toevoeging op 31/05/2018 22:12:36:[/size]

En quoten voor de database......
Wat ik nu gedaan heb is dat die de meldingen van naam en hash 2x hetzelfde checkt weet iemand hoe dit 1 keer kan?

<?php
$leren = new Categorieen();
$leren->find_all();
$i = 1;

if (trim($_POST['naam']) != '' && trim($_POST['hash']) != '') {

if ($_POST['naam'] !== "test") {

$test = new Categorieen();
$test->naam = $_POST['naam'];
$test->hash = $_POST['hash'];

$test->save();

} else {
$error = "Categorie is niet opgeslagen";

}

}
if (($_POST['naam']) != '') {

} else{
$errornaam = "Naam is niet ingevuld";
}

if (($_POST['hash']) != ''){

} else{
$errorhash = "</br> Hash is niet ingevuld";
}

?>
@Jan Trent,

Lees je uberhaupt wel adviezen en tips van Thomas en Ben? Je blijft maar vragen stellen, zonder er ook maar iets van begrepen te hebben.

Begin eerst maar eens met documentatie van trim() te lezen voor je verder gaat.

Reageren