Fout in contact formulier

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Frank

Frank

01/01/2007 11:46:00
Quote Anchor link
Ik heb een probleempje. Mensen zeggen dat ze me hebben geprobeerd te berijken via dit contact formulier. Maar soms (LET OP!: SOMS) komt de email niet door, weet iemand het probleem?

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
// geef e-mail adres op van ontvanger
$mail_ontv = "[email protected]";

// is niet 100% !!!
function checkmail($mail)
{

    $email_host = explode("@", $mail);
    $email_host = $email_host['1'];
    $email_resolved = gethostbyname($email_host);

    if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
        $valid = 1;

    return $valid;
}


// als er niet op submit is gedrukt, of als er wel op is gedrukt maar niet alles ingevoerd is
if (!$_POST['submit'] || $_POST['submit'] && (!$_POST['naam'] || !$_POST['mail'] || !checkmail($_POST['mail']) || !$_POST['msggs'] || !$_POST['onderwerp']))
{

    if ($_POST['submit'] && (!$_POST['naam'] || !$_POST['mail'] || !checkmail($_POST['mail']) || !$_POST['msggs'] || !$_POST['onderwerp']))  
    {

        echo "Je bent je naam, e-mail adres, onderwerp of bericht vergeten in te vullen. Ook kan het zijn ";
        echo "dat je een verkeerd e-mail adres hebt ingevuld.<p>";
    }

      
    // form + tabel
    echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
    echo "<form method=\"POST\" contact=\"/contact\">";
      
    echo "
            <tr><td>Naam:</td>
          <td><input type=\"text\" class=\"input\" name=\"naam\" value=\""
. $_POST['naam'] . "\"></td></tr>
            
          <tr><td>E-Mail:</td>
          <td><input type=\"text\" class=\"input\" name=\"mail\" value=\""
. $_POST['mail'] . "\"></td></tr>
          
          <tr><td>Onderwerp:</td>
          <td><input class=\"input\" type=\"text\" name=\"onderwerp\" value=\""
. $_POST['onderwerp'] . "\"></td></tr>
            
          <tr><td valign=\"top\"><br>Bericht:</td>
          <td><textarea class=\"input\" name=\"msggs\" ROWS=\"6\" COLS=\"45\">"
. htmlentities($_POST['msggs']) . "</textarea></td></tr>
             
          <tr><td>&nbsp;</td>
          <td><input class=\"input\" type=\"submit\" name=\"submit\" value=\"Versturen\"></td></tr>"
;
      
    // sluit form + tabel
    echo "</form>";
    echo "</table>";
    echo "
<br />
E-mail: [email protected]
<br />
<br />
&raquo; <a href=\"#\" onclick=\"window.open('/pages/popup.php?w=telefoon','Telefoon','width=350,height=200'); return false\">Telefoon</a>
<br />
&raquo; <a href=\"#\" onclick=\"window.open('/pages/popup.php?w=voorwaarden','Telefoon','width=500,height=300'); return false\">Voorwaarden</a>
<br />
<br />
Chocolade & Zo<br />
Prinses Margrietlaan 14<br />
7941 XE Meppel<br />
"
;
 
}

// versturen naar
else
{      
    // set datum
    $datum = date("d.m.Y H:i");
      
    // set ip
    $ip = $_SERVER['REMOTE_ADDR'];
      
    $inhoud_mail = "===================================================\n";
    $inhoud_mail .= "Contact Formulier\n";
    $inhoud_mail .= "===================================================\n\n";
      
    $inhoud_mail .= "Naam: " . $_POST['naam'] . "\n";
    $inhoud_mail .= "E-mail adres: " . $_POST['mail'] . "\n";
    $inhoud_mail .= "Bericht:\n\n";
    $inhoud_mail .= $_POST['msggs'] . "\n\n";
      
    $inhoud_mail .= "Verstuurd op $datum via het ip " . $ip . "\n";
      
    $inhoud_mail .= "===================================================\n\n";
    
    // --------------------
    // spambot protectie
    // ------
    // van de tutorial: http://www.phphulp.nl/php/tutorials/10/340/
    // ------

    
    $headers = "From: " . $_POST['naam'] . " <" . $_POST['mail'] . ">";
    
    $headers = stripslashes($headers);
    $headers = str_replace("\n", "", $headers); // Verwijder \n
    $headers = str_replace("\r", "", $headers); // Verwijder \r
    $headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
    
    $_POST['onderwerp'] = str_replace("\n", "", $_POST['onderwerp']); // Verwijder \n
    $_POST['onderwerp'] = str_replace("\r", "", $_POST['onderwerp']); // Verwijder \r
    $_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
    
    mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers);
    
    echo "Uw bericht is verzonden!<br><br>";
    echo "Bedankt voor het versturen van een bericht.<br>";
    echo "U zult snel een antwoord krijgen indien dit nodig is.";
}

?>
 
PHP hulp

PHP hulp

20/04/2024 03:24:51
 
Luke Banning

Luke Banning

01/01/2007 11:50:00
Quote Anchor link
Hmm...
Toevallig had ik de laatste tijd hetzelfde probleem, nu is het sinds ik op een ander servertje zit opgelost... Misschien is de mailserver dus wel de oorzaak?
 
- SanThe -

- SanThe -

01/01/2007 11:50:00
Quote Anchor link
De mail gaat altijd naar hetzelfde adres en het komt soms niet aan....
Provider bellen.
 
PHP Newbie

PHP Newbie

01/01/2007 11:51:00
Quote Anchor link
regel 105:

zet dat even in een if/else

if(mail())
{
echo 'mail verstuurd';
}
else
{
echo 'mail niet verstuurd';
}
 
Luke Banning

Luke Banning

01/01/2007 11:54:00
Quote Anchor link
@PHP Newbie
Inderdaad is dat wel wat netter, maar dat lost het probleem nog niet op ;-)
Het ligt gewoon aan de provider, gewoon ff naar toe stappen en hem een mep verkopen? :p
 
Niek s

niek s

01/01/2007 12:05:00
Quote Anchor link
PHP Newbie schreef op 01.01.2007 11:51:
regel 105:

zet dat even in een if/else

if(mail())
{
echo 'mail verstuurd';
}
else
{
echo 'mail niet verstuurd';
}

Luke Banning schreef op 01.01.2007 11:54:
@PHP Newbie
Inderdaad is dat wel wat netter, maar dat lost het probleem nog niet op ;-)
Het ligt gewoon aan de provider, gewoon ff naar toe stappen en hem een mep verkopen? :p


Hmm, op de manier van PHPNewbie weet je in ieder geval wel zeker of het is gelukt, en anders krijgt de gebruiker nog een melding. Als de mail dan niet binnen komt en er staat dat het is gelukt, dan moet je inderdaad ff de provider bellen. Best lullig overigens
 
Kees V

Kees V

01/01/2007 13:31:00
Quote Anchor link
Dit onderwerp is al vaker aan de orde geweest, maar dan meestal in combinatie met GMail, Hotmail, spambox/spamfilter.

De oplossing was altijd: geef de goede headers mee. Voor mij werk dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$header
  = "From: ".$naam." <".$mail.">\n";
$header .= "Reply-To: ".$mail."\n";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: text/plain; charset=utf-8\n";
$header .= "Content-Transfer-Encoding: 8bit\n";
$header .= "X-Mailer: PHP v".phpversion();
?>
 
Frank

Frank

02/01/2007 17:16:00
Quote Anchor link
@ kees
Thx!
 



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.