2011-02-08 4 views
0

나는 PHP로 배우기 위해 자체 captcha 클래스를 만들었습니다. 내가 원하는대로 일하는 것이 좋습니다. "이미지 새로 고침"버튼을 추가하려했지만 어떻게해야하는지 모르겠습니다.PHP와 JavaScript : 캡쳐 이미지 새로 고침

형식 번호 :

<p><img src="img.php" alt="Captcha!" /></p> 

img.php 번호 :

<?php 
require_once 'captcha.class.php'; 
$captcha = Captcha::instance(10); 
echo $captcha; 
?> 

__toString 방법 : 출력 할 CAPTCHA

public function __toString() 
{ 
    ob_start(); 
    header('Content-Type: image/jpeg'); 
    imagejpeg($this->drawImage(), null, 100); 
    return ob_get_flush(); 
} 

이러한 코드. 이 이미지를 어떻게 새로 고칠 수 있습니까? AJAX의 무언가가 멋질 것입니다! 감사합니다.

답변

0

양식이 완료되면 captcha를 어떻게 확인하고 있습니까? 세션 변수?

단일 세션 변수 인 경우 일반 자바 스크립트를 사용하여 이미지를 새로 고칠 수 있습니다. 임의의 쿼리 문자열을 이미지 URL의 끝에 추가하면 캐싱 문제가 발생하지 않습니다.

+0

감사합니다. 작동 중입니다. – thom

+0

:)), 코드가 무엇을하고 있지 않습니까? –

0

새 captcha를 생성하는 페이지로 AJAX 호출을 다시로드 할 수 있습니까? 새로 생성 된 결과를 DIV로 반환 하시겠습니까?

+0

내 captcha 클래스가 이미지를 덤프합니다 (위 참조). 고맙습니다. – thom

0
<html> 
<head> 
<script type="text/javascript"> 
    function reload() 
    { 
     var img = new Image(); 
     img.src = 'img.php'; 
     var x = document.getElementById('captcha'); 
     x.src = img.src; 
    } 
</script> 
</head> 
<body> 
<a href="javascript: reload()" >Reload</a> 
<img src="img.php" alt="Captcha!" id="captcha" /> 
</body> 
</html> 

은 어쩌면 일반 x.src = 'img.php' 트릭을 할 것입니다하지만 단지 (이 allso가/검색 배우고 당신에게 더 많은 것을 제공) 그것을 얻을 내가 다른 이미지를 사용하여 제작 한 새 요청을 것 슈어 될 수 있습니다.

+0

나는 항상 같은 이미지를 얻는다. 캐시를 청소하는 것은 어떨까요? 나는 그것을 시도 할 것이다, 고마워. – thom

+0

버그 수정을 원하면 shure하지 말고, 클래스에서 이미지를 출력 할 때 이전에 헤더를 설정하십시오. 머리글 ("Expires : Sat, 1997 년 7 월 26 일 05:00:00 GMT")과 같은 smth; // 과거의 날짜'트릭을 할 것 같아요. –

+0

실제로 다른 변수 이름이 아닌 다른 URL로 설정해야합니다 (무의미 함). ''img.php? random = '+ Math.random()'과 같은 것을 제안합니다. – igorw

관련 문제