[PHP/JavaScript]:Как обновить капчу?
-
06-07-2019 - |
Вопрос
Я показываю Captcha таким образом:
<img src="ReturnCaptcha2.php" alt="CAPTCHA" width="100" height="50">
Рядом с ним у меня есть гиперссылка с именем "Перезагрузить".Я хочу отозвать этот PHP-файл, не обновляя свою страницу.Вероятно, в этом замешан AJAX.Пожалуйста, помогите.
Решение
Почему бы не использовать http://recaptcha.net/ и избавить себя от всего этого? Они просто будут обрабатывать капчу для вас.
Вот некоторая информация об интеграции на PHP и recaptcha: http://www.google.com/recaptcha/plugins/php
Как я уже упоминал, его совсем нетрудно интегрировать в ваше веб-приложение. Попробуйте!
Другие советы
Нет ли какого-либо параметра с отметкой времени или чего-то еще, чтобы запрос не кэшировался? Почему бы не заменить src чем-то вроде (используя jquery)
$("img#your-selector").attr("src","ReturnCaptcha2.php?_="+((new Date()).getTime()));
<a href="javascript:;" title="Reload Image"
onclick="document.getElementById('captcha').src = 'cimage.php?' + Math.random();
return false">
<img src="cimage.php" alt="Enter captcha" title="Enter captcha" id="captcha"/>
</a>
Вот код, который я использую с Secureimage PHP Captcha. Р>
<form method="POST">
<input type="hidden" name="PHPSESSID" value="0b21dde61d891cd" />
<img id="siimage" src="securimage_show.php?sid=2ef186788e" alt="CAPTCHA Image" width="126" height="36" /><br />
<input type="text" name="code" /><br />
<a href="#" onclick="document.getElementById('siimage').src = 'securimage_show.php?' + Math.random(); return false">Reload Image</a>
<input type="submit" value="Submit Form" />
</form>
Может быть что-то вроде:
function reloadCaptcha()
{
img = document.getElementById('captcha');
img.src = 'ReturnCaptcha2.php';
}
А затем добавьте кнопку с onclick="reloadCaptcha();"
. Р>
Я не проверял это, и я не JS гуру, поэтому не уверен, что это будет работать.
Еще один подход - использовать немного Ajax. на вашей кнопке обновления задайте действие как: OnClick = JavaScript: reloadCaptcha (); р>
в этой функции reloadCaptcha, позвоните на ваш captcha.php и обновите div, содержащий вашу капчу с возвращаемым значением. Вы можете легко вернуть HTML, а затем встроить его в div.
Вот еще один.
Создает глобальную переменную. Проверяет наличие.
function get_captcha(){
//get original url refresh
console.log('captcha requested.');
if(typeof window.captcha_src === 'undefined'){
window.captcha_src = document.getElementById('captcha').src;
}
document.getElementById('captcha').src = window.captcha_src + '&nocache=' + Math.random();
}
Вы даже можете создать ссылку и перезагрузить свою капчу в том же разделе.Если это не проблема.
Enter Image Text <input name="captcha" type="text">
<img src="captcha.php" /><br>
<a href="captcha.php">Reload Captcha</a><br/>
что ж, я решил эту проблему с помощью простого трюка;вместо того, чтобы вводить капчу в <img>
поместите это в <iframe>
и используйте javascript, чтобы перезагрузить его, когда вам потребуется
Javascript Для перезагрузки:
function reloadCaptcha()
{
document.getElementById('cap').src='captcha.php';
}
Фактический HTML:
<iframe id="cap" src="captcha.php"></iframe>
<input type="button" value="reload" onclick="reloadCaptcha();"/>
это решает мою проблему, поправьте меня, если я где-то ошибаюсь
@мем: Я использую то же самое, но с jquery.Если вам нужно несколько заголовков на одной странице:
<img class="captcha" src="/securimage/securimage_show.php" alt="CAPTCHA Image">
<a class="capcha-refresh" href="#" ><img src="/images/Refresh-icon.png"></a>
И функция js:
$('.capcha-refresh').click(function(a){
$('.captcha').attr('src','/securimage/securimage_show.php?' + Math.random());
a.preventDefault();
})