Extra velden in form mail invoegen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tom Gerritse

Tom Gerritse

20/10/2007 14:47:00
Quote Anchor link
Ik heb van het net een formmail geplukt die ik i.c.m. met mijn eigen form php scriptje wil gebruiken. Hiervoor moet ik echter de extra invulvelden moeten verwerken in mijn eigen php script.
Onderstaand kun je het script lezen. Als extra heb ik de invulvelden "telefoon", "fax" en "onderwerp" ingevoegd. Wanneer ik het script uittest dan worden deze drie zaken niet in de mail geplaatst die naar mij wordt gezonden.
Wat doe ik fout (ik heb in de form de velden dus wel de namen fax, telefoon en onderwerp gegeven)?

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
    // VALUES FROM THE FORM
    $name     = $_POST['name'];
    $email     = $_POST['email'];
    $telefoon     = $_POST['telefoon'];
    $fax     = $_POST['fax'];
    $onderwerp= $_POST['onderwerp'];
    $message     = $_POST['msg'];

    // ERROR & SECURITY CHECKS
    if ( ( !$email ) ||
         (
strlen($_POST['email']) > 200 ) ||
         ( !
preg_match("#^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$#", $email) )
       )
    {

        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }

    if ( ( !$name ) ||
         (
strlen($name) > 100 ) ||
         (
preg_match("/[:=@\<\>]/", $name) )
       )
    {

        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }

    if ( preg_match("#cc:#i", $message, $matches) )
    {

        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }

    if ( !$message )
    {

        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }

    if (eregi("\r",$email) || eregi("\n",$email)){
        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }

    if (FALSE) {
        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }



    // CREATE THE EMAIL
    $headers    = "Content-Type: text/plain; charset=iso-8859-1\n";
    $headers    .= "From: $name <$email>\n";
    $recipient    = "[email protected]";
    $subject    = "formulier van xxx.nl";
    $message    = wordwrap($message, 1024)\n";
        
    // SEND THE EMAIL TO YOU
    mail($recipient, $subject, $message, $headers, $telefoon, $fax, $onderwerp);

    // REDIRECT TO THE THANKS PAGE
    header("
location: http://www.xxx.nl/bedankt.htm");
?>
 
PHP hulp

PHP hulp

19/11/2024 06:41:11
 
Joren de Wit

Joren de Wit

20/10/2007 14:51:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
mail($recipient, $subject, $message, $headers, $telefoon, $fax, $onderwerp);
?>

Dit slaat natuurlijk helemaal nergens op. Kijk eens naar de mail() functie op php.net en dan met name naar de parameters die deze functie accepteert.

Als je wilt dat $telefoon, $fax en $onderwerp in het mailtje komen te staan dat naar jou gestuurd wordt, zul je die in het bericht op moeten nemen...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Tom Gerritse

Tom Gerritse

20/10/2007 15:03:00
Quote Anchor link
Om eerlijk te zijn heb ik hier ook al het e.e.a. uitgeprobeerd met message:

Dit zou het dan moeten worden:


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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
    // VALUES FROM THE FORM
    $name      = $_POST['name'];
    $email      = $_POST['email'];
    $telefoon      = $_POST['telefoon'];
    $fax      = $_POST['fax'];
    $onderwerp = $_POST['onderwerp'];
    $message      = $_POST['msg'];

    // ERROR & SECURITY CHECKS
    if ( ( !$email ) ||
         (
strlen($_POST['email']) > 200 ) ||
         ( !
preg_match("#^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$#", $email) )
       )
    {

        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }

    if ( ( !$name ) ||
         (
strlen($name) > 100 ) ||
         (
preg_match("/[:=@\<\>]/", $name) )
       )
    {

        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }

    if ( preg_match("#cc:#i", $message, $matches) )
    {

        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }

    if ( !$message )
    {

        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }

    if (eregi("\r",$email) || eregi("\n",$email)){
        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }

    if (FALSE) {
        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }



    // CREATE THE EMAIL
    $headers    = "Content-Type: text/plain; charset=iso-8859-1\n";
    $headers    .= "From: $name <$email>\n";
    $recipient    = "[email protected]";
    $subject    = "formulier van xxx.nl";
    $message    = wordwrap($message, 1024)\n";
                $message .= "
$telefoon:\n\n";
                $message .= "
$fax:\n\n";
                $message .= "
$onderwerp:\n\n";

    // SEND THE EMAIL TO YOU
    mail($recipient, $subject, $message, $headers);

    // REDIRECT TO THE THANKS PAGE
    header("
location: http://www.xxx.nl/bedankt.htm");
?>




Echter dat wilde ook al niet werken.
Gewijzigd op 01/01/1970 01:00:00 door Tom Gerritse
 
Joren de Wit

Joren de Wit

20/10/2007 15:50:00
Quote Anchor link
Ik zou alles aan $message toevoegen voordat je wordwrap() gebruikt...

ps. Verder denk ik dat je ook nog wel wat opmaak toe zult moeten voegen. Je plakt het nu gewoon direct achter elkaar, en dat lijkt me niet echt handig. Echo $message eens tijdens het bouwen van je script, dan zie je hoe het eruit komt te zien.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Tom Gerritse

Tom Gerritse

20/10/2007 16:07:00
Quote Anchor link
Je bent al een stap te ver op mijn verhaal... :) Het werkt namelijk nog steeds niet. Ik heb op PHP.NET gezocht en hier staan legio voorbeelden van forms maar ik kan nergens een voorbeeld vinden waarbij er meerdere "Messages" in een form kunnen worden verzonden. Kan iemand mij a.u.b. een voorbeeld geven hoe ik in mijn geval de telefoon, fax en opmerkingen kan toevoegen aan de $message die verzonden moet worden...
 
Joren de Wit

Joren de Wit

20/10/2007 16:12:00
Quote Anchor link
Je verstuurt niet meerdere messages, je verstuurt 1 message waarin je alles samengevoegd hebt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$message
= 'Onderwerp: '.$_POST['onderwerp']."\n";
$message .= 'Telefoon: '.$_POST['telefoon']."\n";
$message .= 'Fax: '.$_POST['fax']."\n";
$message .= 'Bericht: '.$_POST['msg'];
?>

En vervolgens kun je $message opnemen in je mail() functie.

ps. Die \n zorgt voor een line-break zodat niet alles achter elkaar komt te staan. Als je een html mailtje schrijft gebruik je hier uiteraard <br> voor.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Tom Gerritse

Tom Gerritse

20/10/2007 16:48:00
Quote Anchor link
Ooo, wat ben ik weer lekker dom bezig geweest deze middag ... Ik had even tijdelijk een map aangemaakt die ik contactform2 had genoemd (een map contactform had ik reeds staan). Ik was dus vergeten om bij action de benaming contactform te veranderen in contactform2 ...
Maar goed. mede dankzij Blanche (bedankt!) ben ik tot het volgende gekomen (het is nog niet helemaal klaar maar het begin is er nu):

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
    // VALUES FROM THE FORM
    $name    = $_POST['name'];
    $email    = $_POST['email'];
    $telefoon    = $_POST['telefoon'];
    $fax    = $_POST['fax'];
    $onderwerp= $_POST['onderwerp'];
    $message    = $_POST['msg'];

    // ERROR & SECURITY CHECKS
    if ( ( !$email ) ||
         (
strlen($_POST['email']) > 200 ) ||
         ( !
preg_match("#^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$#", $email) )
       )
    {

        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }

    if ( ( !$name ) ||
         (
strlen($name) > 100 ) ||
         (
preg_match("/[:=@\<\>]/", $name) )
       )
    {

        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }

    if ( preg_match("#cc:#i", $message, $matches) )
    {

        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }

    if ( !$message )
    {

        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }

    if (eregi("\r",$email) || eregi("\n",$email)){
        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }

    if (FALSE) {
        Header("Location: http://www.xxx.nl/FOUT.htm");
        exit;
    }



    // CREATE THE EMAIL
    $headers    = "Content-Type: text/plain; charset=iso-8859-1\n";
    $headers    .= "From: $name <$email>\n";
    $recipient    = "[email protected]";
    $subject    = "formulier van xxx.nl";
   $message = "Reactie vanaf het mailform op de website:\n";
   $message .= "  Opgegeven naam            : " . $_POST['name'] . "\n";
   $message .= "  Opgegeven e-mail          : " . $_POST['email'] . "\n";
   $message .= "  Opgegeven telefoon        : " . $_POST['telefoon'] . "\n";
   $message .= "  Opgegeven fax             : " . $_POST['fax'] . "\n";
   $message .= "  Opgegeven onderwerp       : " . $_POST['onderwerp'] . "\n";
   $message .= "  Opgegeven bericht         : " . $_POST['msg'] . "\n";
   $message .= "-- \nEinde bericht ";

    // SEND THE EMAIL TO YOU
    mail($recipient, $subject, $message, $headers);

    // REDIRECT TO THE THANKS PAGE
    header("location: http://www.xxx.nl/bedankt.htm");
?>
 



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.