Mailform
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
$joumail = "[email protected]";
mail("$joumail", "$onderwerp", "
Beste $joumail,
Je hebt een bericht ontvangen van $naam, $email $onderwerp .
Dit was zijn bericht:
$bericht
Met vriendelijke groet,
$joumail", "From: $naam; <$email>\nReturn-path: $email");
echo "We hebben je bericht ontvangen<br>";
echo "Over een paar dagen krijg je bericht terug!<br>";
?>
$joumail = "[email protected]";
mail("$joumail", "$onderwerp", "
Beste $joumail,
Je hebt een bericht ontvangen van $naam, $email $onderwerp .
Dit was zijn bericht:
$bericht
Met vriendelijke groet,
$joumail", "From: $naam; <$email>\nReturn-path: $email");
echo "We hebben je bericht ontvangen<br>";
echo "Over een paar dagen krijg je bericht terug!<br>";
?>
Mailform
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<form method="post" action="mailformsend.php" name="contact" id="contactForm">
<input name="$naam" type="text" id="textfield1" class="input1" value="Naam" onfocus="if(this.value=='Name'){this.value=''};" onblur="if(this.value==''){this.value='Name'};"/>
<input name="$email" type="text" id="textfield2" class="input1" value="email" onfocus="if(this.value=='email'){this.value=''};" onblur="if(this.value==''){this.value='E-mail'};"/>
<input name="$onderwerp" type="text" id="textfield3" class="input2" value="Website" onfocus="if(this.value=='Website'){this.value=''};" onblur="if(this.value==''){this.value='Website'};"/>
<div class="clear" style="height:20px"></div>
<textarea name="$bericht" rows="4" cols="20" id="textfield4" class="input3" onfocus="if(this.value=='Message'){this.value=''};" onblur="if(this.value==''){this.value='Message'};">Message</textarea>
<input type="submit" name="submit" value="Verstuur" class="submit-button" />
<input name="$naam" type="text" id="textfield1" class="input1" value="Naam" onfocus="if(this.value=='Name'){this.value=''};" onblur="if(this.value==''){this.value='Name'};"/>
<input name="$email" type="text" id="textfield2" class="input1" value="email" onfocus="if(this.value=='email'){this.value=''};" onblur="if(this.value==''){this.value='E-mail'};"/>
<input name="$onderwerp" type="text" id="textfield3" class="input2" value="Website" onfocus="if(this.value=='Website'){this.value=''};" onblur="if(this.value==''){this.value='Website'};"/>
<div class="clear" style="height:20px"></div>
<textarea name="$bericht" rows="4" cols="20" id="textfield4" class="input3" onfocus="if(this.value=='Message'){this.value=''};" onblur="if(this.value==''){this.value='Message'};">Message</textarea>
<input type="submit" name="submit" value="Verstuur" class="submit-button" />
Als je email verzend werkt perfect, ik ontvang hem ook , maar de naam , email , website en bericht worden niet weergeven in het bericht die ik op me email ontvang
iemand enige idee
Waarom dat dollarteken ervoor?
En Bovendien omdat je het via POST verstuurd, is het $_POST['naam'], waarin uiteindelijk de naam staat.
heb het nu veranderd naar :
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<form method="post" action="mailformsend.php" name="contact" id="contactForm">
<input name="$_POST['naam'] type="text" id="textfield1" class="input1" value="Naam" onfocus="if(this.value=='Name'){this.value=''};" onblur="if(this.value==''){this.value='Name'};"/>
<input name="$_POST['email']" type="text" id="textfield2" class="input1" value="email" onfocus="if(this.value=='email'){this.value=''};" onblur="if(this.value==''){this.value='E-mail'};"/>
<input name="$_POST['onderwerp']" type="text" id="textfield3" class="input2" value="Website" onfocus="if(this.value=='Website'){this.value=''};" onblur="if(this.value==''){this.value='Website'};"/>
<div class="clear" style="height:20px"></div>
<textarea name="$_POST['bericht']" rows="4" cols="20" id="textfield4" class="input3" onfocus="if(this.value=='Message'){this.value=''};" onblur="if(this.value==''){this.value='Message'};">Message</textarea>
<input type="submit" name="submit" value="Verstuur" class="submit-button" />
</form>
</div>
<input name="$_POST['naam'] type="text" id="textfield1" class="input1" value="Naam" onfocus="if(this.value=='Name'){this.value=''};" onblur="if(this.value==''){this.value='Name'};"/>
<input name="$_POST['email']" type="text" id="textfield2" class="input1" value="email" onfocus="if(this.value=='email'){this.value=''};" onblur="if(this.value==''){this.value='E-mail'};"/>
<input name="$_POST['onderwerp']" type="text" id="textfield3" class="input2" value="Website" onfocus="if(this.value=='Website'){this.value=''};" onblur="if(this.value==''){this.value='Website'};"/>
<div class="clear" style="height:20px"></div>
<textarea name="$_POST['bericht']" rows="4" cols="20" id="textfield4" class="input3" onfocus="if(this.value=='Message'){this.value=''};" onblur="if(this.value==''){this.value='Message'};">Message</textarea>
<input type="submit" name="submit" value="Verstuur" class="submit-button" />
</form>
</div>
maar nog steeds word het helaas niet weergeven
!
$_POST is de variabele met inhoud VAN je formulier. Deze kan je natuurlijk niet als name gebruiken. De naam is niets anders dan een unieke naam voor je velden: Naam, e-mail, onderwerp.
In je PHP-script kan je vervolgens je $_POST variabelen gebruiken.
Gewijzigd op 12/10/2013 16:15:47 door - Ariën -
Je moet je headers goed isntellen... Doe je dit niet, dan zal je veel problemen hebben met het stylen van je bericht, en dat ie in de ongewenste map terecht komt en dat wil je denk ik niet
in zijn simpelste vorm zou ik zoiets doen. Maar corrigeer me gerust als ik het verkeerd doe of te omslachtig.
Het formulier.
Code (php)
1
2
3
4
5
2
3
4
5
<form method="post" action="mailer.php">
<input type="text" name="naam" size="20" value="$naam" />
<input type="text" name="email" size="20" value="$email" />
<input type="submit" name="verzonden" value="verzenden" />
</form>
<input type="text" name="naam" size="20" value="$naam" />
<input type="text" name="email" size="20" value="$email" />
<input type="submit" name="verzonden" value="verzenden" />
</form>
de php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
if(isset($_POST["verzonden"]) && $_POST["verzonden"] == "verzenden"){
$naam = $_POST["naam"];
$email = $_POST["email"];
$mailbody = <<<MAIL
Hoi iemand,\n\r\n\r
$naam heeft je een bericht gestuurd.\n\r
je kunt hem bereiken op $email.\n\r\n\r
Vriendelijke groet,\n\r\n\r
Je mailform.\n\r
MAIL;
$send = "[email protected]";
$headers = "from: [email protected]\n\rreply-to: [email protected]";
$titel = "Reactie via je mailform";
$controle = mail($send, $titel, $mailbody, $headers);
if(!controle){
echo("Oeps. Er is iets fout gegaan bij het verzenden");
}
}else{
//laat formulier zien...
}
?>
if(isset($_POST["verzonden"]) && $_POST["verzonden"] == "verzenden"){
$naam = $_POST["naam"];
$email = $_POST["email"];
$mailbody = <<<MAIL
Hoi iemand,\n\r\n\r
$naam heeft je een bericht gestuurd.\n\r
je kunt hem bereiken op $email.\n\r\n\r
Vriendelijke groet,\n\r\n\r
Je mailform.\n\r
MAIL;
$send = "[email protected]";
$headers = "from: [email protected]\n\rreply-to: [email protected]";
$titel = "Reactie via je mailform";
$controle = mail($send, $titel, $mailbody, $headers);
if(!controle){
echo("Oeps. Er is iets fout gegaan bij het verzenden");
}
}else{
//laat formulier zien...
}
?>
Gewijzigd op 12/10/2013 16:53:43 door Arjan van Rijs
heb het aangepast na hoe jij het vermelde.
maar helaas werkt niet krijg de emails niet binnen
is je formulier een (alleen)HTML-pagina, of genereer je deze dynamisch? Als je pure HTML gebruikt dan moet je namelijk escapen om het gewenste resultaat te krijgen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
[code]<?php
//even zonder foutcontrole, wat je op een live-site nooit moet doen!
$naam = $_POST["naam"];//merk op dat dit de name-identifier is die je in je formulier hebt staan bij het veld naam
$email = $_POST["email"];//zelfde verhaal, maar nu email. Nu kun je de variabelen gebruiken.
?>
<!DOCTYPE = html>
<html lang="nl">
<head>
<title>
Mailform
</title>
</head>
<body>
<form method="post" action="mailer.php">
<input type="text" name="naam" size="20" value="<?php echo($naam)?>" /><!--hier escape je de html en zet je de browser even in de php-mode om de $naam die je eerder uit de $_POST-array gehaald hebt te laten zien. Dit heeft eigenlijk alleen zin als je foutcontrole uitvoert en er een fout is geconstateerd. Dan kun je de gebruiker een formulier mt gegevens teruggeven in plaats van een leeg formulier dat dan weer helemaal ingevuld moet worden.-->
<input type="text" name="email" size="20" value="<?php echo($email)?>" />
<input type="submit" name="verzonden" value="verzenden" />
</form>
</body>
?>
[code]<?php
//even zonder foutcontrole, wat je op een live-site nooit moet doen!
$naam = $_POST["naam"];//merk op dat dit de name-identifier is die je in je formulier hebt staan bij het veld naam
$email = $_POST["email"];//zelfde verhaal, maar nu email. Nu kun je de variabelen gebruiken.
?>
<!DOCTYPE = html>
<html lang="nl">
<head>
<title>
Mailform
</title>
</head>
<body>
<form method="post" action="mailer.php">
<input type="text" name="naam" size="20" value="<?php echo($naam)?>" /><!--hier escape je de html en zet je de browser even in de php-mode om de $naam die je eerder uit de $_POST-array gehaald hebt te laten zien. Dit heeft eigenlijk alleen zin als je foutcontrole uitvoert en er een fout is geconstateerd. Dan kun je de gebruiker een formulier mt gegevens teruggeven in plaats van een leeg formulier dat dan weer helemaal ingevuld moet worden.-->
<input type="text" name="email" size="20" value="<?php echo($email)?>" />
<input type="submit" name="verzonden" value="verzenden" />
</form>
</body>
?>
Dat kan. Ikzelf geef de voorkeur aan mijn eerdere voorbeeld waarin het formulier dynamisch wordt gegenereerd. Probeer eens wat er gebeurt als je de formuliercode op de plaats van het commentaar (laat formulier zien...), op deze manier plaatst:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
if(!$naam){
$naam = "";//als je dit niet doet krijg je meldingen dat de variabele niet bestaat
}
if(!email){
$email = "";//idem.
}
$formulier = <<<FORM
<!DOCTYPE = html>
<html lang="nl">
<head>
<title>
Mailform
</title>
</head>
<body>
<form method="post" action="mailer.php">
<input type="text" name="naam" size="20" value="$naam" />
<input type="text" name="email" size="20" value="$email" />
<input type="submit" name="verzonden" value="verzenden" />
</form>
</body>
</html>
FORM;
echo($formulier);
?>
if(!$naam){
$naam = "";//als je dit niet doet krijg je meldingen dat de variabele niet bestaat
}
if(!email){
$email = "";//idem.
}
$formulier = <<<FORM
<!DOCTYPE = html>
<html lang="nl">
<head>
<title>
Mailform
</title>
</head>
<body>
<form method="post" action="mailer.php">
<input type="text" name="naam" size="20" value="$naam" />
<input type="text" name="email" size="20" value="$email" />
<input type="submit" name="verzonden" value="verzenden" />
</form>
</body>
</html>
FORM;
echo($formulier);
?>
Noem je bestand mailer.php en probeer het eens uit. Gebruik nooit zo'n simpel script op een live-server behalve voor de tijd die je nodig hebt om het te testen. Oh, mocht je vreemde foutmeldingen krijgen bij het testen: de <<<MAIL enz is een HEREDOC-syntaxis. Zorg ervoor dat er na de laatste letter van de identifier (MAIL) en de afsluitende MAIL; NIETS! staat, dus ook geen enkele vorm van witruimte.
Succes.
Arjan
ps: ik heb je pb gelezen. Stel je vragen gewoon hier zodat anderen er ook wijzer van worden en belangrijker, zodat er ook anderen naar kijken; ik ben ook maar een hobbyist.
Gewijzigd op 13/10/2013 14:32:50 door Arjan van Rijs