DB입력 페이지 새로고침 시 디폴트값 입력되는 현상 질문
본문
<?
include '../../lib/DB 접속 파일 이름.php'; //db 접속 정보 가져오기
$con = mysql_connect($host,$uname,$pwd) or die("DB 연결에 실패하였습니다. \n 경로, 혹은 아이디 비밀번호가 올바른지 확인하여 주십시오."); //db 접속
mysql_select_db($db,$con) or die("db selection failed"); //db 선택
mysql_query("set names utf8"); //utf8 설정
$query = "INSERT INTO 테이블 (필드) values (변수)";
$result = mysql_query($query);
?>
<form id="frm" name="frm" action='이 파일 주소' method='post'>
입력 폼
<input type="submit" name="submit" style="height:30px;width:150px;" value="쿠폰 발급받기" onclick="submit();">
</form>
<?
여러가지 변수들 선언?>
정상적이라면 버튼을 누르면 DB값이 입력이 되야 하는 겁니다. 지금은 단순히 페이지 들어가기만 하면 DB값이 입력이 되고 거기다 새로고침해도 DB값이 입력이 되는 상황입니다.
제 구문들을 살펴보자면 대충 구조가 이렇게가 끝인데..
여기서 어떤 작업을 해 줘야 DB값입력을 멈출 수 있을까요?
추가정보 필요하시면 언제든지 불러주세요.
답변 3
<?
include '../../lib/DB 접속 파일 이름.php'; //db 접속 정보 가져오기
$con = mysql_connect($host,$uname,$pwd) or die("DB 연결에 실패하였습니다. \n 경로, 혹은 아이디 비밀번호가 올바른지 확인하여 주십시오."); //db 접속
mysql_select_db($db,$con) or die("db selection failed"); //db 선택
mysql_query("set names utf8"); //utf8 설정
if($action == "insert")
{
$query = "INSERT INTO 테이블 (필드) values (변수)";
$result = mysql_query($query);
header("Location:이페이지주소.php");
exit;
}
?>
<form id="frm" name="frm" action='이 파일 주소' method='post'>
<input type="hidden" name="action" value="insert"/>
입력 폼
<input type="submit" name="submit" style="height:30px;width:150px;" value="쿠폰 발급받기" onclick="submit();">
</form>
리프레쉬 해도 post 데이터가 남아서 DB인서트가 됩니다..
아래와 같이 캐쉬 삭제 하시면 될듯..
<?php
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Cache-Control: post-check=0, pre-check=0', false );
header( 'Pragma: no-cache' );
?>
꼭 그런 방식으로 해야 하는지는 모르겠지만 값이 넘어올경우를 체크하거나 한페이지에서 다 처리하기 보다는 다른 process 파일을 별도로 만들어서 적용하는걸 추천드립니다.
한페이지에서 새로고침하면서 반영하게 되면 계속 새로고침할때 생성될수 밖에 없는 상황이라 ajax나 process 방식으로 전달하여 받는 방식이 수월하고 원하는 방식으로 처리 되지 않을까 싶습니다.
답변을 작성하시기 전에 로그인 해주세요.