본문 바로가기

개발자 야비

php-회원가입시 사용하는 스팸등록방지용

정말 게으름의 극치를 달리는것 같다.
이게 이름이 그게 맞나모르겠네. 요즘은 기본적으로 회원가입할때 스패머 방지를 위해서 이미지에 나온 글씨를 입력하는게 하나씩 있다.
이번에 작업하면서 그걸 붙여넣을려고했는데, gd로 하면 되는데, 생각하기가 왜이리도 싫은지 아무래도 난 프로그래머가 천직이 아닌갑다. 이래 게을러서 어찌할려는지. 결국은 아주 오래전에 작업할때 쓰던것을 찾기로 했다. ㅡ_ㅡ;
그래서 찾았다. 그땐 gd셋팅이 잘 안되서 사용못했던걸, 이번에 셋팅해논 서버에서 테스트 해보니 잘된다.

<?php session_start();
  $width  = 220; //image width
  $height = 70; //image height
  $img = imagecreate($width,$height);
  $ttf_font = "TsdBG_B.TTF";
  $r = rand(100,255);
  $g = rand(100,255);
  $b = rand(100,255);
  $bg = ImageColorAllocate($img,$r,$g,$b);
  $tx = ImageColorAllocate($img,$g,$r,$b);
  ImageFilledRectangle($img,0,0,200,200,$bg);
  ImageDashedLine ($img, rand(0,10), rand(10,40), rand(100,300), rand(100,300), $tx);
  $black = ImageColorAllocate ($img, 0, 0, 0);
  $string = substr(md5(time()),0,7);
  $_SESSION['auth_img'] = $string; //세션등록
  ImageTTFText ($img, 35, 0, 28, 44,$black, $ttf_font, $string); // (글자크기, 기울기, x좌표, y좌표)
  $q = rand(60,100);
  header("Content-type:image/jpeg");
  imagejpeg($img,'',$q);?>

이 소스도 어딘가에서 보고 썼던것 같은데, 하도 오래되서 모르겠다.
위의 소스이름을 printpic.php 라고 저장을 하고. 아래와 같이 회원가입 페이지에서 사용하면 된다.
<img src='./printpic.php' border=0 align=absmiddle>
사용자가 이미지의 글짜를 입력한것과 실제 이미지에 표시된 글자가 맞는지를 확인해야 하기때문에 여기서는 session을 사용했다.
gd를 좀더 응용하면 좀더 이쁘게 사용할 수 있을테지만, 이것 찾은것도 나의 게으름으로 만족할만 하기에.. 여기까지~~~