본문

검색을 POST 형식으로 하기
0 0 11,397

홈페이지를 통해 DB에 저장된 자료를 보여주게 되는데,

사용자 편의를 위해 검색 기능을 달게 됩니다. 일반적으로 검색은 주소창에 나오는 값을 get방식으로 받아서 출력을 하게 됩니다. 이 때, 주소창에 나오는 내용들 중 아무것도 아닌 것처럼 보였던 인자들이 보안에 영향을 줄 수도 있게 됩니다.

그래서, post방식으로 진행을 하면 주소창에 검색에 특정 값들이 노출이 되지 않아 get방식 보다는 안전하게 처리할 수 있습니다.


예를 들어,

사용자들이 잘 모르게 검색 키워드 뿐만 아니라, 검색을 할 때 사용자 아이디 정보를 보낸다던지, 사용자 권한 정보를 보낸다던지 할 수 있습니다. 이 때, get 방식으로 하게 되면 주소창에 해당 정보도 같이 뜨겠죠? 그럼 해당 키워드를 변경해서 뭔가 보면 안되는 정보를 볼 수도 있게 됩니다. 물론 애초에 권한 정보 등에 따라 검색을 하게 만들면 되겠지만, 뭐던지 실수라는게 있을 수 있어서..


a10f576daed1ad191a7d72cace04489a_1708506340_4641.png 
 


그래서, post 방식으로 진행하는게 좋을 수 있습니다.

post방식으로 검색을 하는 방법이 엄청 많이 있게지만, 여기서는 간단히 자바스크립트를 이용해서 처리해 볼께요.



아래 내용은 간단한 예제입니다.

a.php 파일에서
test라는 테이블과 안에 검색할 정보들이 있을 경우

$sql_common = " from test ";
if($_POST['s_mod'] == "3") { // 여기에서 s_mod나 값이 노출이 되면 해당 값 변경에 따라 원치 않은 자료가 노출될 수 있습니다.
	$sql_search = " where level = '".$_POST['s_mod']."' andmb_id = '".$_POST['stx']."'";
} else {
}
$sql_order = " order by idx desc ";
$sql = " select * {$sql_common} {$sql_search} {$sql_order} ";
$row = sql_fetch($sql);

그리고, 검색폼은 아래와 같이 b.php 파일을 호출하게 되겠죠.

	<div class="alert bg-light border p-2 p-sm-3 mb-3 mx-3 mx-sm-0">
		<form method="post" name="post-search" class="m-auto" style="max-width:600px;" action="b.php" enctype="multipart/form-data" autocomplete="off">
			<input type="hidden" name="sca" value="1">
			<div class="form-row mx-n1">
				<div class="col-4 col-sm-4 px-1">
					<label for="sfl" class="sr-only">검색대상</label>
					<select name="s_mod" class="custom-select">
						<option value="3" selected>아이디</option>
						<option value="t">One</option>
						<option value="a">Two</option>
						<option value="q">Three</option>						
					</select>
				</div>
				<div class="col-8 col-sm-8 pt-2 pt-sm-0 px-1">
					<label for="stx" class="sr-only">검색어</label>
					<div class="input-group">
						<input type="text" name="stx" value="<?php echo stripslashes($stx) ?>" required class="form-control" placeholder="검색어를 입력해 주세요.">
						<div class="input-group-append">
							<button type="submit" class="btn btn-primary" title="검색하기">
								<i class="fa fa-search" aria-hidden="true"></i>
								<span class="sr-only">검색하기</span>
							</button>
						</div>
					</div>
				</div>
			</div>
		</form>
	</div>

그리고, b.php 파일에서 해당 값을 post형식으로 검색을 하는 페이지인 a.php로 바로 전송을 해 주고, 결과 값을 출력을 하게 됩니다.
b.php 파일에서는

<script>
function go_immediately()
{
		document.form_send_immediately.action = "a.php";
		document.form_send_immediately.submit();
}
</script>
<body onload="go_immediately();">
	<form name="form_send_immediately" method="post">
		<input type="hidden" name="s_mod" value="<?php echo $_POST['s_mod']; ?>">
		<input type="hidden" name="stx" value="<?php echo $_POST['stx']; ?>">
	</form>
</body>
해당 콘텐츠는 엠스토리아 작가에 의해 공개 또는 유료로 제공되는 콘텐츠로 무단 갭쳐 및 불법 공유시 법적 제재를 받을 수 있습니다.
해당 M스토리는 무료로 제공중입니다.
구독을 통해 더 많은 M스토리를 만나보세요.

관련자료

댓글 0
등록된 댓글이 없습니다.
알림 0