새로고침시 변수값 초기화 채택완료
TEST
위 예제를 실행해서 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 출력입니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
댓글을 작성하려면 로그인이 필요합니다.
TEST
마르스컴퍼니 말씀듣고 위 코드를 해봤더니 신기하네요
첫시작
$vsmakeA =
$vsmakeB = B
TEST 클릭
$vsmakeA = A
$vsmakeB = B
새로고침
$vsmakeA = A
$vsmakeB = B
$_POST['vs_make'] 값은 B로 이미 바뀐 상태인데 새로고침하면 어째서 다시 A가 되는건가요?
새로고침시에 $_POST['vs_make'] 값을 바꿀수 없나요?
답변에 대한 댓글 2개
[code]
<?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'로 변경
[/code]
<?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>
[/code]
이 경우는 항상 B
댓글을 작성하려면 로그인이 필요합니다.
새로 고침 을 해도 $_POST['vs_make'] 은 1 로 정 되어 있으니 그런거죠
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
큰 도움 주셔서 감사합니다.