navyism n@log utf-8 리퍼러(REFERER) 저장 오류
navyism님 홈 가보니 네이버 블로그로 이동되네요.
그래서 여기에 남겨봅니다.
euc-kr에서는 레퍼러가 charset에 상관없이 저장이 잘됨니다.
utf-8은 레퍼러 주소(영문)는 잘 되는데 쿼리 값.. 즉, 검색어 등에 한글이 있는 경우 쿼리 값만 사라지더라구요.
나로그(nalog) utf-8 버전도 있었는지.. 제가 utf-8로 파일들을 모두 변경 했는지 기억이 잘 안나지만..
어째든 아래 방법으로 해결했습니다. 하루 정도 레퍼러 확인 해보니 잘 되네요.
nalogd.php img 태그가 포함된 문서에 넣으세요. (저 같은 경우 공통으로 include 되는 header 파일에..)
$checkReferer = trim(urldecode($HTTP_SERVER_VARS['HTTP_REFERER'])); // 이건 필요 없는거 같긴 한데 일단 넣었습니다.
// mb_detect_encoding도 있지만 이게 모든 한글을 체크 해주지는 않더라구요. (처음 자음이 ㅈ~ㅎ등으로 시작하면 UTF-8로 인식)
// From http://w3.org/International/questions/qa-forms-utf-8.html
function set_is_utf8($string) {
return preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs', $string);
}
// EUC-KR 에서 UTF-8 변환
$set_charset = set_is_utf8($checkReferer);
if($set_charset!=true) {
// echo "EUC-KR : ".iconv("CP949", "UTF-8", $checkReferer);
$checkReferer = iconv("CP949", "UTF-8", $checkReferer);
} else {
// echo "UTF-8 : ".$checkReferer;
$checkReferer = $checkReferer;
}
// 한글만 인코딩 시작. (요건 그냥 추가)
$checkReferer = stripslashes(trim($checkReferer));
$checkReferer = eregi("^[0-9a-zA-Z./@~?&=_-]+$",$checkReferer)?$checkReferer:urlencode($checkReferer);
$checkReferer = str_replace("%3A", ":", $checkReferer);
$checkReferer = str_replace("%2F", "/", $checkReferer);
$checkReferer = ereg_replace("\+", '%20', $checkReferer);
$checkReferer = ereg_replace("%25", '%', $checkReferer);
$checkReferer = ereg_replace("%26", '&', $checkReferer);
$checkReferer = ereg_replace("%3F", '?', $checkReferer);
$checkReferer = ereg_replace("%3D", '=', $checkReferer);
// $HTTP_SERVER_VARS[HTTP_REFERER] = ereg_replace("%0D%0A", '<br />', $HTTP_SERVER_VARS[HTTP_REFERER]); // 줄바꿈 변환..
// $HTTP_SERVER_VARS['HTTP_REFERER'] = $checkReferer;
그리고, 레퍼러 체크하는 이미지는 아래 처럼..
<img src="http://도메인/nalog/nalogd.php?counter=카운터이름&url={$checkReferer}" width='1px' height=0 style='display:none;'>
▶ 블로그 조회수 베스트 400위 [보기] ▶ 섹시모델 19세 한국계 강이함 사진 [보기] ▶ 50세 이상 비키니 콘테스트 사진 [보기] ▶ SDN48 사진 [보기] ▶ 외제차라면 환장하는 사진 [보기] ▶ 일본 러브텔 사진 [보기] ▶ 예쁜 엉덩이 선발 대회 사진 [보기] ▶ 일산 호수공원의 민폐아줌마 동영상 [보기] ▶ 고속도로에서 배기량빨 믿고 깝치던 체어맨W의 굴욕 동영상 [보기] ▶ 인어시체 발견 [보기] ▶ 민망한 아나운서 비난 [보기] ▶ 중국 버스 수녀 쩍벌녀 동영상 [보기] ▶ 조종사 악명높은 공항 사진 [보기] ▶ 미스 젖은셔츠 선발대회 사진 [보기] ▶ 얼굴이 예뻐지는 기구들 사진 [보기] ▶ 농사짓는 달력 사진 [보기] ▶ 전신스캐너 가리개 사진 [보기] ▶ 훈녀 혼혈 쌍둥이 사진 [보기] ▶ 황홀한 바디페인팅의 세계 사진 [보기] ▶ 병따개 비키니 사진 [보기] ▶ 멕시코 성인식 사진 [보기] ▶ 극한 상황에서 잠자는 사람들 사진 [보기] ▶ 살아있는 외계인 충격 동영상 [보기] ▶ 패리스 힐튼 민망 사진 [보기] ■ 꿈해몽, 꿈풀이 ■ 최신 주소검색, 변경된 우편번호 조회 및 영문우편번호 ■ 웹타자연습, 한글타자(한타), 영문타자(영타), 점수기록 ■ 아이피조회 추적, 국가별 나라별 아이피 국기 ■ 포토샵 없이 웹에서 글자를 이미지로 변환 ■ 만세력 음력양력 변환 달력 (육십갑자,12지,24절기...) ■ 24절기 [二十四節氣] 유래와 세시풍속의 의미 및 뜻 ■ 한눈에 보는 육십갑자표 ■ 디데이 계산 ■ 기념일 계산 ■ 피임진단 : 배란일, 임신기간, 가임주기, 배란기, 생리주기, 임신가능일 계산 프로그램 ■ 구구단 19단표, 19단송 ■ 아라비아숫자 한자변환기(금액 한자변환) ■ 영문오타 한글로 자동변환 ■ 한글 발음을 영어로 변환 ■ 한글 발음을 일어로 변환 ■ 유니코드·헥사코드 변환기