Versio

Contactformulier velden controleren scripts samenvoegen

Overzicht Reageren

Joeri van Spijk

Joeri van Spijk

10/07/2010 21:38:10
Quote Anchor link
Hallo allemaal,

Ik heb 2 scripts uit verschillende contactformulieren samengevoegd. In 1 controleert hij de velden en de andere is het formulier zelf, maar ik weet niet hoe ik ze op een goede manier kan samenvoegen. Kan iemand me helpen?

Het formulierscript:

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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?php

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

   // we'll begin by assigning the To address and message subject
   $to="contact@jasites.nl";
   $subject="Contactformulier JA!sites";
//grab all our vars from the form
extract($_POST);
//build the body of the message from the form
$body = "Deze e-mail is verstuurd vanaf het contactformulier op www.jasites.nl

Organisatie:                     $bedrijf
Naam:                         $naam
Email:                         $email
Eventueel bestaande website:     $web
Interesse:                        $dienst
Offerte?:                        $offerte


Bericht: $bericht
"
;

   // get the sender's name and email address
   // we'll just plug them a variable to be used later

   $from = stripslashes($_POST['fromname'])."<".stripslashes($_POST['email']).">";

   // generate a random string to be used as the boundary marker
   $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";

   // now we'll build the message headers
   $headers = "From: $from\r\n" .
   "MIME-Version: 1.0\r\n" .
      "Content-Type: multipart/mixed;\r\n" .
      " boundary=\"{$mime_boundary}\"";

   // here, we'll start the message body.
   // this is the text that will be displayed
   // in the e-mail

   $message="$body\n";

   // next, we'll build the invisible portion of the message body
   // note that we insert two dashes in front of the MIME boundary
   // when we use it

   $message = "This is a multi-part message in MIME format.\n\n" .
      "--{$mime_boundary}\n" .
      "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
      "Content-Transfer-Encoding: 7bit\n\n" .
   $message . "\n\n";

   // now we'll process our uploaded files
   foreach($_FILES as $userfile){
      // store the file information to variables for easier access
      $tmp_name = $userfile['tmp_name'];
      $type = $userfile['type'];
      $name = $userfile['name'];
      $size = $userfile['size'];

      // if the upload succeded, the file will exist
      if (file_exists($tmp_name)){

         // check to make sure that it is an uploaded file and not a system file
         if(is_uploaded_file($tmp_name)){
     
            // open the file for a binary read
            $file = fopen($tmp_name,'rb');
     
            // read the file content into a variable
            $data = fread($file,filesize($tmp_name));

            // close the file
            fclose($file);
     
            // now we encode it and split it into acceptable length lines
            $data = chunk_split(base64_encode($data));
         }

     
         // now we'll insert a boundary to indicate we're starting the attachment
         // we have to specify the content type, file name, and disposition as
         // an attachment, then add the file content.
         // NOTE: we don't set another boundary to indicate that the end of the
         // file has been reached here. we only want one boundary between each file
         // we'll add the final one after the loop finishes.<

         $message .= "--{$mime_boundary}\n" .
            "Content-Type: {$type};\n" .
            " name=\"{$name}\"\n" .
            "Content-Disposition: attachment;\n" .
            " filename=\"{$fileatt_name}\"\n" .
            "Content-Transfer-Encoding: base64\n\n" .
         $data . "\n\n";
      }
   }

   // here's our closing mime boundary that indicates the last of the message
   $message.="--{$mime_boundary}--\n";
   // now we just send the message

   if (@mail($to, $subject, $message, $headers))
      echo "Bericht Verzonden";
   else
      echo "U heeft niet alle verplichte velden ingevuld. <a href=javascript:history.back(1)>Ga terug</a> en vul alle verplichte velden in";
}
else {
?>


<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" name="form1">
   <div class="formnaam">Bedrijfsnaam:</div>                            <div class="formvulin"><input type="text" name="bedrijf" size="50" /></div>
   <div class="formnaam">Naam:</div>                                     <div class="formvulin"><input type="text" name="naam" size="50" /></div>
   <div class="formnaam">E-mail:</div>                                     <div class="formvulin"><input type="text" name="email" size="50"/></div>
   <div class="formnaam">Eventueel bestaande website:</div>                <div class="formvulin"><input name="web" type="text" size="50" /></div>
   <div class="formnaam">Waarmee kunnen wij u van dienst zijn?</div>    <div class="formvulin">  
<select name="dienst">
<option value="">Maak uw keuze</option>
<option value="Complete Website">Complete Website</option>
<option value="Slicen/Basen">Slicen/Basen</option>
<option value="Aanpassen">Bestaande Website Aanpassen</option>
<option value="Vraag">Ik heb een vraag</option>
<option value="Anders">Anders</option>
</select></div>


   <div class="formnaam">Wilt u een offerte aanvragen?</div>

<input type="radio" name="offerte" value="ja" onclick="toggle();"/> Ja
<input type="radio" name="offerte" value="nee" onclick="toggle();" checked="checked"/> Nee

<input type="text" name="invoerveld" id="invoerveld" style="display:none"/><br/>
<div class="clear"></div>

  
   <div class="padboven">Offerte/Vraag:<br /> <textarea name="bericht" class="formvulin" cols="40" rows="8"></textarea></div>
   Als u een offerte heeft aangevraagd sturen wij u zo snel mogelijk een vragenlijst die u kunt invullen. Aan de hand van deze vragenlijst maken wij de offerte op.<br />

   <div class="padboven"><input type="submit" name="Submit" value="Verzend" /></div>
</form>


Ik denk dat in dit stukje iets moet veranderen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
  if (@mail($to, $subject, $message, $headers))
      echo "Bericht Verzonden";
   else
      echo "U heeft niet alle verplichte velden ingevuld. <a href=javascript:history.back(1)>Ga terug</a> en vul alle verplichte velden in";
} else {
?>


Ik wil dit script erin hebben (of iets dat erop lijkt):
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
if(!empty($_POST['Submit']))
{
if(strlen($_POST['naam']) == 0)
    { $error_msg ="- Voer astublieft uw naam in.<br>"; }
if(!ereg("^[_a-zA-Z0-9-]+(\.[*@([a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $_POST['email']))
    { $error_msg .="- Voer alstublieft een geldig email adres in.<br>"; }
 
if(!empty($error_msg))
    {
    //Een van de velden werd niet goed ingevuld
    echo "<b>Contact webmaster kon niet worden uitgevoerd door volgende redenen:</b><br><br>";
    echo $error_msg;
    echo "<br>Klik alstublieft op <a href=javascript:history.back(1)>Ga terug</a> en vul alle velden in.<br><br>";
    }
Gewijzigd op 10/07/2010 21:38:57 door Joeri van Spijk
 
PHP hulp

PHP hulp

24/05/2012 06:43:53
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Noppes Homeland

Noppes Homeland

10/07/2010 21:48:24
Quote Anchor link
Er zitten nogal wat fouten in
-> empty() dien je niet te gebruiken
-> ereg functies zijn DEPRECATED
-> controleren op de submit button is in 99% foute afloop
-> met @ onderdruk je fouten
-> $_SERVER['PHP_SELF']; is ook niet echt handig om te gebruiken
basename(__FILE__) of action="" zal al stuk beter zijn
-> dit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
 $message
.= "--{$mime_boundary}\n" .
            "Content-Type: {$type};\n" .
            " name=\"{$name}\"\n" .
            "Content-Disposition: attachment;\n" .
            " filename=\"{$fileatt_name}\"\n" .
            "Content-Transfer-Encoding: base64\n\n" .
         $data . "\n\n";
?>

zal je op den duur ook opbreken, want dat voldoet niet aan de RFC regels voor het versturen van mail, pak een mailclass zijn PHP Mialer of Swiftmailer, dan hoef je je hoofd daar ook niet over te buigen.
-> en dit extract($_POST); is toch wel het ergste wat je kan doen

Advies: probeer zelf eens iets eenvoudigs in elkaar te knutselen, dan zomaar willigekeurige scripts van het net af te plukken
 
Niels Kieviet
Beheerder

Niels Kieviet

10/07/2010 21:53:04
Quote Anchor link
Begin eens met netjes te scripten.. Dan zal je zien dat alles overzichtelijker is.

Klein opzetje..

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

// Array voor foutmeldingen
$aErrors = array( );

    // Kijken of de pagina zichzelf heeft aangeroepen
    if( $_SERVER['REQUEST_METHOD'] == 'POST' &&
        isset
        (
            // Zet hier alle andere velden neer.
        )
    )
    {

    
        // Voer hier alle controles uit.. BV:
        if( empty( $_POST[''] ) && strlen( $_POST[''] ) < 3 )
        {

            // Foutmeldingen toevoegen
            $aErrors[] = '....';
        }
        

    
    }



?>


Verder ben ik het met Noppes eens.
Gewijzigd op 10/07/2010 21:53:40 door Niels Kieviet
 
Joeri van Spijk

Joeri van Spijk

10/07/2010 22:00:34
Quote Anchor link
Ok, heel erg bedankt jullie 2. Ik zal dat eerst maar eens gaan doen! Als ik dan nog vragen heb kom ik weer terug!
 



Overzicht Reageren