PhP Email formulier niet gevuld check fail

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Henk Guuwis

Henk Guuwis

10/12/2012 18:32:49
Quote Anchor link
Beste mensen,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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"
 
?>


Ziet iemand de fout die ik maak?
 
PHP hulp

PHP hulp

27/12/2024 18:40:36
 
Moose -

Moose -

10/12/2012 19:01:39
Quote Anchor link
Je wilt pas een email versturen zodra er een POST request is gemaakt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// formulier verstuurd
}
 
John D

John D

10/12/2012 19:11:52
Quote Anchor link
en maak een AND constructie ipv de !(NOT) en OR. Kijk ook eens op http://www.sitemasters.be/tutorials/1/1/138/PHP/Verwerken_van_formulieren
 
- SanThe -

- SanThe -

10/12/2012 20:24:22
Quote Anchor link
En de mailheaders zijn niet correct.
http://phpwiki.santhe.nl/index.php/De_juiste_mailheaders
 
Henk Guuwis

Henk Guuwis

11/12/2012 14:55:26
Quote Anchor link
Nou -SanThe- de headers werken prima, maar ik heb dus de vraag hoe ik 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?
 
Tim S

Tim S

11/12/2012 16:07:42
Quote Anchor link
Je zet de code van not moose om de formulier controle die je nu hebt

Toevoeging op 11/12/2012 16:10:49:

Je kan ook je mail headers wat uitbreiden
 
Henk Guuwis

Henk Guuwis

11/12/2012 16:40:07
Quote Anchor link
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
 
- Ariën  -
Beheerder

- Ariën -

11/12/2012 16:54:28
Quote Anchor link
Ik denk dat je in ieder geval ook eens moet kijken naar een PHP-tutorial...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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.";
    }
}

?>
Gewijzigd op 11/12/2012 17:35:43 door - Ariën -
 
Henk Guuwis

Henk Guuwis

11/12/2012 17:30:49
Quote Anchor link
Dankjewel -aar-, dat is een enorme hulp, ik ben inderdaad nog niet echt bedreven in PHP. Helaas geeft juo script de error: "Parse error: syntax error, unexpected '}', expecting ',' or ';' in c:...formmail.php on line 17".

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?
 
- Ariën  -
Beheerder

- Ariën -

11/12/2012 17:35:53
Quote Anchor link
punt-komma mist. Try again.
Gewijzigd op 11/12/2012 17:36:08 door - Ariën -
 
Henk Guuwis

Henk Guuwis

11/12/2012 17:46:36
Quote Anchor link
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?
 
- Ariën  -
Beheerder

- Ariën -

11/12/2012 18:16:08
Quote Anchor link
Ik zie dat ik in de isset per ongeluk $_POST['naam'], $_POST['naam'] heb gezet, hij controleert nu alleen op naam.
 
Henk Guuwis

Henk Guuwis

11/12/2012 18:27:44
Quote Anchor link
die had ik al verandert naar:
[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
 
- Ariën  -
Beheerder

- Ariën -

11/12/2012 18:33:19
Quote Anchor link
wat meldt print_r($_POST) na het POST-en?
 
Henk Guuwis

Henk Guuwis

11/12/2012 19:00:45
Quote Anchor link
Array ( [naam] => => [opmerking] => )


de spatie tussen => => daar hoort dus tussen [] email te staan
Gewijzigd op 11/12/2012 19:03:47 door Henk Guuwis
 
Tim S

Tim S

11/12/2012 19:03:32
Quote Anchor link
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.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.
 
Henk Guuwis

Henk Guuwis

11/12/2012 19:08:33
Quote Anchor link
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 : 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.
 
Tim S

Tim S

11/12/2012 19:27:11
Quote Anchor link
Oke Henk,
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.
 
Henk Guuwis

Henk Guuwis

11/12/2012 19:32:13
Quote Anchor link
dat is een nuttige tip ;) Ik doe slechts mijn best, helaas heeft dit PHP script het op mij voorzien geloof ik
 
Tim S

Tim S

11/12/2012 19:55:07
Quote Anchor link
Dat hebben we allemaal wel eens.

Probeer eens

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if(!empty($_POST['naam'])){
echo 'gelukt';
}
else{
echo 'niet gelukt';
}
}
 
Henk Guuwis

Henk Guuwis

11/12/2012 20:05:41
Quote Anchor link
Hey, dat werkt! ik ga dat erinzetten, ik laat zo weten hoe het is gegaan

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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.";
    }
}

?>


Echt super!
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.