foutmelding van een contactform in internet explorer

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Frederic D

Frederic D

02/04/2014 20:37:21
Quote Anchor link
Hey,

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)
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
<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>


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...');

// 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)
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]";

?>


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
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');
}

?>


Graag in het vervolg bij code, [code] [/code] tags gebruiken.[/modedit]
Gewijzigd op 02/04/2014 20:56:54 door Bas IJzelendoorn
 
PHP hulp

PHP hulp

02/05/2024 10:06:39
 
Ivo P

Ivo P

02/04/2014 22:04:09
Quote Anchor link
Wel grappig om 2 niet gelijke controles te gebruiken voor de syntax van een mailadres, en dan beide niet waterdicht
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/04/2014 23:44:42
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "Dit is geen correct e-mailadres";
}

?>


Maar het probleem met de popup / alert zal vast door een stukje javascript veroorzaakt worden. Wellicht kun je dat eens posten?
 
Ivo P

Ivo P

03/04/2014 09:06:37
Quote Anchor link
niet helemaal, want dan wordt ook bijvoorbeeld "admin@localhost" geaccepteerd als mail adres.

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.
 
Wouter J

Wouter J

03/04/2014 09:43:14
Quote Anchor link
Ivo, het ligt aan de PHP versie die je gebruikt: 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 P

Ivo P

03/04/2014 09:48:04
Quote Anchor link
ik word oud :-)

Ik heb me steeds afgevraagd waarom dat filter die beperking kende. Maar dat is dus verbeterd!
 
Frederic D

Frederic D

03/04/2014 19:57:49
Quote Anchor link
Dit is de javascript ...

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
/* ---------------------------------------------------------------------- */
/*    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">&times;</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">&times;</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).
 
Frank Nietbelangrijk

Frank Nietbelangrijk

03/04/2014 23:50:19
Quote Anchor link
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?
 
Frederic D

Frederic D

04/04/2014 10:14:40
Quote Anchor link
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?
 
Ivo P

Ivo P

04/04/2014 10:36:46
Quote Anchor link
die alert lijkt volgens jouw javascript te verschijnen als
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?
 
Frederic D

Frederic D

04/04/2014 10:55:09
Quote Anchor link
Afbeelding

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)
PHP script in nieuw venster Selecteer het PHP script
1
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
 
Ivo P

Ivo P

04/04/2014 11:10:40
Quote Anchor link
zet op regel 15 ook eens een alert(response)

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"
 
Frederic D

Frederic D

05/04/2014 09:23:14
Quote Anchor link
Maakt geen verschil als ik op regel 15 een alert(response) zegt.
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)
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

* ---------------------------------------------------------------------- */
/*    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">&times;</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">&times;</button><strong>Er is iets verkeerd gegaan! </strong> Probeer opnieuw.</div>');
       }    
}});
});
});
 
 



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.