foutmelding van een contactform in internet explorer
Ik krijg een foutmelding bij het versturen van een contactform in IE. Na het drukken op de verzendknop, komt er een scherm naar boven "bericht van webpagina" waar de volledige html broncode van de contact-pagina in vermeld staat. Als je dan op OK duwt, ga je alsnog naar de bedankt-pagina, en wordt de vraag doorgestuurd. Iemand raad hoe ik dit vervelend foutief pop-up scherm in IE kan kwijt raken?
Dit is de code:
Contactform:
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
27
28
29
30
31
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
<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>
<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>
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...');
// Email address verification, do not edit.
function isEmail($Email) {
return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$Email));
}
$Name = htmlspecialchars($_POST['txtName']);
$Email = htmlspecialchars($_POST['txtEmail']);
$Subject = htmlspecialchars($_POST['txtSubject']);;
$preText .= "<strong>Bedrijfsnaam:</strong> ".htmlspecialchars($_POST['txtBedrijfsnaam'])."<br />";
$preText .= "<strong>Contactpersoon:</strong> $Name <br />";
$preText .= "<strong>Email:</strong> $Email <br />";
$preText .= "<strong>Telefoon:</strong> ".htmlspecialchars($_POST['txtTelefoon'])."<br />";
$preText .= "<strong>BTW:</strong> ".htmlspecialchars($_POST['txtBTW'])."<br />";
$preText .= "<strong>Vraag betreft:</strong> ".htmlspecialchars($_POST['txtSubject'])."<br />";
$preText .= "<strong>Vraag:</strong><br />";
$Text = htmlspecialchars($_POST['txtText']);
$Text = $preText . $Text;
if(!sendmail::send($Email , $contactEmail , $Text , $Subject ));
header('Location: http://www.xxx.be/xxx/bedankt.html');?>
include_once './lib.php';
include_once './config.php';
if(!isPostBack()) die('Please send contact form via POST method...');
// Email address verification, do not edit.
function isEmail($Email) {
return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$Email));
}
$Name = htmlspecialchars($_POST['txtName']);
$Email = htmlspecialchars($_POST['txtEmail']);
$Subject = htmlspecialchars($_POST['txtSubject']);;
$preText .= "<strong>Bedrijfsnaam:</strong> ".htmlspecialchars($_POST['txtBedrijfsnaam'])."<br />";
$preText .= "<strong>Contactpersoon:</strong> $Name <br />";
$preText .= "<strong>Email:</strong> $Email <br />";
$preText .= "<strong>Telefoon:</strong> ".htmlspecialchars($_POST['txtTelefoon'])."<br />";
$preText .= "<strong>BTW:</strong> ".htmlspecialchars($_POST['txtBTW'])."<br />";
$preText .= "<strong>Vraag betreft:</strong> ".htmlspecialchars($_POST['txtSubject'])."<br />";
$preText .= "<strong>Vraag:</strong><br />";
$Text = htmlspecialchars($_POST['txtText']);
$Text = $preText . $Text;
if(!sendmail::send($Email , $contactEmail , $Text , $Subject ));
header('Location: http://www.xxx.be/xxx/bedankt.html');?>
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]";
?>
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
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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');
}
?>
Graag in het vervolg bij code, [code] [/code] tags gebruiken.[/modedit]
Gewijzigd op 02/04/2014 20:56:54 door Bas IJzelendoorn
Wel grappig om 2 niet gelijke controles te gebruiken voor de syntax van een mailadres, en dan beide niet waterdicht
Ivo P op 02/04/2014 22:04:09:
Wel grappig om 2 niet gelijke controles te gebruiken voor de syntax van een mailadres, en dan beide niet waterdicht
en dat terwijl het veel makkelijker kan:
Code (php)
Maar het probleem met de popup / alert zal vast door een stukje javascript veroorzaakt worden. Wellicht kun je dat eens posten?
http://wiki.pfz.nl/invoer-validatie/#regular-expressions-is-het-een-geldig-email-adres
Daar wordt aangegeven om nog een controle met een preg_match te doen.
Daar wordt nog gebruik gemaakt van {2,6} voor de top level. Dat is met de komst dit jaar van TLD's als .academy, .builders en .technology achterhaald.
Ik zou dat aanpassen naar iets als "2 of meer tekens in een tld."
Ik zal dadelijk ook het wiki artikel eens aanpassen naar de huidige tld's (al wordt daar al wel op vooruit gelopen).
In elk geval is het opsommen van alle mogelijke tld's als controle niet zo handig. Zo'n lijst kan per dag achterhaald raken door nieuwe extensies of nieuw ontstane landen of gebiedsdelen.
http://3v4l.org/pHGnQ
PHP 5.2.9 t/m PHP 5.2.13 en PHP 5.3.0 t/m PHP 5.3.2 vinden foo@localhost wel geldig
PHP 5.2.0 t/m 5.2.8 en PHP 5.2.14 t/m 5.2.17 en PHP 5.3.3 t/m 5.6.0 vinden foo@localhost niet geldig.
Ik mag hopen dat niemand nog iets lager dan PHP 5.3.3 op zijn host heeft staan en mochten ze dat wel hebben, dan raad ik ze zeker aan de beheerder te vragen om te updaten en anders naar een andere host over te stappen.
Ivo, het ligt aan de PHP versie die je gebruikt: PHP 5.2.9 t/m PHP 5.2.13 en PHP 5.3.0 t/m PHP 5.3.2 vinden foo@localhost wel geldig
PHP 5.2.0 t/m 5.2.8 en PHP 5.2.14 t/m 5.2.17 en PHP 5.3.3 t/m 5.6.0 vinden foo@localhost niet geldig.
Ik mag hopen dat niemand nog iets lager dan PHP 5.3.3 op zijn host heeft staan en mochten ze dat wel hebben, dan raad ik ze zeker aan de beheerder te vragen om te updaten en anders naar een andere host over te stappen.
Ik heb me steeds afgevraagd waarom dat filter die beperking kende. Maar dat is dus verbeterd!
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
27
28
29
30
31
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
/* ---------------------------------------------------------------------- */
/* Contact Form
/* ---------------------------------------------------------------------- */
$(function(){
$("#btnSend").click(function(){
$.ajax({type:'POST', url: 'php/contact.php', data:$('#frmContact').serialize(), success: function(response) {
$("#spanMessage").html('Please Wait...');
if(parseInt(response)>0)
{
$("#spanMessage").html('<div class="alert alert-success"><button type="button" class="close" data-dismiss="alert">×</button><strong>Bedankt voor uw vraag!</strong></div>');
}
else{
alert(response);
$("#spanMessage").html('<div class="alert alert-error"><button type="button" class="close" data-dismiss="alert">×</button><strong>Er is iets verkeerd gegaan! </strong> Probeer opnieuw.</div>');
}
}});
});
});
/* Contact Form
/* ---------------------------------------------------------------------- */
$(function(){
$("#btnSend").click(function(){
$.ajax({type:'POST', url: 'php/contact.php', data:$('#frmContact').serialize(), success: function(response) {
$("#spanMessage").html('Please Wait...');
if(parseInt(response)>0)
{
$("#spanMessage").html('<div class="alert alert-success"><button type="button" class="close" data-dismiss="alert">×</button><strong>Bedankt voor uw vraag!</strong></div>');
}
else{
alert(response);
$("#spanMessage").html('<div class="alert alert-error"><button type="button" class="close" data-dismiss="alert">×</button><strong>Er is iets verkeerd gegaan! </strong> Probeer opnieuw.</div>');
}
}});
});
});
Toevoeging op 03/04/2014 20:04:04:
Misschien heeft het iets te maken met die >0 die in de js staat? In de originele versie stond er "1" als echo in de contact.php, nu verwijs ik in de contact.php naar een andere bedankingspagina. Alleszinds het bedankingsberichtje van in de js wordt niet getoond, na het drukken op verzenden, kom je op de bedankingspagina terecht. (behalve dus in IE met een vervelende alert).
Ik heb het vermoeden dat jij dit script helemaal niet wilt. Jij wilt toch gewoon dat als er op verzenden gedrukt wordt er een nieuwe pagina wordt ingeladen waarbij de gegevens uit het formulier naar de server worden verstuurd?
Jawel, het scriptje is super, alleen gaat er telkens iets mis in IE. Het is heel vervelend en komt niet professioneel over als je voortdurend die alert krijgt bij het verzenden. Ik vraag me gewoon af hoe ik dit kan verwijderen?
if(parseInt(response)>0) niet geldt:
dus response wordt geparsed naar een in kleiner of gelijk aan 0.
Dus de vraag is dan, wat response eigenlijk is.
Je doet al een alert(response): dus wat is de inhoud van response en in hoeverre lijkt dat op een geheel getal groter dan 0?
Toevoeging op 04/04/2014 11:07:25:
Dit is de alert die ik krijg in IE. In safari etc werkt het prima.
Misschien moet ik die response in de js weghalen omdat ik in de contact.php verwijs naar een aparte pagina?
Code (php)
1
2
3
2
3
if(!sendmail::send($Email , $contactEmail , $Text , $Subject ));
header('Location: http://www.xxx.be/xxx/bedankt.html');?>
Gewijzigd op 04/04/2014 11:03:43 door Frederic D
Wat komt er in Safari als response terug? waarom lijkt dat wel op 0?
Of zegt de js engine van safari: "begint niet met een cijfer, dus ik maak er 0 van"
Het is wel zo dat ik 2x een mail binnen krijg als ik het formulier verzend in IE. Waarschijnlijk 1x door op de verzend-knop te drukken, en 1x door op de OK te drukken bij de alert...
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
* ---------------------------------------------------------------------- */
/* Contact Form
/* ---------------------------------------------------------------------- */
$(function(){
$("#btnSend").click(function(){
$.ajax({type:'POST', url: 'php/contact.php', data:$('#frmContact').serialize(), success: function(response) {
$("#spanMessage").html('Please Wait...');
if(parseInt(response)>0)
{
alert(response);
$("#spanMessage").html('<div class="alert alert-success"><button type="button" class="close" data-dismiss="alert">×</button><strong>Bedankt voor uw vraag!</strong></div>');
}
else{
alert(response);
$("#spanMessage").html('<div class="alert alert-error"><button type="button" class="close" data-dismiss="alert">×</button><strong>Er is iets verkeerd gegaan! </strong> Probeer opnieuw.</div>');
}
}});
});
});