Я пишу контактную форму Ajax. Я тоже написал свою собственную капчу. Но у меня проблема с обновлением изображения. Я написал это так:
Перезагрузка captcha:
<code>$("#captchaSection").load("captcha_p.php");</code>
И файл captcha_p.php:
<code>< img src="captcha.php" name="imgCaptcha" /></code>
И я добавил эти строки в capcha.php:
header("Cache-Control: no-cache, no-store, must-revalidate"); header('Content-type: image/png'); imagepng($im); imagedestroy($im);
Он отлично работает на Google Chrome и Safari. Но не работает в Firefox и Explorer.
Благодаря!
Похоже, что Firefox и IE кэшируют изображение. Чтобы предотвратить это, добавьте временную метку к URL-адресу и источнику изображения:
В Javascript вы можете использовать new Date().getTime()
:
$("#captchaSection").load("captcha_p.php?" + new Date().getTime());
В PHP вы можете использовать microtime()
:
< img src="captcha.php?<?php echo microtime(); ?>" name="imgCaptcha" />
Я не вижу никакой пользы от использования .load()
для загрузки HTML, который содержит изображение. Было бы проще просто изменить свойство src
изображения, например:
// refresh captcha $('img[name=imgCaptcha]').prop('src', 'captcha.php?' + new Date().getTime());