Errors uit het php bestand op de html pagina tonen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Johnny Test

Johnny Test

05/02/2015 13:29:24
Quote Anchor link
Ik heb een registratie bestand gemaakt waarbij bezoekers een account kunnen aanmaken.
Deze gegevens haal ik op in mijn php bestand.

Ik kijk natuurlijk verschillende dingen na (wachtwoord moet gelijk zijn aan wachtwoord bevestigen, alle vakjes moeten ingevuld zijn enzovoort...)

Bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if (empty($gebruikersnaam) || empty($wachtwoordzonderencryptie) || empty($voornaam) || empty($achternaam) || empty($email))
{

  echo "Je hebt een invoervakje niet ingevuld.";
}

else if ($wachtwoordzonderencryptie != $wachtwoordbevestigen)
{

    echo "De wachtwoorden komen niet overeen";
}

else if (mysqli_num_rows($result) > 0)
  {

      echo "Deze gebruikersnaam wordt al gebruikt.";
  }

  else if ($dag == 0 || $maand == 0 || $jaar == 0)
  {

    echo "U hebt de geboorte datum niet volledig aangeduid.";
  }

?>



Het probleem is nu dat ik deze error messages krijg te zien op een nieuwe witte pagina (dus mijn registratie.php bestand).
Is er een manier om deze errors direct in mijn originele registratie.html bestand te laten tonen (bijvoorbeeld bovenaan de pagina in het rood) zonder een extra html bestand hiervoor aan te maken?
 
PHP hulp

PHP hulp

23/12/2024 07:12:41
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/02/2015 13:40:54
Quote Anchor link
Uiteraard.

Je kunt de errors in de eerste plaats in een array opslaan.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if (empty($gebruikersnaam) || empty($wachtwoordzonderencryptie) || empty($voornaam) || empty($achternaam) || empty($email))
{

  $errors['username'] = "Je hebt een invoervakje niet ingevuld.";
}

// ...
?>


Later in je content kun je doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if(isset($errors['username'])) echo '<p class="error">' . $errors['username'] . '</p>'; ?>
 
Pipo Clown

Pipo Clown

05/02/2015 13:52:02
Quote Anchor link
Ja, dit kan.
Hang een stukje javascript an de onclick-actie, controleer in dit javascript de invoer. Zijn er fouten dan kan je middels javascript de registratie.html aanpassen zonder de pagina te verversen.
 
Johnny Test

Johnny Test

05/02/2015 14:04:27
Quote Anchor link
Bedankt voor de tip met het werken van de array, ik heb nu gebruik gemaakt van een $_SESSION['error'] die ik constant refresh na het geven van een error :)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/02/2015 14:06:07
Quote Anchor link
>> Hetgeen Pipo aangeeft is inderdaad ook een goede mogelijkheid. Het voordeel is dan dat de pagina niet ververst hoeft te worden en de gebruiker direct ziet wat er mis is. Dat is natuurlijk heel erg gebruikersvriendelijk. Het één sluit het ander echter niet uit want Javascript kan uitgeschakeld of aangepast worden door de gebruikers dus blijft een juiste Validatie in PHP onmisbaar.

Toevoeging op 05/02/2015 14:07:04:

Geen dank.
 
Johnny Test

Johnny Test

05/02/2015 14:09:28
Quote Anchor link
Dat was inderdaad ook eerst wat ik aan het zoeken was, maar ik probeer op het moment geen javascript te gebruiken en mijn site volledig uit php te maken. Maar zelf vind ik beide manieren gebruiksvriendelijk, zolang mijn errors niet meer op een nieuwe pagina komen te staan is het ok :)
 
Thomas van den Heuvel

Thomas van den Heuvel

05/02/2015 14:21:16
Quote Anchor link
Als je dan toch al van sessies gebruik maakt, verwerk je formulier dan ook in een aparte actie en gebruik je sessie naast het melden van fouten ook voor het opslaan van foutieve invoer, zodat de gebruiker deze waarden snel(ler) kan aanpassen als je deze terugplaatst in het formulier.

Zoiets dus. Het kost wat meer werk maar het heeft een aantal bijkomende voordelen.

Daarnast kun je ook overwegen om een token toe te voegen aan je formulier om CSRF tegen te gaan.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.