Hallo,

Ik heb een geheime field in mijn form om te zorgen dat als spammers posten dat het niet in de database komt.
Dus wanneer je de field "robots" invuld wordt het niet gepost.
Nu heb ik wel zo dat de if empty functies het niet meer doen, dus wanneer ik alle fields leeg laat wordt het alsnog geplaatst.

Wie kan me helpen?
<input name="naam" type="text" id="naam" size="25" />
<textarea name="limitedtextfield" cols="30" rows="6" maxlength="250"></textarea>
<p class="spammers" id="pot">
Geheime field
<input name="robots" type="text" id="robots" class="robots" />
</p>
<input name="submit" type="submit" id="submit" value="REAGEER" />

<? if(isset($_POST['submit'])){
echo'<p>';
if(empty($_POST['limitedtextfield'])){
echo'Geen bericht ingevuld.';
}
if(empty($_POST['naam'])){
echo'Geen naam ingevuld.';
}
if($_POST['robots']){
echo'Spammer!';
}
else {
mysql_query("INSERT INTO `db` (naam,limitedtextfield) VALUES ('".$_POST['naam']."', '".$_POST['limitedtextfield']."'");
echo 'Gelukt!';
}
echo'</p>';
}
?>
controleer eerst of de request method POST is

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
// formulier is gepost
}
?>

daarna ga je controleren of je ook krijgt wat je wilt. dit noemen we validatie

<?php
if(strlen($_POST['naam']) < 2){
echo 'Geen naam ingevuld.';
$error = 1;
}
?>
vervolgens test je aan het eind van de validatie of er onjuistheden zijn waargenomen, zo niet dan ga je de gegevens verwerken, zo ja dan keer je terug naar het formulier

<?php
if(!$error){
// verwerk forumlier en stop dit script
exit;
}

// show formulier
?>
Probeer eens een ISSET() in plaats van een EMPTY().
Een <input> veld wordt ook gepost als ie leeg is.
<?php
// als het VELD in het FORMULIER met de NAAM "robots" is bestaat en niet leeg is..
if(isset($_POST['robots'] AND !empty($_POST['robots']))
{
// spammer
die("Spammer");
}

?>
Bedankt voor de reacties het is me gelukt.

Reageren