PhP Email formulier niet gevuld check fail
Ik laat via een html script een PhP script uitvoeren en het probleem is dat het script zou moeten worden afgebroken als de velden niet zijn ingevuld, maar je kan het formulier ook versturen zonder dat je iets hebt ingevuld, dus of ik doe iets fout in de notering of my check wijze is niet goed.
Het ziet er zo uit:
HTML:
<font face="verdana"><font size="2">
<H3> (insert tekst vraag)</H3>
<form name="Korte Vraag" method="post" action="formmail.php">
<p>Vul hier uw naam in:
</p><INPUT NAME="naam" size="30"value""> <BR>
<p>Vul hier uw e-mailadres in:
</p><INPUT Name="email" size="30"value"">
<p>Vul hier uw vraag in:</p>
<TEXTAREA NAME="opmerking" ROWS=6 COLS=60 value""></TEXTAREA>
</font>
<INPUT TYPE=submit VALUE="Versturen!">
</FORM>
Nu 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
if (!isset($_POST['naam']) || !isset($_POST['email']) || !isset($_REQUEST['POST'])) {
echo 'U heeft niet alle velden ingevuld!';
exit;
}
$naam = htmlspecialchars($_POST['naam']);
$email = htmlspecialchars($_POST['email']);
$bericht = htmlspecialchars($_POST['opmerking']);
$tijd = time();
$datum = strftime('%d/%m/%y %H:%M', $tijd);
$ip = getenv('REMOTE_ADDR');
$message = $naam.' met het e-mailadres '.$email.' en het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:
____________________________________
'.$bericht.'
------------------------------------';
mail('[email protected]', 'Korte Vraag Innerlijke Weg ', $message, 'From: '.$email);
header("Refresh: 5; url=\"http://www.leiderschap-in-vertrouwen.nl\"");
echo "Uw bericht is verzonden. De pagina gaat binnen 5 seconden terug naar de thuispagina"
?>
if (!isset($_POST['naam']) || !isset($_POST['email']) || !isset($_REQUEST['POST'])) {
echo 'U heeft niet alle velden ingevuld!';
exit;
}
$naam = htmlspecialchars($_POST['naam']);
$email = htmlspecialchars($_POST['email']);
$bericht = htmlspecialchars($_POST['opmerking']);
$tijd = time();
$datum = strftime('%d/%m/%y %H:%M', $tijd);
$ip = getenv('REMOTE_ADDR');
$message = $naam.' met het e-mailadres '.$email.' en het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:
____________________________________
'.$bericht.'
------------------------------------';
mail('[email protected]', 'Korte Vraag Innerlijke Weg ', $message, 'From: '.$email);
header("Refresh: 5; url=\"http://www.leiderschap-in-vertrouwen.nl\"");
echo "Uw bericht is verzonden. De pagina gaat binnen 5 seconden terug naar de thuispagina"
?>
Ziet iemand de fout die ik maak?
if ($_SERVER[REQUEST_METHOD] == POST) combineer met de velden, want hij zegt nu dus (bij alle 3 ingevuld) dat ze niet zijn ingevuld, hoe voeg ik dit bij de code in en hoe moet ik deze dan aanpassen?
Nou -SanThe- de headers werken prima, maar ik heb dus de vraag hoe ik Toevoeging op 11/12/2012 16:10:49:
Je kan ook je mail headers wat uitbreiden
Sorry, ik ben een ontzettende leek eigenlijk, ik kom er niet uit hoe ik de code van Not Moose bij mij erin moet zetten, dank voor de opmerking Tim, zou je het misschien voor kunnen doen? Ik kom er ff niet 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if(isset($_POST['naam'], $_POST['naam'])) {
$naam = htmlspecialchars($_POST['naam']);
$email = htmlspecialchars($_POST['email']);
$bericht = htmlspecialchars($_POST['opmerking']);
$tijd = time();
$datum = strftime('%d/%m/%y %H:%M', $tijd);
$ip = getenv('REMOTE_ADDR');
$message = $naam.' met het e-mailadres '.$email.' en het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:
____________________________________
'.$bericht.'
------------------------------------';
if(mail('[email protected]', 'Korte Vraag Innerlijke Weg ', $message, 'From: '.$email)) {
header("Refresh: 5; url=\"http://www.leiderschap-in-vertrouwen.nl\"");
echo "Uw bericht is verzonden. De pagina gaat binnen 5 seconden terug naar de thuispagina";
} else {
echo "Door een storing aan onze kant is de mail niet verzonden.";
}
} else {
echo "Er zijn enkele velden niet ingevuld.";
}
}
?>
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if(isset($_POST['naam'], $_POST['naam'])) {
$naam = htmlspecialchars($_POST['naam']);
$email = htmlspecialchars($_POST['email']);
$bericht = htmlspecialchars($_POST['opmerking']);
$tijd = time();
$datum = strftime('%d/%m/%y %H:%M', $tijd);
$ip = getenv('REMOTE_ADDR');
$message = $naam.' met het e-mailadres '.$email.' en het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:
____________________________________
'.$bericht.'
------------------------------------';
if(mail('[email protected]', 'Korte Vraag Innerlijke Weg ', $message, 'From: '.$email)) {
header("Refresh: 5; url=\"http://www.leiderschap-in-vertrouwen.nl\"");
echo "Uw bericht is verzonden. De pagina gaat binnen 5 seconden terug naar de thuispagina";
} else {
echo "Door een storing aan onze kant is de mail niet verzonden.";
}
} else {
echo "Er zijn enkele velden niet ingevuld.";
}
}
?>
Gewijzigd op 11/12/2012 17:35:43 door - Ariën -
Ik heb me rot gezocht omdat ik dacht dat er ergens een accolade verkeerd stond, maar ik heb hem niet kunnen vinden, iemand anders wel?
Gewijzigd op 11/12/2012 17:36:08 door - Ariën -
Ja die had ik ook gedaan, dus line 17 ;} else { maar dan kun je hem dus gewoon versturen zonder dat je iets hebt ingevuld, dus zit ik eigenlijk weer exact terug bij mijn oude probleem. wat o wat doe ik toch fout, zou het misschien met de html kunnen hebben te maken?
Ik zie dat ik in de isset per ongeluk $_POST['naam'], $_POST['naam'] heb gezet, hij controleert nu alleen op naam.
[linebreak]if ($_SERVER[REQUEST_METHOD] == POST) {[linebreak] if(isset($_POST[naam], $_POST[email], $_POST[opmerking])) {[linebreak] [linebreak]
en ik heb nog de Value function weggehaald bij de html maar ik kan het formulier nog steeds on ingevuld versturen. ik denk dat de PHP wel goed is, maar dat ik misschien de fout bij de HTML codes moet zoeken
wat meldt print_r($_POST) na het POST-en?
de spatie tussen => => daar hoort dus tussen [] email te staan
Gewijzigd op 11/12/2012 19:03:47 door Henk Guuwis
http://www.w3schools.com/php/default.asp word je in het begin niet echt wijzer. Ik heb zelf et meest geleerd van een gastenboek maken. Als je dan dingen ziet waarvan je niet weet wat het is kan je ze even zoeken op google.
Als ik jou was zou ik even wat praktijk tutorials van php volgen, hier leer je het meest van. Als je gewoon een tutorial volgt zoals http://www.casinoswijzer.nl/artikel/php/mail-emailformulier-met-php.php maar je kan dus gewoon versturen zonder intevullen, terwijl zij er expliciet bijzeggen dat ze met de if function checken of het is ingevuld. Dat werkt niet, dus ben ik hier naar toe gekomen.
Het grappig is dat dat het volgende zou gaan worden, en ik zoek ook steeds dingen op op google, maar ik moet ergens beginnen nietwaar? Ik dacht (en dat schreef iedereen ook) dat zo'n email laten sturen het makkelijkste was, dus ik volgde toen deze tutorial : Ik dacht dat je zit zelf had gemaakt. Ik ben als eerst begonnen met een Contact formulier met name om de if else structuur te leren.
Toevoeging op 11/12/2012 19:29:02:
Ik zou trouwens eerst even het versturen van de mail weg laten. Daar dan neerzetten echo 'gelukt';
Als je foutafhandeling werkt kan je verder met de mail.
dat is een nuttige tip ;) Ik doe slechts mijn best, helaas heeft dit PHP script het op mij voorzien geloof ik
Probeer eens
Toevoeging op 11/12/2012 20:23:19:
Jongens, jullie zijn echt geweldig, super bedankt Aart voor alle tijd en hulp en aanpassingen van het script, en Tim bedenkt voor het laten zien van deze andere methode, want het werkt! de uiteindelijke code is dus:
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 ($_SERVER['REQUEST_METHOD'] == 'POST') {
if(!empty($_POST['naam']));
if(!empty($_POST['email']));
if(!empty($_POST['opmerking'])) {
$naam = htmlspecialchars($_POST['naam']);
$email = htmlspecialchars($_POST['email']);
$bericht = htmlspecialchars($_POST['opmerking']);
$tijd = time();
$datum = strftime('%d/%m/%y %H:%M', $tijd);
$ip = getenv('REMOTE_ADDR');
$message = $naam.' met het e-mailadres '.$email.' en het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:
____________________________________
'.$bericht.'
------------------------------------';
if(mail('[email protected]', 'Korte Vraag Innerlijke Weg ', $message, 'From: '.$email)) {
header("Refresh: 5; url=\"http://www.leiderschap-in-vertrouwen.nl\"");
echo "Uw bericht is verzonden. De pagina gaat binnen 5 seconden terug naar de thuispagina";
;} else {
echo "Door een storing aan onze kant is de mail niet verzonden.";
}
} else {
echo "Er zijn enkele velden niet ingevuld.";
}
}
?>
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if(!empty($_POST['naam']));
if(!empty($_POST['email']));
if(!empty($_POST['opmerking'])) {
$naam = htmlspecialchars($_POST['naam']);
$email = htmlspecialchars($_POST['email']);
$bericht = htmlspecialchars($_POST['opmerking']);
$tijd = time();
$datum = strftime('%d/%m/%y %H:%M', $tijd);
$ip = getenv('REMOTE_ADDR');
$message = $naam.' met het e-mailadres '.$email.' en het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:
____________________________________
'.$bericht.'
------------------------------------';
if(mail('[email protected]', 'Korte Vraag Innerlijke Weg ', $message, 'From: '.$email)) {
header("Refresh: 5; url=\"http://www.leiderschap-in-vertrouwen.nl\"");
echo "Uw bericht is verzonden. De pagina gaat binnen 5 seconden terug naar de thuispagina";
;} else {
echo "Door een storing aan onze kant is de mail niet verzonden.";
}
} else {
echo "Er zijn enkele velden niet ingevuld.";
}
}
?>
Echt super!