회원가입 프로그램을 구해서 설치중인데 에러좀 봐 주세요

kimyh의 이미지

php 프로그램을 공부할려고 회원가입 프로그램을 구해서 설치하면서
소스를 공부하고 있습니다.

선배님들 좀 도와 주세요.
mysql db에 접속은 잘 되는것 같은데
db에 있는 내용을 불러와서 처리를 못하는것 같군요.

다음은 id 중복검사부분의 php 소스인데
실제 등록된 똑같은 아이디가 있는데도 "입력하신 는 사용할수 있는 아이디 입니다." 라고 나오는가 하면 똑같은 아이디가 있지도 않은데 사용할수 없는 아이디라고 나옵니다.
따라서 방금 입력한 id갑($id)의 값을 출력하지 못하며 db에 있는값과 비교를 못하는것 같습니다.

도와 주시면 정말 많은 도움이 되겠습니다.

mysql은 mysql-3.23.43 버전이고 php는 php-4.2.1 입니다.

<?
	include ("dbcon.php");

	function err($errMsg) {
		echo("<script language=\"javascript\">\n");
		echo(" alert(\"".$errMsg."\");\n");
		echo(" history.back();\n");
		echo("</script>");
		exit;
	}


	if ($id) {

		err("ID를 입력하세요.");
	}

	
	$id = trim($id);
	$id = addslashes($id);
	$id = strtolower($id);

	$query = "SELECT count(*) FROM member WHERE id = '".$id."'";
	$result = @mysql_query($query);
	$row = mysql_fetch_row($result);


	if ($row[0]>0) {
		err("이미 존재하는 ID입니다.");
	} else {
?>

<html>

<head>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
<title>ID중복검사</title>
<meta name="generator" content="Namo WebEditor v5.0">
</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<p align="center"><b>ID 중복검사</b></p>
            <table cellpadding="3" cellspacing="1" width="500" align="center">
                <tr>
                    <td bgcolor="#8C8CFF">
                        <p align="center"><b><font color="white">&nbsp;</font></b></p>
                    </td>
                </tr>
                <tr>
                    <td>
                        <p align="center">&nbsp;</p>
            <p align="center">입력하신 
<?
echo "$id";
?> 
는 사용 하실수 있는 ID입니다.</p>
            <p align="center"><a href="javascript:ok('<?=$id?>')">선택</a> | <a href="id.php">다시검색</a></p>
            <p align="center">&nbsp;</p>
                    </td>
                </tr>
                <tr>
                    <td bgcolor="#8C8CFF">
                        <p align="center">&nbsp;</p>
                    </td>
                </tr>
            </table>
</body>

</html>
<script language="javascript">
	function ok(str) {
		opener.document.form.id.value = str;
		opener.document.form.pwd.focus();
		this.close();
	}
</script>
<?
	}
?>

다음은 DB 테이블입니다.

mysql> desc member;
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| no         | int(20)      |      | PRI | NULL    | auto_increment |
| id         | varchar(32)  |      | PRI |         |                |
| pwd        | varchar(64)  |      |     |         |                |
| name       | varchar(32)  |      |     |         |                |
| email      | varchar(200) |      |     |         |                |
| homeurl    | varchar(200) | YES  |     | NULL    |                |
| sex        | char(1)      |      |     |         |                |
| birthtype  | char(1)      |      |     |         |                |
| birthyear  | varchar(4)   |      |     |         |                |
| birthmonth | char(2)      |      |     |         |                |
| birthday   | char(2)      |      |     |         |                |
| zip1       | char(3)      |      |     |         |                |
| zip2       | char(3)      |      |     |         |                |
| address1   | varchar(200) |      |     |         |                |
| address2   | varchar(200) | YES  |     | NULL    |                |
| tel1       | char(3)      | YES  |     | NULL    |                |
| tel2       | varchar(4)   | YES  |     | NULL    |                |
| tel3       | varchar(4)   | YES  |     | NULL    |                |
| phone1     | char(3)      | YES  |     | NULL    |                |
| phone2     | varchar(4)   | YES  |     | NULL    |                |
| phone3     | varchar(4)   | YES  |     | NULL    |                |
| job        | varchar(200) | YES  |     | NULL    |                |
| hobby      | varchar(200) | YES  |     | NULL    |                |
| regdate    | datetime     | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+
chamguru의 이미지

우선 검사하는 php 파일에서
echo $id;
로 $id값이 제대로 넘어 왔는지 체크 한뒤에
쿼리문을 직접 mysql 커맨드 창에서 쳐본뒤에 결과값이 제대로
나오는지 확인해보는것이 좋을거 같습니다.
sql query 문을 echo 해서 보는것도 좋을거 같네요;

Quote:
$query = "SELECT count(*) FROM member WHERE id = '".$id."'";
$result = @mysql_query($query);

아마 이부분에서 문제가 있지 않나 싶습니다. 함수 앞에 @ 를 붙였기
때문에 에러 출력도 되지 않았을테구요..
만약 쿼리문이 문제라면

select count(*) from member where id='$id';

로 한번 수정해보세요. :)

i am holden ~

kimyh의 이미지

답변 정말 감사합니다.
echo "$id";를 세 군데를 삽입해서 시험해봤는데(아래소스 참고)id값을 가져오지 못합니다.

그리고 $query = "select count(*) from member where id = '".$id."'";을 $query = "select count(*) from member where id='$id'; 로 바꾸어
실행해보면 Parse error: parse error, unexpected T_STRING in /usr/local/apache/htdocs/member/id_ok.php on line 36 라는 에라가 생깁니다.

선배님께서 지적하신대로 $query = "select count(*) from member where id = '".$id."'"; 이부분이 문제가 있는것 같군요.

그리고 위의 query 문을 mysql 컴맨드 창에 입력하면 아래와 같이 뭐가 나오기는 합니다. 실제 데이타는 샘플로 몇개 들어가 있습니다.
count(*)가 아래와 같이 0으로 나오는데 맞게 나온건지는 모르겠군요.

Database changed
mysql> show tables;
+-------------------+
| Tables_in_project |
+-------------------+
| member            |
+-------------------+
1 row in set (0.00 sec)

mysql> SELECT count(*) FROM member WHERE id = '".$id."';
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)
mysql> 

한번 더살펴주세요 이것만 해결되면 정말 좋을것 같군요.

<?
	include ("dbcon.php");

	function err($errMsg) {
		echo("<script language=\"javascript\">\n");
		echo(" alert(\"".$errMsg."\");\n");
		echo(" history.back();\n");
		echo("</script>");
		exit;
	}
 
        echo "$id";


	if ($id) {
		err("ID를 입력하세요.");
	}
	
	$id = trim($id);
	$id = addslashes($id);
	$id = strtolower($id);

        echo "$id";


//	$query = "select count(*) from member where id = '".$id."'";
	$query = "select count(*) from member where id='$id'; 




	$result = @mysql_query($query);
	$row = mysql_fetch_row($result);

        echo "$id";

	if ($row[0]>0) {
		err("이미 존재하는 ID입니다.");
	} else {
?>

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

chamguru의 이미지

Quote:
그리고 $query = "select count(*) from member where id = '".$id."'";을 $query = "select count(*) from member where id='$id'; 로 바꾸어
실행해보면 Parse error: parse error, unexpected T_STRING in /usr/local/apache/htdocs/member/id_ok.php on line 36 라는 에라가 생깁니다.

이 부분에서 Parse error 가 난이유는 아마 마지막에 " 를 닫아주지 않아서 그런거 같네요.

"select count(*) from member where id='$id'";

이렇게 하면 parse error는 나지 않을거에요.

$id값이 넘어 오지 않는걸 보니 그래서 생긴 문제 같아요.

쿼리문에서 $id 값이 없는데 그걸로 where 문에 사용을 하니

일치하는 검색결과가 없겠죠 ^^

이 파일은 회원 가입을 받아 처리하는 부분의 php 같은데 회원 가입 폼이

있는 html 에 문제가 있을수도 있겠네요. $id 값이 넘어오지 않는다는건..

아 .. 그리고 mysql 커맨드 창에서 테스트 하실때는

Quote:
mysql> SELECT count(*) FROM member WHERE id = '".$id."';

이렇게 하시면 $id 라는 값은 없기 때문제 제대로 된 테스트가 안되구요.

select count(*) from member where id='holden';

과 같이 임의로 테이블에 존재하는 아이디를 넣어 주셔야 테스트가되요

만약 테이블에 아이디가 있음에도 불구하고 0으로 나온다거나 제대로된

결과가 나오지 않는다면 쿼리값에 문제가 있는거 같은데.. 제가 보기엔 그런

거 같지는 않네요. $id값을 넘겨 받지 못해서 생기는 문제 같아요.. ^^;;

혹시 모르니 마지막 방편으로

$id = $_POST['id'];

해서 $id변수를 받아 보세요. register_global 설정에 따라 차이가 있을수

있으니.. ^^

i am holden ~

kimyh의 이미지

우선 답변 대단히 감사합니다.
답변을 학수 고대했는데 해 주셨군요.
알려주신대로 해보고 글 올리겠습니다.

우선 감사부터 드립니다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

kimyh의 이미지

선배님 정말 감사합니다.
알려주신대로 $id = $_POST['id']; 를 아래 소스처럼 삽입을 했더니 잘됩니다.
이 감사한 마음을 어떻게 전해야 할지 모르겠군요.

<?
	include ("dbcon.php");

	function err($errMsg) {
		echo("<script language=\"javascript\">\n");
		echo(" alert(\"".$errMsg."\");\n");
		echo(" history.back();\n");
		echo("</script>");
		exit;
	}

        $id = $_POST['id']; 
 
	if (!$id) {
		err("ID를 입력하세요.");
	}
	
	$id = trim($id);
	$id = addslashes($id);
	$id = strtolower($id);

//	$query = "select count(*) from member where id = '".$id."'";
	$query = "select count(*) from member where id='$id'"; 
	$result = mysql_query($query);
	$row = mysql_fetch_row($result);

	if ($row[0]>0) {
		err("이미 존재하는 ID입니다.");
	} else {
?>

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

kimyh의 이미지

위에 답변 해주신 chamguru님 다시한번 감사 드리고요
우편번호 찾는 부분에서도 계속 에러가 납니다.
검색에서 찾아보니 쿼리 실행하는 부분이 없다고 하는데 어디를 어떻게
수정을 해야할지 모르겠군요.
수고 스러우시겠지만 다시 한번 부탁 드립니다.

그런데
if ($dong) {
err("검색할 동을 입력하세요.");
}

이부분을

if (!$dong) {
err("검색할 동을 입력하세요.");
}
이렇게 고치면 동을 입력 했는데도 계속 동을 입력 하라는 창만 뜹니다.

!을 지우고

if ($dong) {
err("검색할 동을 입력하세요.");
}
이렇게 하면 아래와 같은 에러 메세지가 뜹니다.
원 소스에는 ! 가 있습니다.

우편번호 찾는 소스 부분;

<?
        include ("dbcon.php");
        
        function err($errMsg) {
                echo("<script language=\"javascript\">\n");
                echo(" alert(\"".$errMsg."\");\n");
                echo(" history.back();\n");
                echo("</script>");
                exit;
        }

        if ($dong) {
                err("검색할 동을 입력하세요.");
        }
	$query = "select zipcode, sido, gugun, dong, bunji from zipcode where dong like '%".$dong."%'";
	$result = @mysql_query($query);
	$total = mysql_num_rows($result);
?>

에러메세지 ;
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/local/apache/htdocs/member/zip_ok.php on line 18

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

chamguru의 이미지

아까 위에 에러와 마찬자기로 변수를 받아오지 못해서 생기는 에러 같습니다.

PHP 가 4.2.1 부터인가..(확실치 않음;) register_global 옵션이 off로 되

어 있을겁니다. 아마.. 보안상의 이유로 off해놨는데 그 해당 프로그램이 이전

버전의 PHP 에 맞추어져 제작되다 보니까 제대로 작동하지 않는거 같습니다.

그럴 경우에는 PHP 설정에서 register_global 옵션을 On 하시면 해결될

겁니다. 단 보안에 문제점이 생길수 있기 때문에, 원치 않으시다면 소스를

일일히 수정하져야 알겁니다. $_POST['변수명']; 이런식으로 POST 배열에

서 가져오셔야 할겁니다. 일일히 가져오시는게 귀찮다면 foreach 문으로

한번에 가져올 수도 있습니다.

   foreach($_POST as $key => $value) {
      global ${$key};
             ${$key} = $value;
      }

이런식으로 하면 한번에 가져오실수 있을 겁니다. GET 방식의 경우도 마찬
가지로

   foreach($_GET as $key => $value) {
      global ${$key};
             ${$key} = $value;
      }

이런식으로 가져올 수 있겠네요

i am holden ~

kimyh의 이미지

밤 늦게 까지 상세한 답변 정말 고맙습니다.
알려주신대로

  foreach($_POST as $key => $value) { 
      global ${$key}; 
             ${$key} = $value; 
      }  

를 삽입했으나 같은 내용의 에러가 나네요.

수정한 소스;

<?
	include ("dbcon.php");
	
	function err($errMsg) {
		echo("<script language=\"javascript\">\n");
		echo(" alert(\"".$errMsg."\");\n");
		echo(" history.back();\n");
		echo("</script>");
		exit;
	}
 
   foreach($_POST as $key => $value) { 
      global ${$key}; 
             ${$key} = $value; 
      } 


	if (!$dong) {
		err("검색할 동을 입력하세요.");
	}

	$query = "select zipcode, sido, gugun, dong, bunji from zipcode where dong like '%".$dong."%'";
	$result = @mysql_query($query);
	$total = mysql_num_rows($result);

?>

에러메세지;
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/local/apache/htdocs/member/zip_ok.php on line 25

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

chamguru의 이미지

   $query = "select zipcode, sido, gugun, dong, bunji from zipcode where dong like '%".$dong."%'"; 
   $result = @mysql_query($query); 
   $total = mysql_num_rows($result); 

바로 이부분에서 mysql_query()함수를 통하여 받는 $result 값에 문제가

있기때문에 mysql_num_rows() 함수가 접근하려 하자 에러가 나는거 같

습니다. 아까도 말씀드렸다 시피 이는 변수값을 제대로 못 얻어와 생기는 경우

인거 같습니다.

foreach 문이 안된다면 extract() 함수를 사용할것을 권장합니다.

@extract($HTTP_POST_VARS);
@extract($HTTP_GET_VARS);

변수를 사용하기전에 사용하셔야 합니다. 코드 상단에 두시는게 좋을듯

하네요. 만약 위와 같이했는데도 에러가 난다면

$dong = $_POST['dong'];

이렇게 헤서 받아 보시구요 그래도 에러가 난다면 그때는 mysql_query

문에 이상이 있는것으로 생각됩니다.

아까와 마찬가지로 mysql 커맨드 창에서 해당 쿼리

Quote:
select zipcode, sido, gugun, dong, bunji from zipcode where dong like '%".$dong."%'

를 직접 처보시면 됩니다.

mysql> select zipcode,sido,gugun,dong,bunji from zipcode where dong like '%서초동%';

이런식으로 테스트 해보셔서 검색된다면 쿼리의 문제는 아닐겁니다.

i am holden ~

kimyh의 이미지

지금이 12시 40분인데 정말 죄송합니다.
정말 고맙습니다.mysql> select zipcode,sido,gugun,dong,bunji from zipcode where dong like '%서초동%'; 를 mysql 컴맨드창에 처보니
zipcode가 없다고 나오네요.
데이터베이스 테이블에 zipcode,sido,gugun,dong,bunji 등의 항목은 사실상 없거든요.
zip_ok.php와 같은 디렉토리에 zipcode.sql 만 있습니다.

아마 이게 문제인거 같은데 zipcode.sql 을 데이터베이스와 어떻게 매칭을 시킨가요. 정말 초보라서요.

데이터베이스테이블은 zip1, zip2, address1, address2 만 있습니다.
zipcode,sido,gugun,dong,bunji 를 모두 데이터 베이스 테이블에 만들어 주어야 하는지요.

그리고 $dong = $_POST['dong']; 을 삽입해서 확인해보면 $dong을 불러옵니다.

밤늦게 정말 죄송합니다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

kimyh의 이미지

선배님 해결 했습니다.
정말 많은 도움이 있었기에 해결되었습니다.
역시 db에 zipcode 테이블을 만들어주니까 되더군요.

앞으로 공부하다가 않되는 부분이 있으면 다시 질문 드릴테니 많은 도움 주시길 바랍니다.

밤늦게까지 참으로 감사합니다.

김양현 올림

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

kimyh의 이미지

위에 답변해 주신 내용중에 db에 있는 내용을 불러오지 못한것은 php 4.2.x 대 버전부터 보안상의 이유로 register_global 옵션이 off로 되어 있어서 그렇다고 하셨는데 매 프로그램 마다 전달 폼 타입이 POST 인가 GET 인가를 확인하여
@extract($HTTP_POST_VARS);
@extract($HTTP_GET_VARS); 를 적어 주는게 여간 복잡하지 않습니다.
또한 post 인지 get 인지 잘못 확인하여 바꾸어 적어주면 또 php가 작동을 하지않고요.

그래서 php 에서 환경설정하여 폼 전달형태가 post 이든 get 이든 항상 잘 작동 되도록 할려면 어떻게 ㅎ환경을 설정 해 주어야 하는지요.

알려주시면 많은 도움이 되겠습니다.
감사합니다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

chamguru의 이미지

php 설정에서 register_global 옵션을 on 으로 설정하시면 될겁니다. 8)

i am holden ~

kimyh의 이미지

답변 감사드립니다.
php가 있는 디렉토리에서 php.ini-dist 화일과 /usr/local/lib 디렉토리에 있는 php.ini 화일을 바꾸고 시스템을 재부팅 했는데도 마찬 가지 입니다.

뭐가 잘못된 것일까요?

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.