2 formulieren op 1 pagina

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rene V

Rene V

04/10/2012 12:05:12
Quote Anchor link
Ik heb een probleem. Ik ben bezig om een 2 formulieren op 1 pagina te maken. Echter krijg ze niet afzonderlijk verstuurd.

Heb deze aan de hand van een formulier wat ik hier heb gevonden gemaakt met hulp van andere pagina;s op internet.

ergens gaat het nog fout. Waarschijnlijk iets heel simpels.

Alvast dank
Rene

Hieronder het scrip-je

Quote:
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
<?php
session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!
// E-mailadres van de ontvanger

$mail_ontv = '[email protected]'; // <<<----- voer jouw e-mailadres hier in!

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

if (!empty($_POST['contacform-submit']))
{

    // naam controle
    if (empty($_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; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
        $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 ((!empty($_POST['contacform-submit']) && (!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 (!empty($_POST['contacform-submit']))
    {

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

        
  // HTML e-mail formlier
  echo '<form name="contacform" method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
  <input type="hidden" id="onderwerp" name="onderwerp" value="Contact Website" />
      <div class="formlabel"><label for="naam">Naam:</label></div>
      <div class="formveld"><input type="text" id="naam" name="naam" value="'
. (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" class="fieldpas" onblur="this.className=&#39;fieldpas&#39;;" onfocus="this.className=&#39;fieldact&#39;;" /></div>
      <div id="clear">&nbsp;</div>
      
      <div class="formlabel"><label for="mail">E-mailadres:</label></div>
      <div class="formveld"><input type="text" id="mail" name="mail" value="'
. (isset($_POST['mail']) ? htmlspecialchars($_POST['mail']) : '') . '" class="fieldpas" onblur="this.className=&#39;fieldpas&#39;;" onfocus="this.className=&#39;fieldact&#39;;" /></div>
      <div id="clear">&nbsp;</div>
     <div class="formlabel"> <label for="bericht">Bericht:</label></div>
      <div class="formveld"><textarea id="bericht" name="bericht" rows="8" style="width: 400px; height:60px" class="fieldpas" onblur="this.className=&#39;fieldpas&#39;;" onfocus="this.className=&#39;fieldact&#39;;" >'
. (isset($_POST['bericht']) ? htmlspecialchars($_POST['bericht']) : '') . '</textarea></div>
      <div id="clear">&nbsp;</div>
       <div class="formlabel">
      <input type="submit" name="contacform-submit" value=" Versturen " class="fieldpasbtn" onblur="this.className=&#39;fieldpasbtn&#39;;" onfocus="this.className=&#39;fieldactbtn&#39;;"  /></div>
  </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";

  
  $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 '<h3>Het contactformulier is verzonden</h3>
      
      <p>Bedankt voor het invullen van het contactformulier. We zullen zo spoedig mogelijk contact met u opnemen.</p>'
;
  }

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

?>





<h1>Bel me terug</h1>
<p>
Wilt u dat wij u bellen? Geen probleem. Vul hieronder uw telefoonnummer in en wij bellen u zo spoedig mogelijk terug.</p>

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
<?php
session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!
// E-mailadres van de ontvanger

$mail_ontv = '[email protected]'; // <<<----- voer jouw e-mailadres hier in!

// Speciale checks voor naam en e-mailadres

if (!empty($_POST['telefoonform-submit']))
{

    // naam controle
    if (empty($_POST['telefoon']))
        $telefoon_fout = 8;
    // antiflood controle
    if (!empty($_SESSION['antiflood']))
    {

        $seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
        $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 ((!empty($_POST['telefoonform-submit']) && (!empty($antiflood) || empty($_POST['telefoon']) || !empty($telefoon_fout) || empty($_POST['onderwerp']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{

    if (!empty($_POST['telefoonform-submit']))
    {

        if (!empty($telefoon_fout))
            echo '<p class="alert">U heeft geen telefoonnummer ingevuld</p>';
    }

        
  // HTML e-mail formlier
  echo '<form name="telefoonform" method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
  <input type="hidden" id="onderwerptel" name="onderwerptel" value="Terugbellen" />
      
      <div class="formveld"><input type="text" id="telefoon" name="telefoon" value="'
. (isset($_POST['telefoon']) ? htmlspecialchars($_POST['telefoon']) : '') . '" class="fieldpastel" onblur="this.className=&#39;fieldpastel&#39;;" onfocus="this.className=&#39;fieldacttel&#39;;" /></div>
      
      <input type="submit" name="telefoonform-submit" value=" Versturen " class="fieldpasbtn2" onblur="this.className=&#39;fieldpasbtn2&#39;;" onfocus="this.className=&#39;fieldactbtn2&#39;;"  />
  </form>'
;
}

// versturen naar
else
{      
  // set datum
  $datum = date('d/m/Y H:i:s');
    
  $inhoud_mailtel = "===================================================\n";
  $inhoud_mailtel .= "Ingevulde contact formulier " . $_SERVER['HTTP_HOST'] . "\n";
  $inhoud_mailtel .= "===================================================\n\n";
  
  $inhoud_mailtel .= "Telefoon: " . htmlspecialchars($_POST['telefoon']) . "\n";
    
  $inhoud_mailtel .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
    
  $inhoud_mailtel .= "===================================================\n\n";

  
  $headers2 = 'From: ' . htmlspecialchars($_POST['naam']) . ' <' . $_POST['mail'] . '>';
  
  $headers2 = stripslashes($headers);
  $headers2 = str_replace('\n', '', $headers); // Verwijder \n
  $headers2 = str_replace('\r', '', $headers); // Verwijder \r
  $headers2 = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
  
  $_POST['onderwerptel'] = str_replace('\n', '', $_POST['onderwerptel']); // Verwijder \n
  $_POST['onderwerptel'] = str_replace('\r', '', $_POST['onderwerptel']); // Verwijder \r
  $_POST['onderwerptel'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerptel'])); // Slashes van quotes
  
  if (mail($mail_ontv, $_POST['onderwerptel'], $inhoud_mailtel, $headers2))
  {

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

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

?>

 
PHP hulp

PHP hulp

28/11/2024 23:47:23
 
N K

N K

04/10/2012 12:36:29
Quote Anchor link
Ik zie meerdere keren contacform-submit staan ( contac zonder -t)
Dit zou bij mij al verwarring opleveren. Misschien staan er meer van dit soort tekstuele rariteiten in?
 
Rene V

Rene V

04/10/2012 12:41:24
Quote Anchor link
Ik heb het veranderd. Maar dat maakt eigenlijk niks uit. Want alle "contacform-submit" werden op dezelfde manier geschreven.. Dus werden ook aangeroepen.

Maar er moet eigenlijk iets in komen dat als je het ene formulier wegzend het andere formulier niet gaat verzenden. Dat doet ie nu wel.

Gr
Rene
 
Marvin H

Marvin H

04/10/2012 12:49:30
Quote Anchor link
Check ook de inhoud van een van de input velden, bijvoorbeeld in je eerste form

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
// Speciale checks voor naam en e-mailadres
//if ($_SERVER['REQUEST_METHOD'] == 'POST')

if (!empty($_POST['contacform-submit']) && $_POST['naam'] != ''){
}

?>


Dan wordt het formulier alleen verzonden als er een naam is ingevuld in je eerste formulier, niks ingevuld? dan wordt hij overgeslagen omdat het niet voldoet aan de If requirements...
Gewijzigd op 04/10/2012 12:50:12 door Marvin H
 
Obelix Idefix

Obelix Idefix

04/10/2012 12:58:34
Quote Anchor link
Controleren met (alleen) empty wordt niet aanbevolen. Controleer met isset.
 
Rene V

Rene V

04/10/2012 12:59:09
Quote Anchor link
Marvin,

Het maakt niet uit als ik dat doe. Dan loopt hij de controle niet na en verzend hij toch het 2de formulier. Dus het is niet de oplossing.

Gr
Rene
 
N K

N K

04/10/2012 12:59:22
Quote Anchor link
Staat dit ook allemaal op één pagina?
Dan staat er ook o.a. twee keer session start(). En sommige variabelen staan dubbel.
 
Chris PHP

Chris PHP

04/10/2012 13:10:52
Quote Anchor link
Wat dacht je van 2 formulieren in je HTML pagina zetten, en beide formulieren naar een ander .php script laten verwijzen die het formulier verwerkt wat verzonden is?

Lijkt mij 10 keer makkelijker en overzichtelijker dan alles in een pagina te zetten en gemixed HTML/PHP. Dit is echter mijn bevinding, dan ben je van dubbele controles af.
 
- SanThe -

- SanThe -

04/10/2012 13:12:41
Quote Anchor link
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
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{

    switch($_POST['form'])
    {
        case
1:    // form 1 afhandelen
        break;
        case
2:    // form 2 afhandelen
        break;
    }
}

else
{
    // form 1
    echo '<form action="" method="post">';
    echo '<input type="hidden" name="form" value="1"/>';
    // rest
    echo '</form>';

    // form 2
    echo '<form action="" method="post">';
    echo '<input type="hidden" name="form" value="2"/>';
    // rest
    echo '</form>';
}

?>
 
- Ariën  -
Beheerder

- Ariën -

04/10/2012 13:14:02
Quote Anchor link
Waarom is in je eerste codeblok lijn 7 ge-commented? Dat is de enige juiste manier om te kijken of je formulier verstuurd (gePOST) is.
 
Rene V

Rene V

04/10/2012 13:50:43
Quote Anchor link
Chris NVT op 04/10/2012 13:10:52:
Wat dacht je van 2 formulieren in je HTML pagina zetten, en beide formulieren naar een ander .php script laten verwijzen die het formulier verwerkt wat verzonden is?

Lijkt mij 10 keer makkelijker en overzichtelijker dan alles in een pagina te zetten en gemixed HTML/PHP. Dit is echter mijn bevinding, dan ben je van dubbele controles af.


Dat is mogelijk.. alleen hoe doe ik dat? Laten verwerken voor een eigen PHP-pagina. Wat gebeurd er dan als het formulier verzonden is?? Gaat deze dan naar een andere pagina>?

Dit formulier wordt dadelijk in een joomla-website gebouwd worden. De opzet is dat het op elke pagina te vinden is. Weet niet of dat problemen opleverd..
 
Chris PHP

Chris PHP

04/10/2012 14:14:19
Quote Anchor link
Rene V op 04/10/2012 13:50:43:
Chris NVT op 04/10/2012 13:10:52:
Wat dacht je van 2 formulieren in je HTML pagina zetten, en beide formulieren naar een ander .php script laten verwijzen die het formulier verwerkt wat verzonden is?

Lijkt mij 10 keer makkelijker en overzichtelijker dan alles in een pagina te zetten en gemixed HTML/PHP. Dit is echter mijn bevinding, dan ben je van dubbele controles af.


Dat is mogelijk.. alleen hoe doe ik dat? Laten verwerken voor een eigen PHP-pagina. Wat gebeurd er dan als het formulier verzonden is?? Gaat deze dan naar een andere pagina>?

Dit formulier wordt dadelijk in een joomla-website gebouwd worden. De opzet is dat het op elke pagina te vinden is. Weet niet of dat problemen opleverd..


Bijvoorbeeld als volgt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<form action=belterug.php method=post>
Formulier van terugbellen hier
</form>

<form action=regeer.php method=post>
Ander formulier hier
</form>


Dan kun je het php gedeelte voor terug bellen in belterug.php zetten. En dan kun je met header (“Location: je_pagina.php”); naar de juiste pagina verwijzen waar jij hem heen wilt hebben
 



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.