Page 1 sur 1

actualiser un captcha

Posté : 25 oct. 2007, 16:43
par tartpion
salut a tous
voila mon probleme est simple j'ai juste besoin de savoir comment faire pour pouvoir mettre un lien qui reactualise mon captcha sans actualiser la page

merci d'avance

Posté : 25 oct. 2007, 16:59
par Ryle
Avec du javascript. Il te suffit de modifier l'attribut src de ton image pour que le navigateur charge la nouvelle image générée par le serveur :)

Posté : 25 oct. 2007, 17:02
par tartpion
le probleme c'est que je n'y connais pas trop au javascript pourrais tu m'aider un peu plus ou m'orienter vers un endroit qui pourrait m'aider...

merci

Posté : 25 oct. 2007, 18:50
par Ryle
ben euh... je peux t'orienter vers le forum javascript du site ;)

Dans la version simple, l'idée est d'identifier l'image en lui affectant un id :

Code : Tout sélectionner

<img src="..." alt="..." id="captcha" />
Et ensuite, lorsque l'utilisateur clique sur ton lien, mettre à jour cette image :

Code : Tout sélectionner

<a href="javascript:document.getElementById('captcha').src = 'url_image_generee.php';">...</a>
Où :
document : correspond à la page
document.getElementById('captcha') : l'élément de la page dont l'id est "captcha" (donc l'image)
document.getElementById('captcha').src : l'attribut "src" de l'élément :)

(il se peut qu'il faille passer un paramètre bidon dans l'url pour éviter qu'il ne reprenne l'image du cache...)

Posté : 25 oct. 2007, 20:01
par Invité
non desolé ryde mais ca ne marche pas
<p align="center"><img alt="captcha" src="includes/captcha.php" name="captcha" title="captcha" id="captcha"/></p>

<a href="javascript:document.getElementById('captcha').src = 'includes/captcha.php';">actualiser l'image</a>

<p align="center">veuillez recopier les 4 caracteres se trouvant sur l'image ci dessus: <input name="captcha" type="text" size="20" />
</p>
à mon avis j'ai du faire une betise juste je te dis que la page s'appelle formulaire.php et que l'image se trouve dans le fichier include et s'appelle captcha.php

voila merci encore cher ryde

Posté : 26 oct. 2007, 11:39
par Ryle
C'est probablement parce que la nouvelle valeur du src est égale à l'actuelle.. essaye comme ceci :

histoire d'y voir plus clair on va faire appel à une fonction :

Code : Tout sélectionner

<a href="javascript:actualiseCaptcha();">actualiser l'image</a>
<script type="text/javascript">
function actualiseCaptcha() {
  // on génére un id bidon à partir de l'heure pour que la valeur soit différente à chaque clic sur le lien
  var d = new Date(); // on créer un objet date en js
  var id = d.getHours()+""+d.getMinutes()+""+d.getSeconds(); // on concatène heure, min et sec
  // et enfin on remplace par l'url, avec un paramètre bidon qui devrait forcer l'actualisation en changeant l'url demandée
  document.getElementById('captcha').src = 'includes/captcha.php?refresh=' + id;
}
</script>
Pas testé par contre, je te laisse essayer :)

Posté : 28 oct. 2007, 18:34
par tartpion
merci a toi ryle je n'ai pas compris pourquoi il faut faire passer des trucs bidon dans l'url j'aimerais que tu m'explique ca en quelque mots mais sinon un grand merci ca marche nikel

Posté : 29 oct. 2007, 02:10
par AB
L'explication était dans les commentaires :wink:
// on génére un id bidon à partir de l'heure pour que la valeur soit différente à chaque clic sur le lien
...
// et enfin on remplace par l'url, avec un paramètre bidon qui devrait forcer l'actualisation en changeant l'url demandée
En générant une valeur toujours différente pour refresh, le navigateur rafraichit la page car quelque chose a changé dans l'url.