On unload

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : On unload

Re: On unload

par Herve_be » 05 févr. 2011, 18:37

Effectivement, au lieu d'analyser le problème, j'ai foncé sur une solution qui n'était pas la bonne.

Re: On unload

par AB » 05 févr. 2011, 18:27

Finalement, j'ai fait tout autrement.
La solution entièrement php
- je recueille des données sur une page;
- en cliquant sur un bouton j'appelle une 2è page qui permet de recueillir des données complémentaires;
- là on a 2 boutons annuler (exit) / confirmer qui appelle une 3è page php qui enregistre les données et envoie un mail;

Merci quand même.
Et oui, tu nous aurais expliqué complètement les données du problème dès le début, on aurait pu te conseiller cette solution :wink:

Re: On unload

par Herve_be » 05 févr. 2011, 18:07

Finalement, j'ai fait tout autrement.

Le problème :
- je recueille des données sur une page;
- en cliquant sur un bouton j'appelle une 2è page qui enregistre les données et permet de recueillir des données complémentaires;
- on doit normalement cliquer sur un bouton qui appelle une 3è page php qui envoie un mail;
le problème est que si on sort de la page sans cliquer sur le bouton, les données ont été enregistrée mais le mail n'est pas envoyé; je voulais donc appeler quand même la 3è page quand on sort intempestivement de la 2è.

La solution entièrement php
- je recueille des données sur une page;
- en cliquant sur un bouton j'appelle une 2è page qui permet de recueillir des données complémentaires;
- là on a 2 boutons annuler (exit) / confirmer qui appelle une 3è page php qui enregistre les données et envoie un mail;

Merci quand même.

Re: On unload

par stealth35 » 02 févr. 2011, 17:52

ca marche ?

Re: On unload

par Herve_be » 02 févr. 2011, 17:51

Merci beaucoup.
Pourriez-vous me dire si ceci est correct (j'ai bêtement recopié et mis ce que j'ai modifié en gras) pour appeler la page Sendmail.php si on quitte la page qui contient le script ?

<html>
<head>
<script type='text/JavaScript'>

function getXhr(){
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr
}

/**
* Méthode qui sera appelée en quittant cette page */
function go(){
var xhr = getXhr()
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
alert(xhr.responseText);
}
}
xhr.open("GET",SendMail.php",true);
xhr.send(null);
}
</script>
</head>
<body onUnload="go()">
...
</body>
</html>

Re: On unload

par AB » 02 févr. 2011, 17:23

Oui donc depuis les évènements onbeforeunload et onunload tu appelle une fonction javascript qui fera une requête ajax. Un autre exemple plus complet de requête ajax ici.

Ah oui je précise, il faut utiliser successivement les onbeforeunload et onunload pour être compatible à la fois avec IE et les autres navigateurs.

Re: On unload

par Herve_be » 02 févr. 2011, 16:50

Merci pour les réponses,
Avant de poser la question j'avais en effet vu l'option sur le tag <body>
mais comme je suis nul en javascript ...
pouvez-vous m'aider à appeler une page php en java ?

Pour info, voici ce que fait cette page php (elle envoie un mail)

<?php
session_start();
$Comment = $_POST["Comment"];
$Message="<b>".$Comment."</b><br>".$_SESSION['$Message']."<br><p><a href='http://www.rudyv.be/VTT/index.php'>Lien vers l'agenda</a></p></body></html>";
$Message = wordwrap($Message,70);
if(mail($_SESSION['$toMail'],$_SESSION['$title'],$Message,$_SESSION['$headers'])) */
header('Location: http://www.rudyv.be/VTT/index.php');
else
echo "<br><b><Font Color=Red>Problème d'envoi eMail !</Font></b>";
exit;


?>

Re: On unload

par Mazarini » 02 févr. 2011, 14:51

Bonjour,

Essayes le code html suivant :
<HTML>
<BODY onUnload="alert('bye now!')">
Blabla
</BODY>
</HTML>
Tu devrais pouvoir faire des choses en javascript en utilisant les fonctions ajax pour appeler une page PHP. Mais testes d'abord le changement de page, la fermeture de fenêtre/onglet...

Edit : mais qu'est ce que je suis lent...

Re: On unload

par crash » 02 févr. 2011, 14:47

Tu peux utiliser javascript pour faire celà avec l'événement onBeforeUnload, exemple :

Code : Tout sélectionner

<script type="text/javascript"> window.onbeforeunload = function(e){ return 'En fermant cette page vous perdrez tout.'; } </script>
Nb : stealth35 m'a devancé :D :D

Re: On unload

par stealth35 » 02 févr. 2011, 14:46

Bonjour,
Est-il possible d'avoir la main quand on quitte une page ?
Plus exactement quand l'utilisateur ferme la page en cours, ou la quitte pour une autre page, je voudrais encore faire quelquechose, dans le fichier php courant ou dans un autre, c'est égal.
Merci
Rudy
hello, oui c'est possible en javascript :wink:
https://developer.mozilla.org/fr/DOM/wi ... foreunload

On unload

par Herve_be » 02 févr. 2011, 14:38

Bonjour,
Est-il possible d'avoir la main quand on quitte une page ?
Plus exactement quand l'utilisateur ferme la page en cours, ou la quitte pour une autre page, je voudrais encore faire quelquechose, dans le fichier php courant ou dans un autre, c'est égal.
Merci
Rudy