Contact formulier verzend wel maar met foutmelding

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Leon jansen

Leon jansen

20/12/2010 22:34:11
Quote Anchor link
Beste mensen op mijn site budgetautomatisering.nl heb ik een contact formulier.
Deze verzend wel en er komt ook wel een bericht dat die verzonden is echter wel met een melding die ik niet begrijp.

Ik hoop dat iemand hier even naar die site kan gaan.

dit is trouwens mijn php script voor die pagina:


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
          // E-mailadres van de ontvanger
$mail_ontv = '[email protected]';

// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{

    // naam controle
    if (!ereg('^[ a-zA-Z-]+$', $_POST['naam']))
        $naam_fout = 1;
    // e-mail controle
    if (function_exists('filter_var') && !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL))
            $email_fout = 1;
    // antiflood controle
    if (!empty($_SESSION['antiflood']))
    {

        $seconde = 20;
        $tijd = time() - $_SESSION['antiflood'];
        if($tijd < $seconde)
            $antiflood = 1;
    }
}


// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['naam']) || !empty($naam_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['bericht']) || empty($_POST['onderwerp']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{

    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {

        if (!empty($naam_fout))
            echo '<p>Uw naam mag alleen letters bevatten.</p>';
        elseif (!empty($email_fout))
            echo '<p>Uw e-mailadres is niet juist.</p>';
        elseif (!empty($antiflood))
            echo '<p>U mag slechts &eacute;&eacute;n bericht per ' . $seconde . ' seconde versturen.</p>';
        else
            echo '<p>U bent uw naam, e-mailadres, onderwerp of bericht vergeten in te vullen.</p>';
    }

        
  // HTML e-mail formlier
  echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
  <p>
  
      <label for="naam">Naam:</label><br />
      <input type="text" id="naam" name="naam" value="'
. htmlspecialchars($_POST['naam']) . '" /><br />
      
      <label for="mail">E-mailadres:</label><br />
      <input type="text" id="mail" name="mail" value="'
. htmlspecialchars($_POST['mail']) . '" /><br />
      
      <label for="onderwerp">Onderwerp:</label><br />
      <input type="text" id="onderwerp" name="onderwerp" value="'
. htmlspecialchars($_POST['onderwerp']) . '" /><br />
      
      <label for="bericht">Bericht:</label><br />
      <textarea id="bericht" name="bericht" rows="8" style="width: 400px;">'
. htmlspecialchars($_POST['bericht']) . '</textarea><br />
      
      <input type="submit" name="submit" value=" Versturen " />
  </p>
  </form>'
;
}

// versturen naar
else
{      
  // set datum
  $datum = date('d/m/Y H:i:s');
    
  $inhoud_mail = "===================================================\n";
  $inhoud_mail .= "Ingevulde contact formulier " . $_SERVER['HTTP_HOST'] . "\n";
  $inhoud_mail .= "===================================================\n\n";
  
  $inhoud_mail .= "Naam: " . htmlspecialchars($_POST['naam']) . "\n";
  $inhoud_mail .= "E-mail adres: " . htmlspecialchars($_POST['mail']) . "\n";
  $inhoud_mail .= "Bericht:\n";
  $inhoud_mail .= htmlspecialchars($_POST['bericht']) . "\n\n";
    
  $inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
    
  $inhoud_mail .= "===================================================\n\n";
  
  // --------------------
  // spambot protectie
  // ------
  // van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
  // ------

  
  $headers = 'From: ' . htmlspecialchars($_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
  
  if (mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers))
  {

      // zorg ervoor dat dezelfde persoon niet kan spammen
      $_SESSION['antiflood'] = time();
      
      echo '<h1>Het contactformulier is verzonden</h1>
      
      <p>Bedankt voor het invullen van het contactformulier. We zullen zo spoedig mogelijk contact met u opnemen.</p>'
;
  }

  else
  {
      echo '<h1>Het contactformulier is niet verzonden</h1>
      
      <p><b>Onze excuses.</b> Het contactformulier kon niet verzonden worden.</p>'
;
  }
}

?>
Gewijzigd op 20/12/2010 22:41:35 door Leon jansen
 
PHP hulp

PHP hulp

12/01/2025 10:43:03
 
Bas Cost Budde

Bas Cost Budde

20/12/2010 22:42:23
Quote Anchor link
Je hoeft de melding toch niet te begrijpen om 'm hier in te kunnen plakken?
 
Leon jansen

Leon jansen

20/12/2010 22:54:08
Quote Anchor link
Dit is de foutmelding:

Deprecated: Function ereg() is deprecated in /var/www/g45534/budgetautomatisering.nl/HTML/contact.php on line 58
 

20/12/2010 23:02:14
Quote Anchor link
Ja, ereg is oud.
Beter is preg_match.
Maar je kunt voor simpele checks ook gewoon ctype gebruiken, of string functions.
Om te kijken of een e-mailadres valid is gewoon kijken of er een karakter voor de @ is een karakter die een @ is een karakter na de @ en nog een . en daarachter moet 2 tot 6 tekens staan.
 
Leon jansen

Leon jansen

20/12/2010 23:03:15
Quote Anchor link
Ok, en hoe los ik het nu op zodat de melding weg blijft?
Bedankt voor jullie reacties
 

20/12/2010 23:07:15
Quote Anchor link
Die ereg eruit slopen.
 
Gunther Peeters

Gunther Peeters

21/12/2010 02:34:32
Quote Anchor link
Vervang:
if (!ereg('^[ a-zA-Z-]+$', $_POST['naam']))

Door dit:
if (!preg_match('/^([a-z])+$/i', $_POST['naam']))
 
Leon jansen

Leon jansen

21/12/2010 08:14:49
Quote Anchor link
Gunther klasse bedankt.
 



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.