problemen met versturen mailing form

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Frederic D

Frederic D

10/02/2014 11:16:44
Quote Anchor link
Hallo,

Ik heb een bestaand php contactformulier aangepast en uitgebreid in php, maar ik heb ergens iets fout gedaan of over het hoofd gezien (mijn eerste stapjes in de php-wereld:). De bedoeling is dat de keuze uit het html-meerkeuzevakje (myopt) in de titel van de mail komt te staan. De rest staat in de body van de mail. Alle velden zijn verplicht in te vullen, behalve de laatste “uw vraag” txtText.

Ben ook niet zeker waar ik $Subject moet gebruiken of eventueel $myopt?

Heb ook al gevonden dat de sendmail::send functie maar 4 parameters accepteert bvb send($from, $to, $message, $subject)
Ik had er meerdere staan in mijn eerste ontwerp.

Hieronder de verschillende files: de html-form, lib.php, config.php en contact.php.

Weet er iemand een oplossing?

Alvast bedankt!
Frederic


1) LIB.PHP

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
<?php
class sendmail
{
     public static function send($from , $to , $message, $subject)     
             {

      $headers  = 'MIME-Version: 1.0' . "\r\n";         
             $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";

     $headers .= "From:" . $from;         if(mail($to,$subject,$message,$headers))         
             return true;         
             else         
             return false;     
             }
 }    
function
checkEmailAddress($email){      
return preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/",$email);  
}
function
isPostBack()
{
  
return ($_SERVER['REQUEST_METHOD'] == 'POST');  
}

?>



2) CONFIG.PHP

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
// Write contact email reciever here
$contactEmail = "[email protected]";  
$email_subject = "$myOpt";
// Write Subscribe email reciever here
$subscribeEmail = "[email protected]";

?>



3) CONTACT.PHP

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
include_once './lib.php';
include_once './config.php';
if(!isPostBack()) die('Please send contact form via POST method...');  

$Name = htmlspecialchars($_POST['txtName']);
$Email = htmlspecialchars($_POST['txtEmail']);
$Subject = htmlspecialchars($_POST['txtSubject']);;
$preText = "<strong>Bedrijfsnaam:</strong> $Bedrijfsnaam <br />";
$preText .= "<strong>Contactpersoon:</strong> $Name <br />";
$preText .= "<strong>Email:</strong> $Email <br />";
$preText .= "<strong>Telefoon:</strong> $Telefoon <br />";
$preText .= "<strong>BTW:</strong> $BTW <br />";
$preText .= "<strong>Vraag betreft:</strong> $myopt <br /><br />";
$Text = htmlspecialchars($_POST['txtText']);  

$Text = $preText . $Text;  

if(empty ($Text)) die('Velden met een * moeten ingevuld worden ...');
if(!checkEmailAddress($Email)) die('Onjuist email adres ...');  

if(!sendmail::send($Email , $contactEmail , $Text , $Subject ))    
die('Kan uw bericht niet verzenden. Er is een fout opgetreden.');    

echo '1';  
?>



4) FORM

<form action="php/contact.php" method="post" id="frmContact">
<h5>Bedrijfsnaam *</h5>
<input name="txtBedrijfsnaam" type="text" class="txbx" value="" /><br />
<h5>Contactpersoon *</h5>
<input name="txtName" type="text" class="txbx" value="" /><br />
<h5>Email *</h5>
<input name="txtEmail" type="text" class="txbx" value="" /><br />
<h5>Telefoon of GSM *</h5>
<input name="txtTelefoon" type="text" class="txbx" value="" /><br />
<h5>BTW-nummer *</h5>
<input name="txtBTW" type="text" class="txbx" value="" /><br />
<h5>Vraag betreft *</h5>
<select name="txtSubject" id="myOpt" class="txbx">
<option value="Aanvraag algemene informatie">Aanvraag algemene informatie</option>
<option value="Aanvraag documentatie">Aanvraag documentatie</option>
<option value="Aanvraag wisselstukken">Aanvraag wisselstukken</option>
<option value="Aanvraag log-in webshop">Aanvraag log-in webshop</option>
<option value="Aanvraag verkoopcondities">Aanvraag verkoopcondities</option>
<option value="Nieuwsbrief of Promotie">Nieuwsbrief of Promotie</option>
<option value="Andere vraag">Andere vraag</option>
</select>
<div class="erabox">
<h5>Uw vraag </h5>
<textarea name="txtText" class="txbx era" ></textarea><br />
<p>Velden met een * zijn verplicht.</p>
<input type="submit" class="sendbtn" name="btnSend" id="btnSend" value="Verzenden">
<div id="spanMessage">
</div>
</div>
</form>
Gewijzigd op 10/02/2014 11:24:24 door Frederic D
 
PHP hulp

PHP hulp

29/11/2024 15:52:38
 
- Ariën  -
Beheerder

- Ariën -

10/02/2014 11:23:53
Quote Anchor link
Het probleem is dus dat je geen titel in de mail ziet?
 
Frederic D

Frederic D

10/02/2014 14:06:06
Quote Anchor link
Neen, het probleem is wel degelijk het versturen. Als ik op de verzend knop klik, geeft hij de php pagina weer, ipv de gegevens te verzenden en de gebruiker een "bedankt voor uw aanvraag" boodschap na te laten.
 
Ivo P

Ivo P

10/02/2014 14:23:45
Quote Anchor link
dus je ziet in de bron van de pagina van je browser de php-code?
 
Frederic D

Frederic D

10/02/2014 16:40:51
Quote Anchor link
idd ... volgens mij zit er ergens een fout (of meerdere) in de contact.php ... misschien iets met de $myopt of txtSubject?
 
Ivo P

Ivo P

10/02/2014 16:44:37
Quote Anchor link
als je de broncode van php ziet, dan ondersteunt je hosting / server geen php.

(of je gebruikt een short tag: <¿ ipv <¿php, maar dat doe je niet in de gegeven code)
 
Frederic D

Frederic D

10/02/2014 18:53:39
Quote Anchor link
Ik had ergens een haakje vergeten maar zie nu de code "1" op de contact.php pagina bij het versturen van de form, ipv op dezelfde pagina te blijven en de boodschap "bedankt voor uw aanvraag" te krijgen. Hij stuurt de mail wel door, maar de info die ik heb ingevuld staat er maar deels in...

Bedrijfsnaam:
Contactpersoon: Frederic
Email: [email protected]
Telefoon:
BTW:
Vraag betreft:

Dit is een testvraag. Groeten, Frederic
 
- Ariën  -
Beheerder

- Ariën -

10/02/2014 19:07:26
Quote Anchor link
Als je even logisch kijkt, dan zie je dat de eerste drie regels van de PHP-code hieronder gelden voor txtName, txtEmail en txtSubject.

Maar niet voor $Bedrijfsnaam, $telefoon, $BTW, $myopt. Deze zijn niet gedefinieerd namelijk, en daarom dus ook leeg.

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
<?php // kleurtjes zichtbaar in je code
$Name = htmlspecialchars($_POST['txtName']);
$Email = htmlspecialchars($_POST['txtEmail']);
$Subject = htmlspecialchars($_POST['txtSubject']);

$preText = "<strong>Bedrijfsnaam:</strong> $Bedrijfsnaam <br />";
$preText .= "<strong>Contactpersoon:</strong> $Name <br />";
$preText .= "<strong>Email:</strong> $Email <br />";
$preText .= "<strong>Telefoon:</strong> $Telefoon <br />";
$preText .= "<strong>BTW:</strong> $BTW <br />";
$preText .= "<strong>Vraag betreft:</strong> $myopt <br /><br />";
$Text = htmlspecialchars($_POST['txtText']);  

$Text = $preText . $Text;  
?>


Persoonlijk zou ik het als volgt doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php //nog een keer kleurtjes in het script
$preText .= "<strong>Telefoon:</strong> ".htmlspecialchars($_POST['txtTelefoon'])."<br />";
?>

Dan hoef je die losse nieuwe variabelen niet meer aan te maken, en houd je makkelijker overzicht in je code, en zie je in een oogopslag dat de inhoud door htmlspecialchars() gaat.
Gewijzigd op 10/02/2014 19:10:34 door - Ariën -
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

10/02/2014 19:39:53
Quote Anchor link
Ik zie er nog meer, maar $telefoon op regel 9 is leeg, en zo zijn er meer.
Zie reactie van Aar hoe het wel te doen.
 
- Ariën  -
Beheerder

- Ariën -

10/02/2014 20:18:10
Quote Anchor link
Ik gaf een enkel voorbeeld, als je logisch kijkt en ziet wat wel werkt, dan weet je ook wat je aan moet passen zodat het wel werkt.
 
Frederic D

Frederic D

11/02/2014 19:22:13
Quote Anchor link
@ Aar: Bedankt!! Uw oplossing werkt perfect zo!
Ik heb wel nog 1 probleem: hoe kan ik bvb vermelden "Bedankt voor uw aanvraag. We helpen u zo snel mogelijk verder." (eventueel op een aparte html pagina)?
Momenteel kom ik terecht op de contact.php pagina na het versturen van de form en krijg ik de boodschap "1" te zien.
Alleszinds bedankt voor uw hulp!
 
- Ariën  -
Beheerder

- Ariën -

11/02/2014 19:26:53
Quote Anchor link
Als je via jQuery werkt, dan zal die 1 juist getoond worden zodat jQuery precies weet of het gelukt is. Daarom moet je de melding in jQuery afhandelen. Dat doe je in de het ]success-event van je $.ajax() functie.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
success: function(html){
if(html == 1) {
    $('#alert').html('Het is gelukt');
} else {
    $('#alert').html('Het is mislukt. Mail ons via [email protected]');
}


Zorg dat je een HTML-element hebt met het ID 'alert'
Gewijzigd op 11/02/2014 19:29:17 door - Ariën -
 



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.