actualiser un captcha

Eléphant du PHP | 54 Messages

25 oct. 2007, 16:43

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 oct. 2007, 16:59

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 54 Messages

25 oct. 2007, 17:02

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 oct. 2007, 18:50

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...)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

25 oct. 2007, 20:01

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 oct. 2007, 11:39

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 54 Messages

28 oct. 2007, 18:34

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

ViPHP
AB
ViPHP | 5818 Messages

29 oct. 2007, 02:10

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.