새로고침시 변수값 초기화
본문
<?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 출력입니다.
새로 고침 을 해도 $_POST['vs_make'] 은 1 로 정 되어 있으니 그런거죠
<?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'] 값을 바꿀수 없나요?
!-->