반응형
회원가입이나 결제 시에 컴퓨터와 사람을 구분하기 위해 악의적인 행위가 발생되는 것을 방지하기 위해 활용됩니다.
캡차를 생성하는 방법은 다양하지만 php만으로도 간단하게 이미지 기반의 캡차를 생성을 할 수 있습니다.
페이지는 캡차를 보여주는 페이지와 캡차를 생성하는 페이지로 구성되어 있습니다.
1. 캡차를 보여주는 페이지 (회원가입)
captcha.php를 호출하면서 현재 시간을 같이 parameter로 보내고 있습니다. captcha.php가 호출되면서 session의 값과, 이미지의 캐시를 새로고침 하기 위해서입니다.
<?php
function exact_time() {
$t = explode(' ',microtime());
return floor(($t[0] + $t[1])*1000);
}
?>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>
function refresh(){
$("#captchaImg").removeAttr('src').attr("src", "captcha.php?id=" + new Date().getTime());
}
</script>
<strong style="color:#4e5a64;">Captcha Number :</strong>
<img id="captchaImg" src="captcha.php?id=<?=exact_time()?>" height="30px;" width="100px">
<a href="javascript:refresh();">
<img src="../img/refresh.png" style="width:18px;" title="새로고침"/>
</a>
2. 캡차를 생성하는 페이지 (captcha.php)
캡차 문자열을 세션에 저장해 회원가입 시 캡차를 체크할 수 있습니다. 랜덤 문자열을 이미지 위에 생성하고 php header 함수를 통해 이미지를 노출해 줍니다.
<?php
session_start();
$ranStr = rand(111111,999999);
$ranStr = substr($ranStr, 0, 6);
$_SESSION['cap_code'] = $ranStr;
$newImage = imagecreatefromjpeg("../img/cap_bg0.jpg");
//이미지 색상 지정
$txtColor = imagecolorallocate($newImage, 0, 0, 0);
//이미지 위에 글자 넣기
imagestring($newImage, 5, 4, 5, $ranStr, $txtColor);
header("Content-type: image/jpeg");
imagejpeg($newImage);
?>
반응형
'개발이야기 > PHP' 카테고리의 다른 글
[PHP] 문자열 비교 strcmp 사용법, 예제 (로그인) (0) | 2022.10.25 |
---|---|
[PHP] 간단히 페이징 구현하기, 리스트 페이징 (bootstrap 페이징 css) (0) | 2022.10.14 |
[PHP] https 체크하기, http->https 리다이렉트 시키키 (0) | 2022.10.07 |
[PHP] 디렉토리 파일 삭제, 특정 파일 삭제, 특정 파일 제외 삭제 (unlink) (0) | 2022.09.30 |
[PHP] 위도/경도로 거리 구하기 (0) | 2022.09.26 |
댓글