다른 브라우저에서나 심지어 다른 시스템에서 동일한 브라우저에서도 매우 이상한 동작을 처리하고 있습니다. 처리되고 메일을 보내는 양식이 있습니다. 새로 고침 후 동일한 메일을 다시 보내지 않으려면 세션 변수가 확인됩니다.세션 변수는 브라우저간에 다르게 동작합니다.
주위에 if
이 true가 아닌 경우에도 내 시스템의 Firefox가 변수를 설정 해제합니다. 다른 시스템의 Chrome이나 Firefox에서는 이러한 일이 발생하지 않습니다. 그리고 내가 아는 한 PHP는 브라우저에 전혀 의존해서는 안됩니다. 내 FF var_dump($_SESSION)
에서
echo '<p>$_SESSION: <br />';
var_dump($_SESSION); //for testing only
echo '</p>';
if(!isset($_POST['csent'])):
unset($_SESSION['call-sent']); // to reenable the form for a different message
?>
<form id="call-form" action="" method="POST">
<input type="hidden" name="csent" value="1">
...
</form>
<?php elseif((isset($_POST['csent']))
&& (!isset($_SESSION['call-sent']))):
$_SESSION['call-sent'] = 'x';
/*all the stuff that handels the form*/
?>
<div id="formsent">
<!-- Success Message -->
</div>
<?php else: ?>
<div id="formsent" class="repeat">
<!-- Success Message -->
</div>
<?php endif; ?>
항상 array(0) { }
입니다. 양식은 보내기 전에 표시됩니다. 내가 덤프 해제를 언급하면 덤프는 예상대로 array(1) { ["call-sent"]=> string(1) "x" }
입니다.
Chrome에서 양식을 보내고 페이지를 다시로드 한 후에는 array(1) { ["call-sent"]=> string(1) "x" }
입니다.
이것은 중요한 점은 워드 프레스 템플릿의 일부입니다.
하나의 시스템에서 쿠키를 차단 하나 다른 시스템에서는 차단하지 않습니까? – knittl
시스템마다 차이가 있지만 예상대로 작동하지 않는 쿠키에 대해서는 덜 제한적인 FF입니다. – Seraphithan