새로고침시 변수값 초기화

새로고침시 변수값 초기화

QA

새로고침시 변수값 초기화

본문


<?php
$po = 0;
if ( isset($_POST['vs_make']) ) {
        $vs_make = $_POST['vs_make'] ?? 0; 
        if( $vs_make == 1) {
            $po = 300;
            $vs_make = 0;
            $_POST['vs_make'] = 0;
        }
}
echo '<br>$po = '.$po;    
?>
<form method="post">
<button type="submit" name="vs_make" value="1">TEST</button>
</form>

 

위 예제를 실행해서 TEST를 클릭하면

$po = 300 이라고 정상 동작합니다.

 

그런데 새로고침을 하면..  여전히 $po = 300 이라고 나오네요.

제가 기초가 없다보니 이해가 안가서 그러는데

TEST 클릭하면 $po = 300; 후 $vs_make = 0; $_POST['vs_make'] = 0; 모두 0값으로 바꿨으니

새로고침 하면 $po = 0 이어야 하지 않나요?

 

TEST클릭후엔 새로고침 해도 계속 $po = 300 이라고 나오는데 이유가 뭔가요.

원하는 결과를 얻으려면 어떻게 해야하나요?

 

이 질문에 댓글 쓰기 :

답변 4

페이지를 하나로 해서 혼동될 수 있습니다.

 

페이지를 2개로 했을 때를 얘기하면, https://m.blog.naver.com/scyan2011/221845086789

ex.

폼 페이지 : a.php (<form method="post" action="b.php">)

처리 페이지 : b.php (<?php $po = 0; ~ )

 

b.php 는 POST 로 전송된 값을 받아 처리하는 페이지입니다.

b.php 를 새로고침하면, POST 로 전송된 값은 동일합니다. 

 

-----------------

 

페이지 하나인 경우에는,

POST 전송을 하기전 상태와 POST 전송 이후 상태로 나누어집니다.

POST 전송 후 상태에서 새로고침을 하면..

POST 전송값이 계속 유지됩니다.

=> $_POST['va_make'] 에 저장된 값은 '1' 입니다.

=> $po 값 300 이 출력됩니다.

POST 전송을 하기 전 상태에서 새로고침하면.. $po 값 0이 출력됩니다.

 

새로고침을 하지 않고.. 브라우저에서 다시 접속하면.. (POST 전 상태이므로) $po 값 0 이 출력됩니다.

 

POST 전송 전 상태에서 새로고침을 한 경우에는..
(브라우저로 최초 해당 페이지 이동 -> 폼 서브밋 전에 새로고침을 한 경우에는..)
$po 값 0 출력입니다.

 

 

그냥 새로고침을 하려면 키값 f5 누르자나요 

그걸 이용해서 $_POST 값을 제거하는 소스를 넣으면 될듯합니다

https://java119.tistory.com/35


<?php
echo '<br>$vsmakeA = '.$_POST['vs_make'];    
$_POST['vs_make'] = 'B';
echo '<br>$vsmakeB = '.$_POST['vs_make'];    
?>
<form method="post">
<button type="submit" name="vs_make" value="A">TEST</button>
</form>

마르스컴퍼니 말씀듣고 위 코드를 해봤더니 신기하네요

 

첫시작

$vsmakeA =
$vsmakeB = B

 

TEST 클릭

$vsmakeA = A
$vsmakeB = B

 

새로고침

$vsmakeA = A
$vsmakeB = B

 

$_POST['vs_make'] 값은 B로 이미 바뀐 상태인데 새로고침하면 어째서 다시 A가 되는건가요?

새로고침시에 $_POST['vs_make'] 값을 바꿀수 없나요?

 

POST 값 전송된 후 새로고침 했을 때..


<?php
echo '<br>$vsmakeA = '.$_POST['vs_make'];  // $_POST['vs_make'] 값은 A (POST 값이 'A' 로 전송되었기 때문에..)
// <form> ~ </form> 안의 <input name="vs_make"> 값 'A'가 POST 전송됩니다.

//----------------------------

$_POST['vs_make'] = 'B';
echo '<br>$vsmakeB = '.$_POST['vs_make']; // 바로 위 코드로 인해 'B'로 변경


<?php
echo '<br>$vsmakeA = '.$_POST['vs_make'];    
$_POST['vs_make'] = 'B';
echo '<br>$vsmakeB = '.$_POST['vs_make'];    
?>
<form method="post">
<button type="submit" name="vs_make" value="<?php echo $_POST['vs_make'] ?>">TEST</button>
</form>

이 경우는 항상 B

답변을 작성하시기 전에 로그인 해주세요.
전체 0 | RSS
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT