problemen met versturen mailing form
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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');
}
?>
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)
1
2
3
4
5
6
7
8
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]";
?>
// Write contact email reciever here
$contactEmail = "[email protected]";
$email_subject = "$myOpt";
// Write Subscribe email reciever here
$subscribeEmail = "[email protected]";
?>
3) CONTACT.PHP
Code (php)
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
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';
?>
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
Het probleem is dus dat je geen titel in de mail ziet?
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.
dus je ziet in de bron van de pagina van je browser de php-code?
idd ... volgens mij zit er ergens een fout (of meerdere) in de contact.php ... misschien iets met de $myopt of txtSubject?
(of je gebruikt een short tag: <¿ ipv <¿php, maar dat doe je niet in de gegeven code)
Bedrijfsnaam:
Contactpersoon: Frederic
Email: [email protected]
Telefoon:
BTW:
Vraag betreft:
Dit is een testvraag. Groeten, Frederic
Maar niet voor $Bedrijfsnaam, $telefoon, $BTW, $myopt. Deze zijn niet gedefinieerd namelijk, en daarom dus ook leeg.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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;
?>
$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)
1
2
3
2
3
<?php //nog een keer kleurtjes in het script
$preText .= "<strong>Telefoon:</strong> ".htmlspecialchars($_POST['txtTelefoon'])."<br />";
?>
$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 -
Zie reactie van Aar hoe het wel te doen.
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.
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!
Code (php)
1
2
3
4
5
6
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]');
}
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 -