본문 바로가기
Tip & Tech/php

iframe을 이용한 중복체크

by 변기환 2012. 4. 27.

중복체크를 위해 새창을 띄우자니 사용자입장에서 불편하고 폼을 넘긴 뒤 중복체크를 하니 이것도 문제가 많다. 특히 history.go() 함수를 사용하여 이전 페이지로 되돌리는 과정에 입력된 자료가 사라지는 등 브라우져 종류와 버전에 따라 다양한 문제가 발생하였다


그래서 눈에 보이지 않게 iframe을 생성하고 거기에 사용자가 입력한 자료를 보내고 체크하는 방법을 사용했다. IE는 물론 FireFox, Safari에서 확인 하니 잘된다.


<script>
function id_check()
{
	var f = document.member_form;

	if (f.id.value == "")
	{
		alert("회원 아이디를 입력하세요.");
		f.id.focus();
		return;
	}
	hiddenframe.location.href="./check.php?id="+document.member_form.id.value;
}

function Form_Send()
{
	var f = document.member_form;

	if(f.mb_id_enabled.value == '')
	{
		alert("아이디 중복 체크를 하세요.");
		return;
	}

	if(f.mb_id_enabled.value == -1)
	{
		alert("중복된 아이디가 있어서 가입할 수 없습니다.");
		return;
	}
        document.member_form.submit();
}
</script>
<input name="mb_id_enabled" value="" type="hidden">
<input maxlength="20" size="20" name="id"> 
<a href="javascript:id_check();">중복체크</a> <input value="전송" onclick="Form_Send();" type="button"> <iframe name="hiddenframe" width="0" height="0">

javascript로 넘겨온 변수를 가지고 DB에 접속해서 중복된 자료가 있고 없음에 따라 부모창의 mb_id_enabled 값을 변경되게 했다.


mb_id_enabled 값이 -1이면 폼을 넘길 수 없도록했지만, 중복체크 후 다시 입력을 변경한 경우 체크해야 하는 알고리즘은 이를 이용하는 사용자에게 숙제로 남겨 놓는다.


[check.php]

<?

// DB 접속 및 검색문은 생략
$row = mysql_fetch_object($result);

if($row)
{
?>
	<script>
		alert("<?=$id?>은(는) 이미 가입된 아이디 이므로 사용하실 수 없습니다.");
		parent.document.getElementById("mb_id_enabled").value = -1;
	</script>
<?
}
else
{
?>
	<script>
		alert("<?=$id?>은(는) 중복된 아이디가 없습니다. 사용하셔도 좋습니다.");
		parent.document.getElementById("mb_id_enabled").value = 1;
	</script>
<?
}
?>


댓글