Ik heb een scritp wat verder goed werkt, alleen op een puntje niet en dit is als iemand een of twee keer een spatie geeft in het invul tekst veld vervalt de foutmelding en gaat hij toch door, ook al he ik controle op leeg invoerveld "if empty", dus wet iemand wat het "teken" is om geen spatie toe te staan???

Hieronder mijn code:

$string_exp = "^[a-z .'-]+$";
if(!eregi($string_exp,$first_name))
{
$error_message .= 'De voornaam is niet geldig.<br />';
}

Oke, hoor het graag, Thanks
Wat levert onderstaande op?
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

if ($_SERVER['REQUEST_METHOD'] == 'POST'){
if (empty($_POST['naam1']) or empty($_POST['naam2']) or empty($_POST['mail']) or empty($_POST['onderwerp']) or empty($_POST['bericht'])) {

//Validatie

/** Validate naam1 */
$naam1Pattern = '~^[a-z .\'-]+$~Di';
if ( !isset( $_POST['naam1'] ) or !preg_match( $naam1Pattern, $_POST['naam1'] ) )
{
echo "De voornaam is niet geldig!<br> \n";
}

/** Validate naam2 */
$naam2Pattern = '~^[a-z .\'-]+$~Di'; // waarom aanmaken? Kun je toch ook controleren met $naam1Pattern? Is zelfde.
if ( !isset( $_POST['naam2'] ) or !preg_match( $naam2Pattern, $_POST['naam2'] ) )
{
echo "De achternaam is niet geldig!<br> \n";
}

/** Validate e-mail address */
$mailPattern = '~^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$~Di';
if ( !isset( $_POST['mail'] ) or !preg_match( $mailPattern, $_POST['mail'] ) )
{
echo "Het e-mailadres is niet geldig!<br> \n";
}

/** Validate onderwerp */
$onderwerpPattern = '~^[a-z .\'-]+$~Di'; // waarom aanmaken? Kun je toch ook controleren met $naam1Pattern? Is zelfde.
if ( !isset( $_POST['onderwerp'] ) or !preg_match( $onderwerpPattern, $_POST['onderwerp'] ) )
{
echo "Het onderwerp is niet geldig!<br> \n";
}

/** Validate bericht */
if ( !isset( $_POST['bericht'] ) or strlen(trim($_POST['bericht'])) < 5)
{
echo "Het bericht moet minimaal 5 tekens lang zijn!<br><br> \n\n";
}

echo 'Sorry, maar helaas ben u iets vergeten, of heeft u iets verkeerd ingevuld!!<br><br>\n';
echo '<button type="button" onclick="history.go(-1);">Terug naar formulier</button>';
}
else{

// set datum
// $datum = date("d.m.Y H:i"); // deze variabele hoef je niet aan te maken.

// set ip
$ip = $_SERVER['REMOTE_ADDR']; // deze variabele hoef je niet aan te maken.

if (isset ($_POST['kaartleggen']))
{
$kaartleggen="Ja, wel informatie";
}
else
{
$kaartleggen="Nee, geen informatie";
}

if (isset ($_POST['orakel']))
{
$orakel="Ja, wel informatie";
}
else
{
$orakel="Nee, geen informatie";
}

if (isset ($_POST['tenen']))
{
$tenen="Ja, wel informatie";
}
else
{
$tenen="Nee, geen informatie";
}

if (isset ($_POST['coaching']))
{
$coaching="Ja, wel informatie";
}
else
{
$coaching="Nee, geen informatie";
}


if (isset ($_POST['individueel']))
{
$individueel="Ja, wel informatie";
}
else
{
$individueel="Nee, geen informatie";
}

// Bericht
$mailsupport= "[email protected]";
$titel= "mijn domeinnaam - " . $_POST['onderwerp'];

$mssg .= "Ingevuld Contact Formulier \n\n"; // zal een foutmelding kunnen geven, omdat $mssg nog niet bestaat
$mssg .= "Voornaam: " .$_POST['naam1'] . "\n";
$mssg .= "Achternaam: " .$_POST['naam2'] . "\n";
$mssg .= "Telefoon: " .$_POST['telefoon'] . "\n";
$mssg .= "E-mailadres: " .$_POST['mail'] . "\n";
$mssg .= "Onderwerp: " .$_POST['onderwerp'] . "\n";
$mssg .= "Wilt u mij bellen over: \n";
$mssg .= "*Informatie Tarot Kaartleggen: " .$kaartleggen . "\n";
$mssg .= "*Informatie Orakel Snuffelen: " .$orakel . "\n";
$mssg .= "*Tenen lezen Online: " .$tenen . "\n";
$mssg .= "*Coaching: " .$coaching . "\n";
$mssg .= "*Individuele Workshop: " .$individueel . "\n";
$mssg .= "Voorkeur voor tijdstip: " .$tijdstip . "\n";
$mssg .= "Bericht:" . "\n";
$mssg .= $_POST['bericht'] . "\n" . "\n";
$mssg .= 'Dit bericht is verstuurd op'. date("d.m.Y H:i") .' van het ip adres ' . $ip . '.';

//Afzender
$headers = "From: " . $_POST['naam1'] . $_POST['naam2'] . " <" . $_POST['mail'] . ">"; // is onvolledige headers

mail ($mailsupport, $titel, $mssg, $headers); // kijk liever naar phpmailer/swiftmailer
// header ("Refresh: 0; URL=verzonden.php");
header('Location: http://www.example.com/location.php';);
exit;
}
}
?>
Overigens zonder de illusie te hebben dat ik alles netjes heb gemaakt.
@Obelix en Idefix, oke.... heb hem getest en als je in het formulier de verplichte gegevens invuld en je laat onderwerp leeg, geeft hij de melding dat je dit nog moet invullen en als ik dan een spatie geef en vil niets in bij bericht stuurt hij hem toch weg..
Voeg eens op regel 37 onderstaande 2 regels in:
<?php
$lengte = strlen(trim($_POST['bericht']));
echo $lengte;
?>
Wat is $lengte?
Heb ik gedaan en maakt geen verschil, ik kan ook nog steeds een enkele spatie geven en dan vervalt de foutmelding en gaat hij door.

Klopt ook wel denk ik want het patroon is niet veranderd, hij moet niet toestaan om een spatie te geven, dan moet de foutmelding blijven staan..?

Is maar een idee van mij hoor...?



Deze preg_match levert bij mij op. Dat hij geen spatie alleen door laat bij de naam.
Kijk hier eens na. Ik kan je geen uitleg geven van de code. Dit omdat ik de ballen snap van preg_match.

<?php
preg_match( '~^[\w\' -]{2,}$~', $_POST['name'] )
?>
@Frank WD, Sorry, maar ook dit leverd niet op helaas, kan nog steeds een spatie geven en foutmelding is weg en formulier wordt verstuurt, sorry...

Denk dat ik de hoop op een goed werkend script maar langzaam moet gaan opzeggen, nu de hele dag er al mee bezig geweest en zit aardig vast nu.
Vind ik raar, want ik kan geen spatie invoeren en verzenden.
Ik zal het eens beetje proberen uit te zoeken met die preg_match gedoe.
Ik snap er de ballen van zelf namelijk.

Hoop niet opgeven, vandaag of morgen komt er iemand met het juiste antwoord voor jou.
Waarom ga je pas valideren als één van de posts leeg zou zijn?

Haal deze regel eens weg of maak er isset() van:

if (empty($_POST['naam1']) or empty($_POST['naam2']) or empty($_POST['mail']) or empty($_POST['onderwerp']) or empty($_POST['bericht'])) {


[size=xsmall]Toevoeging op 07/08/2012 21:44:28:[/size]

Alle validaties kloppen van geen meter.

Ik heb overal één spatie ingezet en dit is het resultaat:

Het e-mailadres is niet geldig!
Het bericht moet minimaal 5 tekens lang zijn!

<?php
$_POST['naam1'] = ' ';
$_POST['naam2'] = ' ';
$_POST['mail'] = ' ';
$_POST['onderwerp'] = ' ';
$_POST['bericht'] = ' ';
/** Validate naam1 */
$naam1Pattern = '~^[a-z .\'-]+$~Di';
if ( !isset( $_POST['naam1'] ) or !preg_match( $naam1Pattern, $_POST['naam1'] ) )
{
echo "De voornaam is niet geldig!<br> \n";
}
/** Validate naam2 */
$naam2Pattern = '~^[a-z .\'-]+$~Di'; // waarom aanmaken? Kun je toch ook controleren met $naam1Pattern? Is zelfde.
if ( !isset( $_POST['naam2'] ) or !preg_match( $naam2Pattern, $_POST['naam2'] ) )
{
echo "De achternaam is niet geldig!<br> \n";
}
/** Validate e-mail address */
$mailPattern = '~^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$~Di';
if ( !isset( $_POST['mail'] ) or !preg_match( $mailPattern, $_POST['mail'] ) )
{
echo "Het e-mailadres is niet geldig!<br> \n";
}
/** Validate onderwerp */
$onderwerpPattern = '~^[a-z .\'-]+$~Di'; // waarom aanmaken? Kun je toch ook controleren met $naam1Pattern? Is zelfde.
if ( !isset( $_POST['onderwerp'] ) or !preg_match( $onderwerpPattern, $_POST['onderwerp'] ) )
{
echo "Het onderwerp is niet geldig!<br> \n";
}
/** Validate bericht */
if ( !isset( $_POST['bericht'] ) or strlen(trim($_POST['bericht'])) < 5)
{
echo "Het bericht moet minimaal 5 tekens lang zijn!<br><br> \n\n";
}
?>

[size=xsmall]Toevoeging op 07/08/2012 21:50:16:[/size]

Tevens wordt dit emailadres goedgekeurd: [email protected]

[size=xsmall]Toevoeging op 07/08/2012 21:52:53:[/size]

Het komt er dus op neer dat juist die $_POST['bericht'] de enige is die het een beetje goed doet.
Tja, dan weet ik het nu even niet meer?
Dat is dus waarom Noppes (waar is die trouwens?) altijd roept dat empty (meestal) niet gebruikt moet worden:

Returns FALSE if var exists and has a non-empty, non-zero value. Otherwise returns TRUE.

The following things are considered to be empty:

"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
$var; (a variable declared, but without a value)

Een spatie wordt niet gezien als empty --> dus zoals SanThe aangeeft klopt de hele controle niet. Oplossing van SanThe dus toepassen.


[size=xsmall]Toevoeging op 07/08/2012 21:57:00:[/size]

naam verwijderd op 07/08/2012 21:53:13

Tja, waarom denk je dat ik hulp vraag, om te horen dat het niet klopt...? Heb niets aan je reactie op deze manier, heb al aangegeven dat ik een leek ben, daarom zoek ik hulp op deze site...?

Die krijg je toch?!?!???? Kom op zeg.

Reageren