Ik probeer in mijn formulier de input als volgt te valideren:

Ik verwijs naar het script "maak_account.php"

<form action="scripts/maak_account.php" method="post">

<div class="form-group">
    <label for="naam">* Naam:</label>
    <input class="form-control" placeholder="Naam" name="naam" type="text" required>
    <span class="error">* <?php echo $naamErr;?></span>
</div>



Maar de variabele naamErr wordt niet herkend. Terwijl ik deze wel opvul in maakaccount.php

<?php
// Variabele gegevens bedrijf
$rechtsvorm = $naam = $straat = $huisnr = $busnr = $postcode = $plaats = $btwnr = $telnr = $email = "";

// Variabele gegevens gebruiker
$voornaam = $achternaam = $functie = $wachtwoord = "";

// Error variablele
$naamErr="";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Gegevens bedrijf
    $rechtsvorm = test_input($_POST["rechtsvorm"]);

    if (empty($_POST["naam"])) {
      $naamErr = "Naam invullen";
    } else {
      $naam = test_input($_POST["naam"]);
    }
    
    $straat = test_input($_POST["straat"]);
    $huisnr = test_input($_POST["huisnr"]);
    $busnr = test_input($_POST["busnr"]);
    $postcode = test_input($_POST["postcode"]);
    $plaats = test_input($_POST["plaats"]);
    $btwnr = test_input($_POST["btwnr"]);
    // $telnr = test_input($_POST["telnr"]);
    // $email = test_input($_POST["email"]);

    // Gegevens gebruiker
    $voornaam = test_input($_POST["vnaam"]);
    $achternaam = test_input($_POST["naam"]);
    $functie = test_input($_POST["functie"]);
    $wachtwoord = test_input($_POST["wachtwoord"]);
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>


Iemand die ziet wat ik verkeerd doe?
Input zou niet bewerkt mogen worden. Deze is goed of fout. Geen geautomatiseerd proces zou moeten proberen informatie te repareren die niet goed is (EDIT: uitzonderingen daar gelaten, zoals redundante datastromen met ingebouwde error-correcting code :p). Of zoals een oud-collega placht te zeggen: shit in, shit out.

Het probleem met automatisch aanpassen is dat je een machine informatie laat interpreteren. Machines zijn daar doorgaans niet zo sterk in. Daarnaast pas je mogelijk kloppende informatie aan in iets dat niet klopt, of in ieder geval iets dat afwijkt van wat een gebruiker heeft ingevoerd. Ik kan mij geen situatie voorstellen waarin dat wenselijk is.

Input mag wel geschikt gemaakt worden voor transport (naar een database) of weergave (in een webpagina). Maar daarbij wordt de oorspronkelijke input inhoudelijk niet gewijzigd.
Jelle Breusegem op 27/09/2017 08:51:45

Ik had ergens gelezen dat het properder en overzichtelijker programmeren is als je html, css, JavaScript en php in aparte files plaatst. Maar dus jullie raden mij aan php en html in zelfde file te plaatsen? Is daar een reden voor?


Je mag de HTML wel in een apart bestand zetten maar het belangrijkste is om de zaken gestructureerd te houden. En wat is het verschil tussen deze twee:

A:

<?php
	// php code hier
?>
<html>
	<!-- html hier -->
</html>


en B:

<?php
	// php code hier

	include('html_template.php');
?>

html_template.php:

<html>
	<!-- html hier -->
</html>


Het verschil is enkel dat het in twee fysiek verschillende bestanden staat. include() plempt echter de inhoud van html.template.php weer op de plek waar je die include functie aanroept. Netto resultaat is dat er qua werking geen verschil is.

Reageren