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
Sorry hoor. Ik stop hier mijn tijd in om de oorzaak te vinden van het probleem. En nu ik dat gevonden heb lijkt het mij redelijk dat ik dat hier vermeld zodat de rest van de helpers niet verder hoeft te zoeken. Maar als dat niet okee is dan zoek je het toch lekker zelf uit.
Sorry, maar ik heb al gezegd dat ik een leek ben en niet een programmeur, sorry maar ben het spoor kwijt.


Maakt niet uit dat je een leek bent. Maar reageer voortaan wat vriendelijker. Ik heb er zojuist bijna een half uur mee zitten klooien en testen totdat ik zag waar de fout zat. Ik doe dit wel in mijn eigen vrije tijd.

Maar zand erover.
Vertel eens wat de eisen zijn voor de velden.
Dus:
Voornaam: welke chars wil je toestaan en minimaal hoelang?
Idem voor de rest.
Dat je een leek bent, weten we nu wel een keer.
Het is alleen jammer dat je elke keer op zo'n manier reageert. Vervelend dat het je niet lukt, maar volgens mij wordt (/werd) er druk met je meegedacht om een oplossing te vinden. En SanThe heeft volgens mij de uiteindelijke oplossing ook gevonden (en gegeven). Ik geef nog een keer een uitleg er bij. En het enige wat jij kunt doen is negatief reageren.
Beetje jammer en zonde van mijn tijd.
Succes verder, ik ga mensen proberen te helpen die het wel waarderen....
@SanThe, ik zou heel graag de volgende velden willen hebben:

Voornaam: Geen spaties in het begin (als het kan) anders helemaal geen spaties toestaan verder alleen letters, lengte normaal (kies maar wat gebruikelijk is).
Achternaam: Idem als voornaam
Telefoonnummer: alleen cijfers en het - teken
E-mail: de standaard (die weet ik niet betreft tekens)
Onderwerp: Hetzelfde als voornaam denk ik, lengte normaal
Bericht: Geen spaties in het begin en ongeveer 200 tekens? denk ik

Voor de rest maakt het niet zo veel uit als hij maar niet door de foutmeldingen heen loopt.

Heb hem nu in een iFrame gezet, omdat ik dan het formulier en de foutmeldingen in een venster heb op de zelfde pagina en heb er de standaard pagina eromheen gemaakt.

Het script wat ik eerder heb gepost was oke, alleen niet de validate, dus ik ben al blij met een goede validatie en check of het empty is, denk ik....

Nogmaals sorry en bedankt alvast.

Omdat ik blijkbaar in een goede bui ben heb ik je hele script aangepast.

Let op het commentaar op de ######### regels #########
Daar moet nog wel wat aan gedaan worden. Verder moet je zelf de diverse $length aanpassen naar de waarde die jij wilt hebben. Ook kun je eventueel de patterns voor de preg_match() aanpassen.

Het script geeft hier geen fouten.

<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

function checkemail($email)
{
// Kijk of er een @ in zit, zo nee false
if(!stristr($email, '@'))
{
return false;
}
$email_split = explode("@", $email);
// Er mag slecht één @ inzitten dus het array moet 2 records tellen
if(count($email_split) != 2)
{
return false;
}
$email_user = $email_split[0];
$email_host = $email_split[1];
// Kijk of er MX-servers zijn, zo nee false
if(!getmxrr($email_host, $var))
{
return false;
}
// Kijk of het usergedeelte okee is, zo nee false
if(!preg_match("/^[0-9a-z]([-_.~]?[0-9a-z])*$/i", $email_user))
{
return false;
}
return true;
}

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
//Validatie
$errors = array();

/** Validate naam1 */
$length = 2;
$naam1 = (isset($_POST['naam1'])) ? trim($_POST['naam1']) : '';
$naam1Pattern = '/^[ÄËÏÖÜŸÀÈÌÒÙÁÉÍÓÚÝÂÊÎÔÛäëïöüÿàèìòùáéíóúýâêîôûãõÇçA-Za-z]+$/';
if(($naam1 == '') or !(strlen($naam1) >= $length and preg_match($naam1Pattern, $naam1)))
{
$errors[] = "De voornaam is niet geldig!<br> \n";
}

/** Validate naam2 */
$length = 5;
$naam2 = (isset($_POST['naam2'])) ? trim($_POST['naam2']) : '';
$naam2Pattern = '/^[ÄËÏÖÜŸÀÈÌÒÙÁÉÍÓÚÝÂÊÎÔÛäëïöüÿàèìòùáéíóúýâêîôûãõÇçA-Za-z]+$/';
if(($naam2 == '') or !(strlen($naam2) >= $length and preg_match($naam2Pattern, $naam2)))
{
$errors[] = "De achternaam is niet geldig!<br> \n";
}

/** Validate e-mail address */
$mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : '';
if(!checkemail($mail))
{
$errors[] = "Het e-mailadres is niet geldig!<br> \n";
}

/** Validate onderwerp */
$length = 5;
$onderwerp = (isset($_POST['onderwerp'])) ? trim($_POST['onderwerp']) : '';
$onderwerpPattern = '/^[ÄËÏÖÜŸÀÈÌÒÙÁÉÍÓÚÝÂÊÎÔÛäëïöüÿàèìòùáéíóúýâêîôûãõÇçA-Za-z]+$/';
if(($onderwerp == '') or !(strlen($onderwerp) >= $length and preg_match($onderwerpPattern, $onderwerp)))
{
$errors[] = "Het onderwerp is niet geldig!<br> \n";
}

/** Validate telefoon */
$telefoon = (isset($_POST['telefoon'])) ? trim($_POST['telefoon']) : '';
$telefoonPattern = '/^[0-9\-]+$/';
if(($telefoon == '') or !(preg_match($telefoonPattern, $telefoon)))
{
$errors[] = "Het telefoonnummer is niet geldig!<br> \n";
}

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

if(count($errors) > 0)
{
foreach($errors as $line)
{
echo $line;
}
echo '<br>Sorry, maar helaas ben u iets vergeten, of heeft u iets verkeerd ingevuld!!<br><br>';
echo '<button type="button" onclick="history.go(-1);">Terug naar formulier</button>';
}
else
{
$kaartleggen = (isset($_POST['kaartleggen'])) ? "Ja, wel informatie" : "Nee, geen informatie";
$orakel = (isset($_POST['orakel'])) ? "Ja, wel informatie" : "Nee, geen informatie";
$tenen = (isset($_POST['tenen'])) ? "Ja, wel informatie" : "Nee, geen informatie";
$coaching = (isset($_POST['coaching'])) ? "Ja, wel informatie" : "Nee, geen informatie";
$individueel = (isset($_POST['individueel'])) ? "Ja, wel informatie" : "Nee, geen informatie";

// Bericht
$mailsupport= "[email protected]";
$titel= "mijn domeinnaam - " . $onderwerp;
$mssg = "Ingevuld Contact Formulier \n\n";
$mssg .= "Voornaam: " .$naam1 . "\n";
$mssg .= "Achternaam: " .$naam2 . "\n";
$mssg .= "Telefoon: " .$telefoon . "\n";
$mssg .= "E-mailadres: " .$mail . "\n";
$mssg .= "Onderwerp: " .$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";
################ tijdstip bestaat niet ######################################
// $mssg .= "Voorkeur voor tijdstip: " .$tijdstip . "\n";
$mssg .= "Bericht:" . "\n";
$mssg .= htmlentities($bericht) . "\n\n";
$mssg .= 'Dit bericht is verstuurd op'. date("d.m.Y H:i") .' van het ip adres ' . $_SERVER['REMOTE_ADDR'] . '.';

//Afzender
############################ headers zijn NIET correct #######################
$headers = "From: " . $naam1 .' '. $naam2 . " <" . $mail . ">";

####################### kijk liever naar phpmailer/swiftmailer ###############
mail($mailsupport, $titel, $mssg, $headers);
header('Location: http://www.example.com/location.php';);
exit();
}
}
?>
@SanThe, WOW enorm bedankt, script is top!!!

Nog twee vragen?

Weet jij toevallig hoe ik in dit script kan aangeven of een veld verplicht is of niet?

Bij achternaam is bijvooorbeeld [naam verwijderd] niet mogelijk, als ik een veld toevoeg met voorvoegsel kan ik hier dan de spatie functie wel toe laten staan en zo ja wat voor teken staat hiervoor, haal ik deze uit de Pattern.

Nogmaals top en bedankt, Hulde..
@ SanThe: waarom maak je drie variabelen aan, die gelijk zijn?
$naam1Pattern, $naam2Pattern en $onderwerpPattern ?
Obelix en Idefix op 08/08/2012 09:36:03

@ SanThe: waarom maak je drie variabelen aan, die gelijk zijn?
$naam1Pattern, $naam2Pattern en $onderwerpPattern ?


Dan is het simpeler om specifieke wijzigingen aan te brengen per onderdeel. Het was voor mij een gok of dit in de wens van TS zou liggen of dat TS andere ideeën heeft. Vandaar drie aparte vars.
@SanThe, klopt als een bus per onderdeel wijzigingen aanbrengen is voor mij inzichtelijker en hij geeft ook dan per onderdeel de foutregel weer en als men dit goed invult verwijderd deze regel etc, helemaal geweldig!

Ben nu aan het proberen om van telefoon geen verplicht veld te maken, bij mijn test heb ik de validatie eruit gehaald (natuurlijk het origineel goed bewaard), uiteraard zie ik dan de foutmelding niet meer, maar kan men ook alles intoetsen, weet je wellicht ook hoe een invoerveld verplicht of niet verplicht kan worden aangegeven, moet daarvoor een apart stuk erin gezet worden of kan je dit ook per onderdeel doen.

Ben nu aan het stoeien of ik bij achternaam alleen een spatie in het begin niet toesta.

Verder is het script waanzinnig!

Reageren