PHP/JavaScript] : 보안관을 새로 고치는 방법?
-
06-07-2019 - |
문제
이런 식으로 보안 문자를 보여주고 있습니다.
<img src="ReturnCaptcha2.php" alt="CAPTCHA" width="100" height="50">
근처에 "Reload"라는 하이퍼 링크가 있습니다. 내 페이지를 새로 고치지 않고 해당 PHP 파일을 기억하고 싶습니다. 아마도 Ajax는 그것에 관여하고 있습니다. 도와주세요.
해결책
사용하지 않는 이유 http://recaptcha.net/ 그리고 모든 문제를 저장합니까? 그들은 단지 당신을 위해 보안관을 처리 할 것입니다.
다음은 PHP 및 Recaptcha에 대한 통합 정보입니다.http://www.google.com/recaptcha/plugins/php
앞서 언급했듯이 WebApp에 통합하는 것은 전혀 어렵지 않습니다. 시도 해봐!
다른 팁
요청이 캐시되지 않도록 타임 스탬프가있는 매개 변수가 없습니까? 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>
SecureAmage 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를 사용할 수 있습니다. 새로 고침 버튼에서 다음과 같은 작업을 제공합니다.
이 Reloadcaptcha 함수에서 Captcha.php에 전화를 걸고 CARTCHA를 보유한 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를 사용합니다. 한 페이지에 몇 개의 capthcas가 필요한 경우 :
<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();
})