Welkom Gast! [Registreer] :: [Login]
Navigatie

Tutorials

Shoutbox
U dient in te loggen om een bericht te plaatsen.

08/09/2010 18:36
http://www.9lives.
be/ Wink

08/09/2010 17:07
hehe als je 9lives.com doet krijg je een kattensite xD

08/09/2010 17:06
Tuurlijk bestaat er een profspammer, die gasten verdienen daar hun brood mee. hoevaker iemand erop klikt hoe meer geld ze krijgen

08/09/2010 15:42
ff offtopic: de pc-samenstellers moeten eens meedoen aan de wedstrijd van 9lives "Win je zelfgemaakte Alternate.be Ultimate game-pc"

08/09/2010 15:34
bestaat er egt zoiets als prof spammer? laag...


Links

Registreer of log in
Om gebruik te maken van de volledige functionaliteit van Modbase moet je ingelogd zijn.
Na registratie kan je reageren, onderwerpen starten, projecten toevoegen en nog veel meer.

Dit is volkomen gratis en duurt hoogstens een minuut.

Registreer gratis
( Inloggen | Registreer gratis )

PHP Tutorials

Mailformulier



Inleiding
In deze tut leg ik de basics van een PHP-mailform uit.
Er is ook een HTMl-manier, maar die opent het standaard mailprogramma van de gebruiker (Outlook, gmail.com, ...).

Uitleg werking
Met dit basis-formulier, laten we de gebruiker enkele velden invullen, die dan direct worden doorgestuurd als de gebruiken op 'Zenden' klikt.

Wat moet er allemaal komen?
- Het PHP-document moet geopend worden en afgesloten. Net zoals HTML, heeft dit hiervoor een vaste waarde (zie hier onder).
- In ons script willen we natuurlijk ook dat er een formulier is.
- Het document moet natuurlijk ook doorgestuurd worden.

Indeling script
Script openen en sluiten
We openen en sluiten het PHP-script met onze vaste waarden

<? php
// hier komt de inhoud
?>


Het formulier
Bij het maken van een formulier, heb je verschillende opties om informatie te verkrijgen.
Je kan je bezoeker alles laten intypen of je kan hem een meerkeuze vraag stellen met 1 of meerde antwoorden.
Een formulier wordt geopend en gesloten met een vaste waarde:

<form action='PhpBasisMailform.php' method='POST'>
...
</form>


action: Naam (+ locatie indien niet in dezelfde folder) van het document met het script. Hier is dit gewoon de naam van dit document zelf
method: Manier van gegevens doorsturen. Kan POST of GET zijn
POST: geeft de gegevens onzichtbaar mee

www.mijndomein.be/formulier.php


GET: zet alle gegevens in de adresbalk (max. 100 tekens)
Kan handig zijn, maar ten zeerste af te raden bij wachtwoorden of lange/veel gegevens.

www.mijndomein.be/formulier.php?naam=Stijn&email=geheim.wegen@privacy.be&username=Ground Zero


De mogelijkheden:
Text
1 regel met een breedte die je zelf in kan stellen. Wordt gebruikt voor o.a. Naam, E-mailadres, ...
Textarea
Een vak waar er tekst in kan getypt worden, de hoogte en de breedte zijn in te stellen. Wordt gebruikt voor commentaar of een bericht.
Radiobutton
Een 'bolletje'. Wordt gebruikt om de bezoeker 1 keuze te laten maken uit verschillende dingen.
Checkbox
Het 'vinkje'. Wordt gebruikt om de bezoeker 1 of meerdere keuze(s) te laten maken uit verschillende dingen.
Select
Een lijst met mogelijkheden. Een beetje zoals radiobutton maar dan met een lijst die opent als je op het pijltje klikt (keuzemenu).

Ik zal ze eens allemaal tonen.
We zullen een soort van enquête maken.

Vergeet niet, we werken met echo's, ik laat ze hier even weg.

<form action='PhpBasisMailform.php' method='POST'>
<h1>Enquête</h1>
<h2>Persoonlijke gegevens</h2>
<p>
Achternaam: <input type='text' name='achternaam' id='achternaam' size='20'>

Voornaam: <input type='text' name='voornaam' id='voornaam' size='20'>

Adres: <input type='textarea' name='adres' id='adres' cols='20' rows='2'>

E-mailadres: <input type='text' name='email' id='email' size='20'>
</p>

<h2>Vragen</h2>
<p>
Lievelingseten:<br />
<input type='radio' name='eten' id='eten' value='fastfood'> Fastfood

<input type='radio' name='eten' id='eten' value='uitgebreid'> uitgebreid eten
</p>
<p>
Favoriete sport(en)<br/>
<input type='checkbox' name='sport' id='sport' value='sport' value='balsport'> Balsport

<input type='checkbox' name='sport' id='sport' value='sport' value='teamsport'> Teamsport

<input type='checkbox' name='sport' id='sport' value='sport' value='denksport'> Denksport
</p>
<p>
Leukste vakantieplek:<br />
<select name='vakantieplek' id='vakantieplek'>
<option value='Madrid'>Madrid</option>
<option value='Londen'>Londen</option>
<option value='Parijs'>Parijs</option>
<option value='Andere'>Andere</option>
</select>
</p>
</form>


type='text'
De mogelijkheden van daarnet.
name='achternaam'
name zorgt dat alle bij-elkaar-horende dingen bij elkaar blijven (niet letterlijk).
SUPERBELANGRIJK bij radiobuttons en checkboxen.
id='achternaam'
moet hetzelfde zijn als name
cols='20' rows='2'
cols = breedte van tekstveld
rows = hoogte
value='fastfood'
PHP leest enkel de value van iets, niet de uitleg er rond.
daarom MOET je bij checkboxes en radiobuttons de value (waarde) meegeven.
Dit kan ook bij invulvelden/-lijnen, die value is dan zichtbaar in het veld. (bv. value='vul hier uw naam in')

Doorsturen
Om de gegevens door te sturen, maken we gewoon een knop aan.
2 zelfs, want we zullen voor de zekerheid ook een reset knop aanmaken.
Zet dit net boven

<input type='submit' value='doorsturen' name='mail'><input type='reset' value='Reset' name='reset'>


Hier is vooral de value en de name belangrijk.
value: de tekst op de knop
name: vooral belangrijk bij de 'doorsturen' knop, dat zie je later.

Het script
Nu komen we aan het belangrijkste deel: het script.
Deze dingen wil de server weten voor hij het formulier doorstuurt.

  • Naar waar moet het?

  • Wat is het onderwerp?

  • Wat zit er allemaal in?

  • Van wie komt het?

  • Naar wie moet je kunnen antwoorden?



De ontvanger zullen we in een variabele stoppen (zie andere tuts)
Het onderwerp zullen we gewoon invullen in het script
De inhoud zullen we ook in een variabele stoppn.
De laatste 2 komen in de zogenaamde headers

In principe heb je maar 1 lijntje nodig:
mail("ontvanger","onderwerp","inhoud","extra info");

Maar met dit weet de server niet genoeg.

Ontvanger
Zoals gezegd, steek ik dit in een variabele.
Een variabele maak je als volgt:

$naam_van_variabele = "inhoud";

Dus dat wordt:
$ontvanger = "jou.mail@iets.com";


Onderwerp
Dit kan je gewoon invullen (tussen aanhalingstekens) of in een variabele steken

Inhoud
Dit steken we in een variabele omdat het zo groot is:
De variabele zal $body heten.
Omdat het uit meerdere lijnen zal bestaan zullen we werken met = en .=.
Als je met = werkt, geef je de info. Maar als je dan een 2de keer = gebruikt, zou PHP die info gewoon vervangen. .= toont PHP/de server dat dit extra info is. Als je meerdere lijnen wil geven moet je elke lijn afsluiten met \r\n

In deze variabele zullen we de name's moeten gebruiken van het formulier. Deze zullen we ophalen met:

$POST['name']; ofwel $GET['name];
// je gebruikt POST of GET volgens de manier van doorsturen


Dus dat wordt:

$body = "Persoonlijke gegevens\r\n";
$body .= "Naam: ".$POST['achternaam']." ".$POST['voornaam']."\r\n";
$body .= "Adres: ".$POST['adres']."\r\n";
$body .= "Enquête\r\n";
$body .= "Lievelingseten: ".$POST['eten']."\r\n";
$body .= "Favoriete sport: ".$POST['sport']."\r\n";
$body .= "Leukste vakantieplek: ".$POST['vakantieplek']."\r\n";


Als het oproepen van een waarde (zie info boven code) voorafgegaan wordt of gevolgd wordt door tekst (tussen " "), moet je er een . voor of na zetten.

Extra info
De zogenaamde headers.
Hier komt:
- afzender (From)
- reageren naar: (Reply-To)
- eventuele extra info

$headers = "From: ".$_POST['achternaam']." ".$_POST['voornaam']." <".$_POST['email'].">\r\n";
$headers .= "Reply-To: ".$_POST['email']."\r\n";
$headers .= "Content-Type: text/plain\r\n"; // deze lijn is niet verplicht, maar wel handig


Dit geeft als resultaat:

Afzender: Achternaam Voornaam


Resultaat verzendlijn
Het verzendlijntje

mail("ontvanger","onderwerp","inhoud","extra info");


wordt nu

mail($ontvanger,"Enquête",$body,$headers);


Zorgen dat het formulier doorgestuurd wordt
We hebben het formulier en het script. Nu moeten we ze nog enkel linken.
Dit kan met een eenvoudige if-statement (zie andere tuts)

if (verzend-knop wordt ingedrukt)
{
formulier verzenden
}
else
{
formulier gewoon tonen
}


Dit script toont dus het formulier, totdat de knop wordt ingedrukt.

RESULTAAT
Als we alles samensteken hebben we dit zeer 'basic' script.
Het toont het formulier en kan het verzenden.

In het resultaat heb ik ook een ontvangstbevestiging gestoken, om de gebruiker toch een teken van leven te geven.

<? php
// controleren of de verzend-knop is ingedrukt
if ($_POST['mail'])
{
// Ja, de knop is ingedrukt, dus het formulier mag verzonden worden
$ontvanger = "jou.mail@iets.com";

$body = "Persoonlijke gegevens\r\n";
$body .= "Naam: ".$POST['achternaam']." ".$POST['voornaam']."\r\n";
$body .= "Adres: ".$POST['adres']."\r\n";
$body .= "Enquête\r\n";
$body .= "Lievelingseten: ".$POST['eten']."\r\n";
$body .= "Favoriete sport: ".$POST['sport']."\r\n";
$body .= "Leukste vakantieplek: ".$POST['vakantieplek']."\r\n";

$headers = "From: ".$_POST['achternaam']." ".$_POST['voornaam']." <".$_POST['email'].">\r\n";
$headers .= "Reply-To: ".$_POST['email']."\r\n";
$headers .= "Content-Type: text/plain\r\n"; // deze lijn is niet verplicht, maar wel handig

mail($ontvanger,"Enquête",$body,$headers);

//ontvangstbevestiging
echo "De enquête werd succesvol doorgestuurd.\r\n";
}
else
{
// Nee, dus we tonen het formulier
// vergeet de echo's niet
echo "<form action='PhpBasisMailform.php' method='POST'>";
echo "<h1>Enquête</h1>";
echo "<h2>Persoonlijke gegevens</h2>";
echo "<p>";
echo "Achternaam: <input type='text' name='achternaam' id='achternaam' size='20'><br />";
echo "Voornaam: <input type='text' name='voornaam' id='voornaam' size='20'><br />";
echo "Adres: <input type='textarea' name='adres' id='adres' cols='20' rows='2'><br />";
echo "E-mailadres: <input type='text' name='email' id='email' size='20'>
echo "</p>";

echo "<h2>Vragen</h2>";
echo "<p>";
echo "Lievelingseten:<br />";
echo "<input type='radio' name='eten' id='eten' value='fastfood'> Fastfood<br />";
echo "<input type='radio' name='eten' id='eten' value='uitgebreid'> uitgebreid eten";
echo "</p>";
echo "<p>";
echo "Favoriete sport(en)<br/>";
echo "<input type='checkbox' name='sport' id='sport' value='sport' value='balsport'> Balsport<br />";
echo "<input type='checkbox' name='sport' id='sport' value='sport' value='teamsport'> Teamsport<br />";
echo "<input type='checkbox' name='sport' id='sport' value='sport' value='denksport'> Denksport";
echo "</p>";
echo "<p>";
echo "Leukste vakantieplek:<br />";
echo "<select name='vakantieplek' id='vakantieplek'>";
echo "<option value='Madrid'>Madrid</option>";
echo "<option value='Londen'>Londen</option>";
echo "<option value='Parijs'>Parijs</option>";
echo "<option value='Andere'>Andere</option>";
echo "</select>";
echo "</p>";
echo "</form>";
}


Gemaakt door ground zero

Score
Scores zijn alleen beschikbaar voor leden.

Logt u a.u.b. in om te stemmen.

Er zijn nog geen Scores gegeven.


Call of Duty 4 Servers, Counter-Strike Source Servers, Ventrilo Servers, Teamspeak Servers
Donaties


Inloggen

Online Users
Nieuwste lid:
styn89

Leden online:

DerixOnline
zebzOr<5 min
LazY00:07:14
thijmendam00:14:10
rocky00:30:57
vinhui00:35:48
usselite00:54:06
Stijn01:30:12
balthazar103:29:11
snor03:57:42

Gasten online: 3

Link ons

Partners


Naar Boven

© 2006-2010 Modbase. Alle rechten voorbehouden. Disclaimer | Gedragscode

Custom coding by Stijn, Image fixing by Derix