회원가입시 사용하는 랜덤 스트링 만들기
페이지 정보
본문
## GD로 글쓰기, 워터마크 정도로 검색해보세요. ##
많은 포탈 사이트에서 회원가입시 자동가입을 막기위해 사용되는 이미지 만들기
폰트파일이 없는 경우는 첨부파일 링크로 가서 다운 받으십시요
암호화 하는 부분은 공개할 수가 없어서 base 64로 encoding 하지만 사용하시는 암호화 모듈이 있다면 그것을 사용하면 될것이다.
<?
// indent rule
// vi:ts=4 sts=4 sw=4
## 회원가입시 사용하는 랜덤 스트링 만들기
## 2005.03.17 오후 11:48:40 by Ulovem.com
$buffer = base64_encode("abcd");
echo "<img src='./test.html?par=$buffer'>";
?>
------- test.html ----
<?php
function showStrImg($buf = false , $size = 10 , $fontsize = 20, $height = 50){
if ( ($size == false && $buf == false) || $buf == false ){
$rndstr = MakeRandString($size);
showStrImg(MakeRandString($size), $size , $fontsize, $height);
return md5($rndstr);
exit;
} else {
$size = strlen($buf);
}
header("Content-type: image/jpeg");
$im = imagecreate(ImageFontWidth($fontsize) * ($size * 3)+50, $height);
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
for ( $i = 0 ; $i < $size; $i ++){
$angel = RandArray(array(45, -45));
imagettftext($im, $fontsize, $angel, ImageFontWidth($fontsize) * ($i * 3) +30, $height-$fontsize, $black, "./gulim.ttf",substr($buf, $i, 1));
imagegammacorrect ($im,RandNum(1,50),RandNum(1,50));
}
imagegif($im);
imagedestroy($im);
}
function RandNum($start,$end){
return mt_rand($start, $end);
}
function RandArray($arr){
$seq = mt_rand(1, sizeof($arr));
return $arr[$seq];
}
function MakeRandString($inLength=16){
mt_srand( MakeSeed() );
$newstring="";
if( $inLength > 0){
while( strlen($newstring) < $inLength ){
switch( mt_rand(2,3) ){
case 1: $newstring.=chr(mt_rand(49,57)); break; // 0-9
case 2: $newstring.=chr(mt_rand(65,90)); break; // A-Z
case 3: $newstring.=chr(mt_rand(97,122)); break; // a-z
}
}
}
return $newstring;
}
function MakeSeed(){
$hash = md5(microtime());
$loWord = substr($hash, -8);
$seed = hexdec($loWord);
$seed &= 0x7fffffff;
return $seed;
}
showStrImg(base64_decode($_GET["par"]));
?>
출처 :
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=39015&sca=&sfl=wr_subject%7C%7Cwr_content&stx=showStrImg&sop=and
많은 포탈 사이트에서 회원가입시 자동가입을 막기위해 사용되는 이미지 만들기
폰트파일이 없는 경우는 첨부파일 링크로 가서 다운 받으십시요
암호화 하는 부분은 공개할 수가 없어서 base 64로 encoding 하지만 사용하시는 암호화 모듈이 있다면 그것을 사용하면 될것이다.
<?
// indent rule
// vi:ts=4 sts=4 sw=4
## 회원가입시 사용하는 랜덤 스트링 만들기
## 2005.03.17 오후 11:48:40 by Ulovem.com
$buffer = base64_encode("abcd");
echo "<img src='./test.html?par=$buffer'>";
?>
------- test.html ----
<?php
function showStrImg($buf = false , $size = 10 , $fontsize = 20, $height = 50){
if ( ($size == false && $buf == false) || $buf == false ){
$rndstr = MakeRandString($size);
showStrImg(MakeRandString($size), $size , $fontsize, $height);
return md5($rndstr);
exit;
} else {
$size = strlen($buf);
}
header("Content-type: image/jpeg");
$im = imagecreate(ImageFontWidth($fontsize) * ($size * 3)+50, $height);
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
for ( $i = 0 ; $i < $size; $i ++){
$angel = RandArray(array(45, -45));
imagettftext($im, $fontsize, $angel, ImageFontWidth($fontsize) * ($i * 3) +30, $height-$fontsize, $black, "./gulim.ttf",substr($buf, $i, 1));
imagegammacorrect ($im,RandNum(1,50),RandNum(1,50));
}
imagegif($im);
imagedestroy($im);
}
function RandNum($start,$end){
return mt_rand($start, $end);
}
function RandArray($arr){
$seq = mt_rand(1, sizeof($arr));
return $arr[$seq];
}
function MakeRandString($inLength=16){
mt_srand( MakeSeed() );
$newstring="";
if( $inLength > 0){
while( strlen($newstring) < $inLength ){
switch( mt_rand(2,3) ){
case 1: $newstring.=chr(mt_rand(49,57)); break; // 0-9
case 2: $newstring.=chr(mt_rand(65,90)); break; // A-Z
case 3: $newstring.=chr(mt_rand(97,122)); break; // a-z
}
}
}
return $newstring;
}
function MakeSeed(){
$hash = md5(microtime());
$loWord = substr($hash, -8);
$seed = hexdec($loWord);
$seed &= 0x7fffffff;
return $seed;
}
showStrImg(base64_decode($_GET["par"]));
?>
출처 :
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=39015&sca=&sfl=wr_subject%7C%7Cwr_content&stx=showStrImg&sop=and
- 이전글이미지 크기 및 용량 21.02.09
- 다음글date() , mktime() 사용법 21.02.09
댓글목록
등록된 댓글이 없습니다.