Beste SD-ers,
Ben even voor kennis bezig met een mail script, alleen ik loop vast in de verwerking. Het gaat om de volgende punten.
Ik krijg in de email, die verstuurd wordt bovenaan nogmaals de email, die is ingevoerd. Dit is helemaal niet de bedoeling en ik snap het niet want ik roep hem ook nergens op. Ook heb ik een probleem met meerdere gegevens te gelijk onder één naam te verzenden.
Er word namelijk gebruik gemaakt van checkboxen en nu wil ik dat meerdere aanvinkbaar zijn en ook daadwerkelijk worden doorgestuurd. Maar ik krijg maar één resultaat.
Een email, die ik binnen krijg ziet er alsvolgt uit:
text
De volgende aanvraag kwam binnen:
Naam kind: jason
Groep kind: 2
Voorkeursdag(en): donderdag
Naam ouder: henk
Postcode:89734JH
Adres: slag 17
Woonplaats: henk
Email: email@email.nl
Dit is een automatisch gegenereerde e-mail. Antwoorden hierop is niet mogelijk.
Daarbij is de volgende code gebruikt:
Hopelijk ziet iemand me foutje...PHP Code:
<html>
<head>
<title> Eelco Teuthof </title>
<style type="text/css">
<!--
body
{
text-color: #000000;
background-color: #ffffff;
margin: 0px auto;
}
#container
{
width: 100%;
margin: 0px auto;
}
fieldset {
padding: 1em;
font:80%/1 sans-serif;
}
label {
float:left;
width:25%;
margin-right:0.5em;
padding-top:0.2em;
text-align:right;
font-weight:bold;
}
-->
</style>
</head>
<body>
<?php
if($_SERVER['REQUEST_METHOD'] === 'POST')
{
$errors = array();
if(!isset($_POST['kind']) || trim($_POST['kind']) == '' )
{
$errors[] = 'U bent de naam van uw kind vergeten in te vullen.';
}
if(!isset($_POST['groep']) || trim($_POST['groep']) == '' )
{
$errors[] = 'U bent de groep van uw kind vergeten in te vullen.';
}
if(!isset($_POST['voorkeur']) || trim($_POST['voorkeur']) == '' )
{
$errors[] = 'U bent uw voorkeursdag vergeten in te vullen.';
}
if(!isset($_POST['ouder']) || trim($_POST['ouder']) == '' )
{
$errors[] = 'U bent uw naam vergeten in te vullen.';
}
if(!isset($_POST['adres']) || trim($_POST['adres']) == '' )
{
$errors[] = 'U bent uw adres vergeten in te vullen.';
}
if(!isset($_POST['postcode']) || trim($_POST['postcode']) == '' )
{
$errors[] = 'U bent uw postcode vergeten in te vullen.';
}
if(!isset($_POST['woonplaats']) || trim($_POST['woonplaats']) == '' )
{
$errors[] = 'U bent uw woonplaats vergeten in te vullen.';
}
if(!isset($_POST['controle']) || trim($_POST['controle']) == '' )
{
$errors[] = 'U bent de som vergeten uit te rekenen. Dit moet in verband met spam.';
}
if(!isset($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
{
$errors[] = 'U bent uw email vergeten in te vullen of het is een niet bestaande email.';
}
if(count($errors) == 0)
{
$naam_kind = $_POST['kind'];
$groep_kind = $_POST['groep'];
$voorkeursdag .= $_POST['voorkeur'];
$ouder = $_POST['ouder'];
$postcode = $_POST['postcode'];
$adres = $_POST['adres'];
$woonplaats = $_POST['woonplaats'];
$controle = $_POST['controle'];
$mail = $_POST['email'];
if($controle != '10')
{
echo '5+5=10 en niet: '.$controle;
echo 'U wordt automatisch terug gestuurd.
<meta http-equiv="refresh" content="2; URL=contact.php">';
}
else
{
$to = 'mijnemail@email.nl';
$header = 'Aanvraag';
$afzender = 'no-reply@mijnemail.nl';
$server = 'server';
ini_set("SMTP",$server);
$body='
De volgende aanvraag kwam binnen:
Naam kind: '.$naam_kind.'
Groep kind: '.$groep_kind.'
Voorkeursdag(en): '.$voorkeursdag.'
Naam ouder: '.$ouder.'
Postcode: '.$postcode.'
Adres: '.$adres.'
Woonplaats: '.$woonplaats.'
Email: '.$mail.'
Dit is een automatisch gegenereerde e-mail. Antwoorden hierop is niet mogelijk.';
mail($to, $header, $body, $afzender);
echo 'U aanmelding is verzonden.';
}
}
else
{
echo 'De volgende fout(en) zijn opgetreden:<br />';
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
echo '<meta http-equiv="refresh" content="2; URL=contact.php">';
}
}
else
{
echo '
<form action="contact.php" method="post">
<fieldset>
<legend>Formuliertje</legend>
<label for="kind">Naam Leerling:</label>
<input type="text" name="kind" />
<br />
<label for="groep">Groep Leerling:</label>
<select name="groep">
<option value="">Selecteer groep</option>
<option value="1">Groep 1</option>
<option value="2">Groep 2</option>
<option value="3">Groep 3</option>
<option value="4">Groep 4</option>
<option value="5">Groep 5</option>
<option value="6">Groep 6</option>
<option value="7">Groep 7</option>
<option value="8">Groep 8</option>
</select>
<br />
<label for="voorkeur">Voorkeursdag:</label>
Ma:<input type="checkbox" name="voorkeur" value="maandag" />
Di:<input type="checkbox" name="voorkeur" value="dinsdag" />
Wo:<input type="checkbox" name="voorkeur" value="woensdag" />
Do:<input type="checkbox" name="voorkeur" value="donderdag" />
vr:<input type="checkbox" name="voorkeur" value="vrijdag" />
Za:<input type="checkbox" name="voorkeur" value="zaterdag" />
Zo:<input type="checkbox" name="voorkeur" value="zondag" />
<br />
<label for="ouder">Naam ouder/verzorger:</label>
<input type="text" name="ouder" />
<br />
<label for="adres">Adres</label>
<input type="text" name="adres" />
<br />
<label for="postcode">Postcode:</label>
<input type="text" name="postcode" max-length="6" />
<br />
<label for="woonplaats">Woonplaats:</label>
<input type="text" name="woonplaats" />
<br />
<label for="email">E-mail:</label>
<input type="text" name="email" />
<br />
<label for="controle">5+5=</label>
<input type="text" name="controle" />
<br />
<input type="submit" name="submit" value="Verzenden" />
</fieldset>
</form>
';
}
?>
</body>
</html>
Stefan
- Php Mail
-
05-03-2010, 19:24 #1
- Berichten
- 651
- Lid sinds
- 17 Jaar
Php Mail
-
-
05-03-2010, 20:33 #2
- Berichten
- 257
- Lid sinds
- 15 Jaar
De 4e parameter van de mail() function is volgens mij niet correct:
Maar hiervan:
PHP Code:mail($to, $header, $body, 'From: '.$afzender);
Aangezien je meerdere checkboxes gebruikt en er worden ook daadwerkelijk meerdere checkboxen aangevinkt dat worden de waarden van de aangevinkte checkboxen in een array aan PHP aangeboden.
Je zou dus kunnen controleren of de variabele $_POST['voorkeur'] bestaat en een array is. Zo ja, gebruik dan bijvoorbeeld implode(', ',$_POST['voorkeur']). Ik weet zo uit mijn hoofd niet hoe de variabele $_POST['voorkeur'] eruit ziet als er slechts één vinkje is geselecteerd. Dat moet je even zelf testen of nazoeken.
Verder is het denk ik belangrijk om de $_POST variabelen is voorzichtiger te behandelen. Even door wat functies halen voor de veiligheid
-
05-03-2010, 21:13 #3
- Berichten
- 940
- Lid sinds
- 16 Jaar
Beste SD-ers,
Ben even voor kennis bezig met een mail script, alleen ik loop vast in de verwerking. Het gaat om de volgende punten.
Ik krijg in de email, die verstuurd wordt bovenaan nogmaals de email, die is ingevoerd. Dit is helemaal niet de bedoeling en ik snap het niet want ik roep hem ook nergens op. Ook heb ik een probleem met meerdere gegevens te gelijk onder één naam te verzenden.
Er word namelijk gebruik gemaakt van checkboxen en nu wil ik dat meerdere aanvinkbaar zijn en ook daadwerkelijk worden doorgestuurd. Maar ik krijg maar één resultaat.
Een email, die ik binnen krijg ziet er alsvolgt uit:
text
De volgende aanvraag kwam binnen:
Naam kind: jason
Groep kind: 2
Voorkeursdag(en): donderdag
Naam ouder: henk
Postcode:89734JH
Adres: slag 17
Woonplaats: henk
Email:
Dit is een automatisch gegenereerde e-mail. Antwoorden hierop is niet mogelijk.
Daarbij is de volgende code gebruikt:
PHP Code:<html>
<head>
<title> Eelco Teuthof </title>
<style type="text/css">
<!--
body
{
text-color: #000000;
background-color: #ffffff;
margin: 0px auto;
}
#container
{
width: 100%;
margin: 0px auto;
}
fieldset {
padding: 1em;
font:80%/1 sans-serif;
}
label {
float:left;
width:25%;
margin-right:0.5em;
padding-top:0.2em;
text-align:right;
font-weight:bold;
}
-->
</style>
</head>
<body>
<?php
if($_SERVER['REQUEST_METHOD'] === 'POST')
{
$errors = array();
if(!isset($_POST['kind']) || trim($_POST['kind']) == '' )
{
$errors[] = 'U bent de naam van uw kind vergeten in te vullen.';
}
if(!isset($_POST['groep']) || trim($_POST['groep']) == '' )
{
$errors[] = 'U bent de groep van uw kind vergeten in te vullen.';
}
if(!isset($_POST['voorkeur']) || trim($_POST['voorkeur']) == '' )
{
$errors[] = 'U bent uw voorkeursdag vergeten in te vullen.';
}
if(!isset($_POST['ouder']) || trim($_POST['ouder']) == '' )
{
$errors[] = 'U bent uw naam vergeten in te vullen.';
}
if(!isset($_POST['adres']) || trim($_POST['adres']) == '' )
{
$errors[] = 'U bent uw adres vergeten in te vullen.';
}
if(!isset($_POST['postcode']) || trim($_POST['postcode']) == '' )
{
$errors[] = 'U bent uw postcode vergeten in te vullen.';
}
if(!isset($_POST['woonplaats']) || trim($_POST['woonplaats']) == '' )
{
$errors[] = 'U bent uw woonplaats vergeten in te vullen.';
}
if(!isset($_POST['controle']) || trim($_POST['controle']) == '' )
{
$errors[] = 'U bent de som vergeten uit te rekenen. Dit moet in verband met spam.';
}
if(!isset($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
{
$errors[] = 'U bent uw email vergeten in te vullen of het is een niet bestaande email.';
}
if(count($errors) == 0)
{
$naam_kind = $_POST['kind'];
$groep_kind = $_POST['groep'];
$voorkeursdag .= $_POST['voorkeur'];
$ouder = $_POST['ouder'];
$postcode = $_POST['postcode'];
$adres = $_POST['adres'];
$woonplaats = $_POST['woonplaats'];
$controle = $_POST['controle'];
$mail = $_POST['email'];
if($controle != '10')
{
echo '5+5=10 en niet: '.$controle;
echo 'U wordt automatisch terug gestuurd.
<meta http-equiv="refresh" content="2; URL=contact.php">';
}
else
{
$to = 'mijnemail@email.nl';
$header = 'Aanvraag';
$afzender = 'no-reply@mijnemail.nl';
$server = 'server';
ini_set("SMTP",$server);
$body='
De volgende aanvraag kwam binnen:
Naam kind: '.$naam_kind.'
Groep kind: '.$groep_kind.'
Voorkeursdag(en): '.$voorkeursdag.'
Naam ouder: '.$ouder.'
Postcode: '.$postcode.'
Adres: '.$adres.'
Woonplaats: '.$woonplaats.'
Email: '.$mail.'
Dit is een automatisch gegenereerde e-mail. Antwoorden hierop is niet mogelijk.';
mail($to, $header, $body, 'From: '.$afzender);
echo 'U aanmelding is verzonden.';
}
}
else
{
echo 'De volgende fout(en) zijn opgetreden:<br />';
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
echo '<meta http-equiv="refresh" content="2; URL=contact.php">';
}
}
else
{
echo '
<form action="contact.php" method="post">
<fieldset>
<legend>Formuliertje</legend>
<label for="kind">Naam Leerling:</label>
<input type="text" name="kind" />
<br />
<label for="groep">Groep Leerling:</label>
<select name="groep">
<option value="">Selecteer groep</option>
<option value="1">Groep 1</option>
<option value="2">Groep 2</option>
<option value="3">Groep 3</option>
<option value="4">Groep 4</option>
<option value="5">Groep 5</option>
<option value="6">Groep 6</option>
<option value="7">Groep 7</option>
<option value="8">Groep 8</option>
</select>
<br />
<label for="voorkeur">Voorkeursdag:</label>
Ma:<input type="checkbox" name="voorkeur" value="maandag" />
Di:<input type="checkbox" name="voorkeur" value="dinsdag" />
Wo:<input type="checkbox" name="voorkeur" value="woensdag" />
Do:<input type="checkbox" name="voorkeur" value="donderdag" />
vr:<input type="checkbox" name="voorkeur" value="vrijdag" />
Za:<input type="checkbox" name="voorkeur" value="zaterdag" />
Zo:<input type="checkbox" name="voorkeur" value="zondag" />
<br />
<label for="ouder">Naam ouder/verzorger:</label>
<input type="text" name="ouder" />
<br />
<label for="adres">Adres</label>
<input type="text" name="adres" />
<br />
<label for="postcode">Postcode:</label>
<input type="text" name="postcode" max-length="6" />
<br />
<label for="woonplaats">Woonplaats:</label>
<input type="text" name="woonplaats" />
<br />
<label for="email">E-mail:</label>
<input type="text" name="email" />
<br />
<label for="controle">5+5=</label>
<input type="text" name="controle" />
<br />
<input type="submit" name="submit" value="Verzenden" />
</fieldset>
</form>
';
}
?>
</body>
</html>
Stefan
-
06-03-2010, 07:00 #4
- Berichten
- 257
- Lid sinds
- 15 Jaar
Zo dus? Werkt hier niet..
Aanvullend bericht:
Onderstaande werkt als je de mail-adressen aanpast en eventueel de mail-server.
Merk op de vierkante haken in de 'name' attributen van de checkboxen (in het html form) en de implode functie.
Wellicht moet de check op $_POST['voorkeur'] aangepast worden. Ik weet niet of het handig is om die te checken zoals het nu gebeurt.
PHP Code:<html>
<head>
<title> Eelco Teuthof </title>
<style type="text/css">
<!--
body
{
text-color: #000000;
background-color: #ffffff;
margin: 0px auto;
}
#container
{
width: 100%;
margin: 0px auto;
}
fieldset {
padding: 1em;
font:80%/1 sans-serif;
}
label {
float:left;
width:25%;
margin-right:0.5em;
padding-top:0.2em;
text-align:right;
font-weight:bold;
}
-->
</style>
</head>
<body>
<?php
if($_SERVER['REQUEST_METHOD'] === 'POST')
{
echo '<pre>';
print_r($_POST);
echo '</pre>';
$errors = array();
if(!isset($_POST['kind']) || trim($_POST['kind']) == '' )
{
$errors[] = 'U bent de naam van uw kind vergeten in te vullen.';
}
if(!isset($_POST['groep']) || trim($_POST['groep']) == '' )
{
$errors[] = 'U bent de groep van uw kind vergeten in te vullen.';
}
if(!is_array($_POST['voorkeur']) AND (!isset($_POST['voorkeur']) || trim($_POST['voorkeur']) == ''))
{
$errors[] = 'U bent uw voorkeursdag vergeten in te vullen.';
}
if(!isset($_POST['ouder']) || trim($_POST['ouder']) == '' )
{
$errors[] = 'U bent uw naam vergeten in te vullen.';
}
if(!isset($_POST['adres']) || trim($_POST['adres']) == '' )
{
$errors[] = 'U bent uw adres vergeten in te vullen.';
}
if(!isset($_POST['postcode']) || trim($_POST['postcode']) == '' )
{
$errors[] = 'U bent uw postcode vergeten in te vullen.';
}
if(!isset($_POST['woonplaats']) || trim($_POST['woonplaats']) == '' )
{
$errors[] = 'U bent uw woonplaats vergeten in te vullen.';
}
if(!isset($_POST['controle']) || trim($_POST['controle']) == '' )
{
$errors[] = 'U bent de som vergeten uit te rekenen. Dit moet in verband met spam.';
}
if(!isset($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
{
$errors[] = 'U bent uw email vergeten in te vullen of het is een niet bestaande email.';
}
if(count($errors) == 0)
{
$naam_kind = $_POST['kind'];
$groep_kind = $_POST['groep'];
$voorkeursdag = implode(', ',$_POST['voorkeur']);
$ouder = $_POST['ouder'];
$postcode = $_POST['postcode'];
$adres = $_POST['adres'];
$woonplaats = $_POST['woonplaats'];
$controle = $_POST['controle'];
$mail = $_POST['email'];
if($controle != '10')
{
echo '5+5=10 en niet: '.$controle;
echo 'U wordt automatisch terug gestuurd.
<meta http-equiv="refresh" content="2; URL=contact.php">';
}
else
{
$to = 'contact@mail.nl';
$header = 'Aanvraag';
$afzender = 'no-reply@mail.nl';
$server = 'localhost';
ini_set("SMTP",$server);
$body='
De volgende aanvraag kwam binnen:
Naam kind: '.$naam_kind.'
Groep kind: '.$groep_kind.'
Voorkeursdag(en): '.$voorkeursdag.'
Naam ouder: '.$ouder.'
Postcode: '.$postcode.'
Adres: '.$adres.'
Woonplaats: '.$woonplaats.'
Email: '.$mail.'
Dit is een automatisch gegenereerde e-mail. Antwoorden hierop is niet mogelijk.';
mail($to, $header, $body, 'From: '.$afzender);
echo 'U aanmelding is verzonden.';
}
}
else
{
echo 'De volgende fout(en) zijn opgetreden:<br />';
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
echo '<meta http-equiv="refresh" content="2; URL=contact.php">';
}
}
else
{
echo '
<form action="contact.php" method="post">
<fieldset>
<legend>Formuliertje</legend>
<label for="kind">Naam Leerling:</label>
<input type="text" name="kind" />
<br />
<label for="groep">Groep Leerling:</label>
<select name="groep">
<option value="">Selecteer groep</option>
<option value="1">Groep 1</option>
<option value="2">Groep 2</option>
<option value="3">Groep 3</option>
<option value="4">Groep 4</option>
<option value="5">Groep 5</option>
<option value="6">Groep 6</option>
<option value="7">Groep 7</option>
<option value="8">Groep 8</option>
</select>
<br />
<label for="voorkeur">Voorkeursdag:</label>
Ma:<input type="checkbox" name="voorkeur[]" value="maandag" />
Di:<input type="checkbox" name="voorkeur[]" value="dinsdag" />
Wo:<input type="checkbox" name="voorkeur[]" value="woensdag" />
Do:<input type="checkbox" name="voorkeur[]" value="donderdag" />
vr:<input type="checkbox" name="voorkeur[]" value="vrijdag" />
Za:<input type="checkbox" name="voorkeur[]" value="zaterdag" />
Zo:<input type="checkbox" name="voorkeur[]" value="zondag" />
<br />
<label for="ouder">Naam ouder/verzorger:</label>
<input type="text" name="ouder" />
<br />
<label for="adres">Adres</label>
<input type="text" name="adres" />
<br />
<label for="postcode">Postcode:</label>
<input type="text" name="postcode" max-length="6" />
<br />
<label for="woonplaats">Woonplaats:</label>
<input type="text" name="woonplaats" />
<br />
<label for="email">E-mail:</label>
<input type="text" name="email" />
<br />
<label for="controle">5+5=</label>
<input type="text" name="controle" />
<br />
<input type="submit" name="submit" value="Verzenden" />
</fieldset>
</form>
';
}
?>
</body>
</html>Laatst aangepast door Ruud van der Velden : 06-03-2010 om 08:50 Reden: Automatisch samengevoegd.
-
06-03-2010, 10:07 #5
- Berichten
- 651
- Lid sinds
- 17 Jaar
Beste Ruud,
Het werkte inderdaad zoals u het zei. Ik had nog even zitten rommelen en had het anders gedaan, maar u manier was de juiste. Hartelijk dank!
Zal voortaan ook meerdere checks door een formulier laten gaan, de informatie die u daarover gaf was enorm goed!
Hartelijk dank
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic