Mailscript
ik ben een echte php noob. Dankzij een paar tutorials (voornamelijk op deze site) heb ik een beetje de basis geleerd. Ik heb mijn eerste scriptje gemaakt, een mailscript, deze werkt perfect maar ik heb toch nog een paar vragen. Hier is het script (ziet er misschien rommelig uit voor een pro :p )
___________________
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
28
29
30
31
32
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
28
29
30
31
32
<?php
//variabelen opvangen
$naam = $_POST['naam'];
$achternaam = $_POST['achternaam'];
$email = $_POST['email'];
$bericht = $_POST['bericht'];
$tijd = date ("H.i");
$datum = date ("Y-m-d");
//opgevangen
if ("$bericht" != "")
{
mail ("[email protected]","Een bericht van $naam","Je hebt een bericht van $naam $achternaam
$bericht
Dit bericht is verstuurd op $datum om $tijd");
echo "Bedankt voor uw bericht $naam <br>
<br>
Dit is het bericht dat u ons hebt gestuurd:<br>
$bericht <br>
<br>
Dit bericht is verstuurd op $datum om $tijd";
}
else
{
echo "Er is iets mis gegaan!<br>
<a href=\"javascript:history.back(1)\">Probeert u het nog eens.</a>";
}
?>
//variabelen opvangen
$naam = $_POST['naam'];
$achternaam = $_POST['achternaam'];
$email = $_POST['email'];
$bericht = $_POST['bericht'];
$tijd = date ("H.i");
$datum = date ("Y-m-d");
//opgevangen
if ("$bericht" != "")
{
mail ("[email protected]","Een bericht van $naam","Je hebt een bericht van $naam $achternaam
$bericht
Dit bericht is verstuurd op $datum om $tijd");
echo "Bedankt voor uw bericht $naam <br>
<br>
Dit is het bericht dat u ons hebt gestuurd:<br>
$bericht <br>
<br>
Dit bericht is verstuurd op $datum om $tijd";
}
else
{
echo "Er is iets mis gegaan!<br>
<a href=\"javascript:history.back(1)\">Probeert u het nog eens.</a>";
}
?>
________________
Nu gebruik ik bij de 'if' dit: ("$bericht" != "")
Hij controleert nu dus alleen of het 'bericht' veld is ingevuld. Ik zou graag van iemand willen weten hoe ik zorg dat alle velden worden gecontroleerd. En dat ik bij de output van 'else' niet 'er is iets misgegaan probeer het nog eens' zie maar dat ik dit zie: U heeft de volgende velden niet ingevuld: naam, bericht en ......
En nog 1 vraagje, kan ik leestekens gebruiken achter een variabele? VB: echo "Hey $naam!"
Zodat de output bijv wordt: Hey Ecraser!
Alvast bedankt!!!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
if (!isset($_POST['bericht']) || !isset($_POST['naam']) || !isset($POST['achternaam']) || !isset($_POST['email']))
{
// stuur email
}
else
{
if (!isset($_POST['bericht'])
echo "U heeft geen bericht ingevuld<br>";
if (!isset($_POST['naam'])
echo "U heeft geen naam ingevuld<br>";
if (!isset($_POST['achternaam'])
echo "U heeft geen achternaam ingevuld<br>";
if (!isset($_POST['email'])
echo "U heeft geen email ingevuld<br>";
}
?>
if (!isset($_POST['bericht']) || !isset($_POST['naam']) || !isset($POST['achternaam']) || !isset($_POST['email']))
{
// stuur email
}
else
{
if (!isset($_POST['bericht'])
echo "U heeft geen bericht ingevuld<br>";
if (!isset($_POST['naam'])
echo "U heeft geen naam ingevuld<br>";
if (!isset($_POST['achternaam'])
echo "U heeft geen achternaam ingevuld<br>";
if (!isset($_POST['email'])
echo "U heeft geen email ingevuld<br>";
}
?>
Zo zou ik eerst ff doen om te beginnen ;)
Ook moet je in de mail() regel het volgende doen (moet, moet.. kan)
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
$aan = "[email protected]";
$onderwerp = "Bericht van " . $_POST['naam'];
$message = "Bericht ontvangen van " . $_POST['naam'] . " " . $_POST['achternaam'] . ":\n\n";
$message .= $_POST['bericht'] . "\n\n";
$message .= "Ontvangen op: " . date("d.m.Y H:i");
mail($aan, $onderwerp, $message, "From: " . $_POST['email'] . "");
?>
$aan = "[email protected]";
$onderwerp = "Bericht van " . $_POST['naam'];
$message = "Bericht ontvangen van " . $_POST['naam'] . " " . $_POST['achternaam'] . ":\n\n";
$message .= $_POST['bericht'] . "\n\n";
$message .= "Ontvangen op: " . date("d.m.Y H:i");
mail($aan, $onderwerp, $message, "From: " . $_POST['email'] . "");
?>
Om een uitroepteken te gebruiken kun je het volgende doen:
Die puntjes staan om het aan het vorige toe te voegen. Verder moet je wanneer je een $_POST[] gebruikt de zin afkappen met " [toevoegen] . $_POST weer toevoegen met een . en dan weer beginnen "..
de || staat voor 'OF'. Dus if (!isset($_POST['naam'] OF !isset($_POST['achternaam'])) .. daar staat || dus voor .. :)
isset() is een functie van PHP en kijkt of het is gezet.. spreekt voor zich.. http://www.php.net/isset
Gewijzigd op 29/06/2004 08:55:00 door B a s
Ik vogel t effe uit, hardstikke bedankt!
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
//variabelen opvangen
$naam = $_POST['naam'];
$achternaam = $_POST['achternaam'];
$email = $_POST['email'];
$bericht = $_POST['bericht'];
?>
//variabelen opvangen
$naam = $_POST['naam'];
$achternaam = $_POST['achternaam'];
$email = $_POST['email'];
$bericht = $_POST['bericht'];
?>
Dit is niet nodig doet hij al automatisch maar toch kan geen kwaad
Maar ik heb nu even een vraagje...
Bas gaf mij dat script, van kopieren en plakken leer je niks dus ik heb dat script m.b.v bas zijn uitleg gemaakt.
Ik kreeg een error, omdat ik dit kreeg van Bas:
if (!isset($_POST['naam'])
echo "U heeft geen naam...
Ik heb het nu zo
if (!isset($_POST['naam']))
echo "U heeft geen naam...
Voor degenen die het niet zien, een extra haakje...
Ik krijg nu geen error meer.
Nu is het probleem dat als ik een veld vergeet de output van else wel werkt... zonder errors tenminste. Maar hij laat alleen niet zien welke velden ik ben vergeten...
zo ziet het er uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
}
else
{
echo "U bent het volgende vergeten in te vullen:<br><br>";
if (!isset ($_POST['naam']))
echo "Uw naam<br>";
if (!isset ($_POST['email']))
echo "Uw e-mail adres<br>";
if (!isset ($_POST['bericht']))
echo "Het bericht<br><br>";
echo "<a href=\"javascript:history.back(1)\">Verbeter deze fout(en) a.u.b</a>";
}
?>
}
else
{
echo "U bent het volgende vergeten in te vullen:<br><br>";
if (!isset ($_POST['naam']))
echo "Uw naam<br>";
if (!isset ($_POST['email']))
echo "Uw e-mail adres<br>";
if (!isset ($_POST['bericht']))
echo "Het bericht<br><br>";
echo "<a href=\"javascript:history.back(1)\">Verbeter deze fout(en) a.u.b</a>";
}
?>
Aangezien ik zelf wat toegevoegd heb kan dat misschien de oorzaak zijn.
Gewijzigd op 29/06/2004 14:52:00 door michael
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
}
else
{
echo "U bent het volgende vergeten in te vullen:<br><br>";
if (empty($_POST['naam']))
echo "Uw naam<br>";
if (empty($_POST['email']))
echo "Uw e-mail adres<br>";
if (empty($_POST['bericht']))
echo "Het bericht<br><br>";
echo "<a href=\"javascript:history.back(1)\">Verbeter deze fout(en) a.u.b</a>";
}
?>
}
else
{
echo "U bent het volgende vergeten in te vullen:<br><br>";
if (empty($_POST['naam']))
echo "Uw naam<br>";
if (empty($_POST['email']))
echo "Uw e-mail adres<br>";
if (empty($_POST['bericht']))
echo "Het bericht<br><br>";
echo "<a href=\"javascript:history.back(1)\">Verbeter deze fout(en) a.u.b</a>";
}
?>
thanks m8 ;-)
Als ik de benodigde velden invul dan wordt de output:
U hebt de volgende berichten niet ingevuld:
Probeer het nog eens...
Hiertussen horen dus de velden te staan die je bent vergeten in te vullen maar ze zijn ingevuld dus moet hij de mail verzenden en dat gebeurd dus niet.
Zo ziet mijn script er uit:
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
28
29
30
31
32
33
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
28
29
30
31
32
33
<?php
//variabelen opvangen
$naam = $_POST['naam'];
$achternaam = $_POST['achternaam'];
$email = $_POST['email'];
$bericht = $_POST['bericht'];
$tijd = date ("H.i");
$datum = date ("Y-m-d");
//opgevangen
if (!isset($_POST['bericht']) || !isset($_POST['naam']) || !isset($_POST['email']))
{
//mailscript
echo "Bedankt voor uw bericht $naam <br>
<br>
Dit is het bericht dat u ons hebt gestuurd:<br>
$bericht <br>
<br>
Dit bericht is verstuurd op $datum om $tijd";
}
else
{
echo "U bent het volgende vergeten in te vullen:<br><br>";
if (empty($_POST['naam']))
echo "Uw naam<br>";
if (empty($_POST['email']))
echo "Uw e-mail adres<br>";
if (empty($_POST['bericht']))
echo "Het bericht<br><br>";
echo "<a href=\"javascript:history.back(1)\">Verbeter deze fout(en) a.u.b</a>";
}
?>
//variabelen opvangen
$naam = $_POST['naam'];
$achternaam = $_POST['achternaam'];
$email = $_POST['email'];
$bericht = $_POST['bericht'];
$tijd = date ("H.i");
$datum = date ("Y-m-d");
//opgevangen
if (!isset($_POST['bericht']) || !isset($_POST['naam']) || !isset($_POST['email']))
{
//mailscript
echo "Bedankt voor uw bericht $naam <br>
<br>
Dit is het bericht dat u ons hebt gestuurd:<br>
$bericht <br>
<br>
Dit bericht is verstuurd op $datum om $tijd";
}
else
{
echo "U bent het volgende vergeten in te vullen:<br><br>";
if (empty($_POST['naam']))
echo "Uw naam<br>";
if (empty($_POST['email']))
echo "Uw e-mail adres<br>";
if (empty($_POST['bericht']))
echo "Het bericht<br><br>";
echo "<a href=\"javascript:history.back(1)\">Verbeter deze fout(en) a.u.b</a>";
}
?>
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
mail ("[email protected]","Een bericht van $naam","Je hebt een bericht van $naam $achternaam
$bericht
Dit bericht is verstuurd op $datum om $tijd");
?>
mail ("[email protected]","Een bericht van $naam","Je hebt een bericht van $naam $achternaam
$bericht
Dit bericht is verstuurd op $datum om $tijd");
?>
Gewijzigd op 29/06/2004 17:16:00 door michael
bericht
de mail mag pas verstuurd worden als al deze velden zijn ingevuld. Ik heb zelf ook nog wat geprobeerd maar mijn php kennis is nogal laag :-)
Hardstikke bedankt Bas en vooral <b>Brammetje :-)</a>