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
Heb de code geprobeerd (zie) hieronder, helaas werkt hij niet, sorry, hij geeft een foutmelding aan, namelijk error: Parse error: syntax error, unexpected T_IF in /volume1/web/xxxweb/TT/send5.php on line 123

/** Validate bericht */
if ( !isset( $_POST['bericht'] ) or if(strlen(trim($var)) < 5)
{
echo "Het bericht moet minimaal 5 tekens lang zijn!<br><br> \n\n";
}
Twee keer if() in één regel kan niet.

if ( !isset( $_POST['bericht'] ) or strlen(trim($var)) < 5)
@SanThe, heb je code gebruikt en geen foutmelding, maar hij loopt toch door als ik bij bericht een spatie of 1 teken gebruik, weet dat men niet een script wil aanpassen, maar geef toch voor de duidelijkheid mijn script nog een keer, dus eigenlijk wil ik nog maar twee dingen:

1) als men een of twee spaties geeft in een invulveld moet hij een foutmelding geven.
2) bij bericht ook geen spaties, maar ook meer dan 5 tekens, bij mijnder tekend ook foutmelding.

Is mij nog niet gelukt werkend te krijgen, zie hieronder het totale script:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml">;
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>send4</title>
</head>

<body
style="font-family: 'Franklin Gothic Book'; font-size: 16px; font: normal; background-color: #E7E0D2; ">


<?php
$mailsupport= "[email protected]";
$titel= "mijn domeinnaam - " .
$_POST['onderwerp'];

// set datum
$datum = date("d.m.Y H:i");

// set ip
$ip = $_SERVER['REMOTE_ADDR'];

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
$mssg .= "Ingevuld Contact Formulier \n\n";
$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 $datum van het ip adres " . $ip . ".";

//Afzender
$headers = "From: " . $_POST['naam1'] . $_POST['naam2'] . " <" . $_POST['mail'] . ">";
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';
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';
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($var)) < 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 {
mail ($mailsupport, $titel, $mssg, $headers);
header ("Refresh: 0; URL=verzonden.php");
}
}
?>
</body>
</html>
Je mailfunctie (headers) is incompleet. gebruik liever phpmailer/swiftmailer.
Wees consequent in het gebruik van ' en " --> php (echo) ' en html " (vergelijk regel 117/118)

Na header --> exit; Zou overigens nog een keer kijken naar jouw opbouw van header; heb het idee dat jouw syntax niet overkomt met de standaard (op phpnet)

Je moet natuurlijk wel de code aanpassen aan jouw site. Waar komt $var vandaan? Dat zal, vermoedelijk $_POST['bericht'] moeten zijn.

Zet error reporting daarom, tijdens ontwerpen, altijd (boven)aan in je script.

Variabelen ($datum) buiten quotes.

Waarom eerst op allerlei $_POST variabelen controleren en aanmaken (regel 12-56) en een bericht aanmaken, terwijl je niet eens controleert of het formulier wel verzonden is?

Is het voor jezelf niet handiger om alleen dat onderwerp/die onderwerpen in de mail te laten zetten waarin men geïnteresseerd is, ipv elk onderwerp apart te noemen met wel/niet?

Uit interesse: als je het formulier onjuist/onvolledig hebt ingevuld en je klikt op de link om terug te gaan naar het formulier: zijn dan de velden nog ingevuld (of kun de bezoeker opnieuw beginnen met invoeren)?

Vraag:
Hoe veilig is het om $_POST-waarden direct in een bericht te zetten? Of kan daarvoor beter bv htmlspecialchars worden gebruikt?
Ik zou eerst eens zorgen dat er logica in je script zit. Je gebruikt nu eerst diverse $_POST-vars terwijl je aan het eind pas gaat kijken of er wel gepost is.
Het script voor mij op twee punten na goed werkend, dus alleen op deze twee punten zoek ik nog een oplossing...

naam verwijderd op 07/08/2012 16:10:07

Verder snap ik sommige opmerkingen niet daar ik een leek ben, dus tot zover iederen bedankt en graag alleen nog reacties die ik als leek ook echt kan gebruiken of dat iemand het geposte script wil bewerken en retour posten.

De tips/opmerkingen die geplaatst worden kun je, ook als leek, prima gebruiken en ik kan je alleen maar aanraden om ze ook te gebruiken, als je de site daadwerkelijk wilt gaan publiceren.
Je begint ergens aan (als leek) omdat je er interesse in hebt, iets wilt maken/bereiken. Dat betekent tijd investeren om kennis op te doen.

Er wordt je een bijna werkende oplossing aangeboden.
Oplossingen werken niet, dus hoezo bijna werkende oplossing, het werkt helemaal niet, ook niet bijna..., dus heb ik er niets aan en noem ik dit geen hulp, ik zou in zo'n geval iemand kosteloos helpen met een goed script... ipv opmerkingen plaatsen, maar laat maar gaan.. Thanks!
Obelix en Idefix op 07/08/2012 15:22:31

Je moet natuurlijk wel de code aanpassen aan jouw site. Waar komt $var vandaan? Dat zal, vermoedelijk $_POST['bericht'] moeten zijn.

Al geprobeerd????
Ja, heb alles al geprobeerd, sorry, kan er ook niet aan doen.

Reageren