1
아래 코드를 사용하여 버튼을 두 번 클릭하면 사용자가 양식을 두 번 제출하는 것을 방지하려고합니다.두 번 제출을 방지 할 때 세션 변수 설정이 작동하지 않음
// Check token is present
if (!isset($_POST['token'])) {
// Token missing
exit();
}
// Check token matches session value
if ($_POST['token'] != $_SESSION['token']) {
// Token mismatch
exit();
}
// Valid submission - Invalidate token
unset($_SESSION['token']);
// Make payment
$result = makePayment(); // cURL request to api
문제는 unset($_SESSION['token'])
이 작동하지 않는 것입니다. 두 번째 요청에서 토큰은 세션에 남아 있습니다. 세션 값이 다음 제출 전에 지워지지 않기 때문이라고 생각합니다. 비슷한 질문이 resepnse에서
session_write_close()
제안하고 내가 노력하고 내 해제 후 추가 생각,하지만 난 정말 무엇을하는지 이해가 안 :
// Valid submission - Invalidate token
unset($_SESSION['token']);
session_write_close();
두 질문 :
- 이 솔루션에 문제가 있습니까?
- session_write_close()를 호출 한 후에도 세션 변수를 가져오고 설정할 수 있습니까?
감사합니다.
은, 내가 할 데이터베이스에
페이지 시작 부분에 "session_start()"를 넣었습니까? –
@ mArm.ch 예, 단지 위의 스 니펫에 없습니다. – paul