formulier veldcontrole

Status
Niet open voor verdere reacties.

adhemar

Gebruiker
Lid geworden
24 jul 2013
Berichten
16
Ik heb een eenvoudig formuliertje overgenomen en de code aangepast met "straat" bij te voegen. Nu werkt dit formuliertje altijd, zelfs indien ik geen velden invul.
Hier de code:
<?php
if (!isset($_POST['naam']) || !isset($_POST['email']) || !isset($_POST['voornaam']) || !isset($_POST['petitie']) || !isset($_POST['straat']))
{echo 'U heeft niet alle velden ingevuld!';
exit;}
$naam = htmlspecialchars($_POST['naam']);
$voornaam = htmlspecialchars($_POST['voornaam']);
$email = htmlspecialchars($_POST['email']);
$petitie = htmlspecialchars($_POST['petitie']);
$straat = htmlspecialchars($_POST['straat']);

$tijd = time();
$datum = strftime('%d/%m/%y %H:%M', $tijd);
$ip = getenv('REMOTE_ADDR');
$message = $naam. ' ' .$voornaam. ' met het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:
____________________________________
'.$petitie.'
' .$naam.'
'.$voornaam.'
'.$straat.' ';
mail('mijnmail@scarlet.be', 'Petitie', $message, 'From: '.$email);
echo 'Uw bericht is verzonden. U krijgt zo snel mogelijk antwoord.';
?>

Omdat ik geen kennis heb van php weet ik niet wat ik hier verkeerd gedaan heb. Ik zou zeer gelukkig zijn met een beetje hulp.
Dit formulier zal maar tijdelijk gebruikt worden voor een petitie. De controle moet niet streng zijn.
 
isset controleerd alleen of de variabele wordt doorgegeven door het formulier. Een lege doorgegeven variabele is nog steeds geldig voor isset. isset controleerd dus het formulier, maar niet de inhoud.

empty() of vergelijking met "" werkt waarschijnlijk wel
 
empty() of vergelijking met "" werkt waarschijnlijk wel

Let op dat empty() ook true teruggeeft als de variabele niet geset is, NULL bevat, of het getal 0 bevat.

Vergelijken met "" is dan beter, maar dan niet vergeten om trim($var) te gebruiken, anders keur je een veld waar alleen een spatie in staat ook goed.
 
Is dit mogelijk om een voorbeeldje te geven in een lijn met "naam" er in?
 
Deze varianten kun je onder andere gebruiken. Ik bedenk met net dat strlen met trim ook kan. anyways:

Code:
empty(trim($name))
trim($name) == false

Deze vergelijkingen zijn "positieve" vergelijkingen, in dat een positieve uitkomst betekend dat er wat mis is
 
Is dit mogelijk om een voorbeeldje te geven in een lijn met "naam" er in?


Code:
if (!isset($_POST['naam'])
{
   // Veld niet meegegeven, nu is er iets serieus mis, loggen en/of mailen want de site is kapot of iemand zit te hacken.
}
else
{
  // Veld wel meegegeven, kijk of het een geldige waarde bevat.
  if (trim($_POST['naam']) == "")
  {
     // Veld is leeg (of bevat alleen spaties, geef foutmelding.
  }
}


PS: htmlspecialchars is alleen nodig op de plek waar je een HTML string als sourcecode wilt laten zien binnen een andere stuk HTML. Als je alleen HTML wilt wegfilteren, gebruik dan striptags(). Het veld 'voornaam' zal nooit HTML bevatten (het is althans nooit de bedoeling) dus hoef je script dat ook niet toe te staan. Rag alles wat html is gewoon uit het veld weg met strip_tags().
 
Laatst bewerkt:
Mijn form is helemaal in de prak gelopen. Kan iemand een basis formuliertje aanbevelen? De controle over het invullen van de email moet kunnen uitgeschakeld worden. Het dient om een petitie in te vullen en van sommigen ontbreekt een emailadres.
Ik zou het geweldig waarderen om een zeer aanpasbaar script te hebben die niet streng hoeft te zijn in de controle van de velden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan