Alleen bij IE8 foutmelding bij bevestiging formulier (Ajax)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rene Wennekes

Rene Wennekes

09/12/2010 12:48:04
Quote Anchor link
Ik heb een probleem op http://www.wennekes.info/claro-projekte/contact.php

Ik krijg bij verzenden ieder keer een melding
"De website http://www.wennekes.info/claro-projekte/contact.php kan niet worden geopend.
Heb helaas alleen IE8, wellicht doet ie het bij 7 ook. Lager interesseert me niet.

De bewerking wordt afgebroken"

De broncode voor het verzenden van de mail is

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
<?php
$recipient
=$_REQUEST["recipient"];
$subject=$_REQUEST["subject"];

$ipadress=$_REQUEST["ipadress"];

$code=$_REQUEST["code"];
$enccode=$_REQUEST["enccode"];

$Naam=$_REQUEST["Naam"];
$Adres=$_REQUEST["Adres"];
$Postcode=$_REQUEST["Postcode"];
$Woonplaats=$_REQUEST["Woonplaats"];
$Telefoon=$_REQUEST["Telefoon"];
$Email=$_REQUEST["Email"];
$vraag=$_REQUEST["vraag"];

$bericht="";
$bericht=$bericht."IP-adres: $ipadress\n\n";
$bericht=$bericht."Naam: $Naam\n";
$bericht=$bericht."Adres: $Adres\n";
$bericht=$bericht."Postcode: $Postcode\n";
$bericht=$bericht."Woonplaats: $Woonplaats\n";
$bericht=$bericht."Tel.: $Telefoon\n";
$bericht=$bericht."E-mail: $Email\n\n";
$bericht=$bericht."$vraag\n";

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Datum in het verleden
header('Content-type: text/html');

if(mail($recipient, "$subject", $bericht, "From: "."$Email")) {
  // Bericht is verzonden
  echo "Your message is succesfully send.\n\n$bericht\n\n$Email";
  }
else {
  // Bericht niet verzonden
  echo "Something went wrong.";
  }

?>


Iemand bekend met dit probleem?
Gewijzigd op 09/12/2010 12:58:17 door Rene Wennekes
 
PHP hulp

PHP hulp

22/12/2024 09:13:48
 
Kris Peeters

Kris Peeters

09/12/2010 13:06:45
Quote Anchor link
Ik zie het probleem voorlopig niet.

Met andere browsers wordt het formulier leeggemaakt, bij het behandelen van de response. Bij IE8 doet het dat dus niet.
Juist?

Edit:
Zeg, wordt de mail gestuurd (met IE8)?
Kwestie van het probleem te isoleren en te zien tot waar alles wel goed loopt en waar het fout begint te lopen.
Gewijzigd op 09/12/2010 13:14:42 door Kris Peeters
 
Rene Wennekes

Rene Wennekes

09/12/2010 13:27:43
Quote Anchor link
Ja, de mail wordt wel verstuurd. Zelfs de bevestigingsalert verschijnt gewoon.
Als ik dan op ok druk ..... alles weg en foutmelding.

Kan het probleem dus ook niet isoleren. Alles ziet er goed uit.
En overige, ff, opera, safari, perfectemundo (of course).

Heb ook al in ie8 advanced options, friendly http berichten uitgeschakeld en zo, helpt allemaal niks.
Ook alle code in de <head> maakt ook geen verschil.
Gewijzigd op 09/12/2010 13:35:29 door Rene Wennekes
 
Jacco Engel

Jacco Engel

09/12/2010 14:04:49
Quote Anchor link
Ik krijg helemaal geen meldingen in IE :).

Maar volgens mij ga je al eerder de fout in ;) en dat is dat je je captcha met JS genereerd ;)

Dit regeltje JS is het enige dat ik in firebug hoef in te voeren om de captcha te krijgen :
document.getElementById('captcha').src.split('=')[1]

O en als ik :
document.getElementById('code').value = document.getElementById('captcha').src.split('=')[1]

in mn Firebug doe word hij direct ingevuld zonder dat ik er iets voor heb hoeven doen

Werkt ook prima in de IE debugger trouwens.

PS: je weet dat IE een js debugger onder f12 heeft zitten? (geen goeie maar beter dan niets)
Gewijzigd op 09/12/2010 14:10:13 door Jacco Engel
 
Rene Wennekes

Rene Wennekes

09/12/2010 14:10:54
Quote Anchor link
Ja Jacco,
geen enkel systeem is waterdicht. Maar laten we aannemen dat niet de hele wereld zo clever is als jij ;-)

Ik heb zo het idee dat het probleem bij IE8 of de standaardinstelling kan liggen. Aan de code lijkt het niet te liggen.

Het schijnt dat deze melding niet bij iedereen voorkomt.
Zelf heb ik niks aan mijn ie instellingen veranderd.
Behalve dan de updates die je krijgt van Microschoft.
 
Jacco Engel

Jacco Engel

09/12/2010 14:11:51
Quote Anchor link
Nee niet de hele wereld nee, maar mensen die misbruik van het form gaan maken die zijn nog veel slimmer ;)
 
Kris Peeters

Kris Peeters

09/12/2010 14:12:18
Quote Anchor link
Als de mail wordt verstuurd, is de Ajax request dus in orde en zou het aan de response moeten liggen.

Wordt alert(xmlHttp.responseText) uitgevoerd?

Wie weet kan het ook liggen aan
if (xmlHttp.responseText != "Something went wrong.")

Misschien is er ergens een spatie tussengeglipt of zo.

Probeer eens je respons in een getal te gieten.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
...
if (mail(...))
  echo 1;
else
  echo 2;
?>


...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
if ( Number(xmlHttp.responseText)== 1) {
  // formulier legen ...
}
else {
  // ...
}


Zie eens of dat helpt
 
Rene Wennekes

Rene Wennekes

09/12/2010 14:23:02
Quote Anchor link
Heb alle 3 regels eens uitgecommenteerd zodat het formulier niet gereset wordt.
En nog geen verandering.

Overigens zodra ik de oplossing heb worden deze bestanden uiteraard verplaatst.

Zeker als Jacco, bedoelt uit goede hart om me te wijzen op veiligheid, de mensen slimmer maakt dan zou moeten.

Ik zit wel te denken aan een php regel in het verwerkings php script zodat deze niet misbruikt kan worden.
Jaco, weet jij een manier in php om te kijken of een script wordt aangeroepen vanuit een ander domein zodat ik kan exit-en?
 
Jacco Engel

Jacco Engel

09/12/2010 14:26:13
Quote Anchor link
HTTP_REFERER, in je server vars

Toevoeging op 09/12/2010 14:27:16:

Rene Wennekes op 09/12/2010 14:23:02:
Zeker als Jacco, bedoelt uit goede hart om me te wijzen op veiligheid, de mensen slimmer maakt dan zou moeten.


Ik maak mensen niet slimmer dan zou moeten , ik maak jou iets slimmer dan dat je op dit moment bent ;) dr is een groot verschil :) (niet lullig bedoeld :))

Overigens ga je niets aan referer hebben omdat je hele form gewoon met js kan worden ingevuld en verstuurd, houd dus in dat de referer dan altijd zal kloppen :)
Gewijzigd op 09/12/2010 14:28:11 door Jacco Engel
 
Rene Wennekes

Rene Wennekes

09/12/2010 14:40:37
Quote Anchor link
Het gaat erom dat deze fout voor de klanten (bij dat gedeelte waar het plaatsvind) storend is.

Dat er enkelen zijn die viagra mailtjes willen versturen ....

Maar 100% beveiliging bestaat er niet.

Maar dit zijdraadje wil ik nu stoppen met discussie. Dus bij deze.

Ik wil nu verder gaan zodat ik weet waar het probleem ligt (client/server-wat?)

Dus Jacco, bedankt voor je bijdrage, maar nu ff geen beveiligingsdiscussie meer.
 
Niels K

Niels K

09/12/2010 15:21:58
Quote Anchor link
Zou het aan de global $_REQUEST kunnen liggen? Want ik weet dat daar nog wel eens 'onbemerkt' wat uit floept. Gewoon $_POST en $_GET gebruiken dus.

Verder mis ik formulier controle?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$ipadress
=$_REQUEST["ipadress"];
?>

Oh? Sinds wanneer? Volgens mij bedoel je gewoon $_SERVER['REMOTE_ADDR']?

Plus variabele uit de quotes.
Verder kan je het AJAX gedeelte het beste met JQuery doen. Of een dergelijk javascript framework. En gebruik firebug eens om te controleren of de AJAX request goed wordt uitgevoerd?
Gewijzigd op 09/12/2010 15:24:15 door Niels K
 
Kris Peeters

Kris Peeters

09/12/2010 15:26:35
Quote Anchor link
Ja, probeer eens met jQuery.

Dat wordt dan
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
function handleStateChange(data) {  // in dit geval is de naam niet zo super gekozen, maar ja ...
  alert(data); // De uitvoer van contactsendmail.php zou hier moeten verschijnen.
  if (data != "Something went wrong.") {
    document.forms[0].reset(); //Wissen van formulier om te voorkomen dat deze nog eens verzonden wordt (spammen).
  }
}

function doRequestUsingPOST() {
  
  // ... begin van de functie is onveranderd
  
  queryString = queryString + "&vraag=" + vraag;
  
  var url = "contactsendmail.php?timeStamp=" + new Date().getTime();
  
  $.ajax({
    type:     "POST",
    url:      url,
    data:     queryString,
    success:  handleStateChange
  });

} // End of function doRequestUsingPOST()


Uiteraard jQuery downloaden en in je site laden ...
Gewijzigd op 09/12/2010 15:33:43 door Kris Peeters
 

09/12/2010 19:44:45
Quote Anchor link
Je kunt in IE ook gebruik maken van "ontwikkelhulpprogramma's", daarmee kan je dus je code mee nalopen, valideren en weet ik veel wat.
Hier kunnen overigs een paar elementen niet geladen worden in IE8
Gewijzigd op 09/12/2010 19:46:19 door
 



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.