사용자 정보를 배열로 저장한 후 루프를 사용하여 mysql 데이터베이스에 입력합니다. 그런데 가끔 개별 사용자의 정보가 두 번 입력되는 경우가 있는데, 어디에서 논리 오류가 발생하는지 조언해 주세요.
논리 코드는 다음과 같습니다
지금 이상한 점은 개별 사용자가 입력한 정보가 항상 두 번 실행된다는 점입니다. (예를 들어 제출된 배열에는 요소가 5개만 있는데 데이터베이스에 입력하면 10개의 레코드가 생성됩니다.)
항목의 90%는 정상입니다. 일부 사용자만 할 수 있습니다. 안내를 부탁드립니다
location.href를 사용하여 점프할 때 이런 일이 발생합니다. 일부 브라우저에서는 새로 고치자마자 양식을 두 번 다시 제출할 수 있습니다.
몇 가지 해결 방법이 있습니다.
ajax 새로 고침 없음
프런트엔드가 제출하면 백엔드에서 토큰을 생성하여 세션에 저장합니다. 백엔드에 제출할 때 두 토큰을 비교합니다
데이터베이스 확인
백엔드는 301 또는 302를 사용하여 점프합니다.
논리적으로 특별한 문제는 없다고 밖에 말씀드릴 수 없습니다. 프런트 엔드에서 두 개의 요청을 제출했을 수도 있고, 일반적으로 데이터를 삽입할 때 사용자가 데이터베이스에 존재하는지 여부를 판단하는 것이 일반적입니다. 이런 판단을 내리지 마세요. 이로 인해 정보도 10개나 등장하게 되었습니다
.생각해야 할 사항은 다음과 같습니다.
으아악삽입하기 전에 최소한 고유 인덱스로 데이터베이스의 가치를 판단하세요.
개별 입력 오류의 경우 $data에 있는 데이터에 따라 다릅니다.