2017-12-27 1 views
0

js를 통해 버튼을 비활성화 할 수 있지만 사용자가 쉽게 브라우저에서 변경할 수 있음을 알고 있습니다.PHP 또는 MySQL 수준에서 이중 양식 제출을 방지하는 방법은 무엇입니까?

그래서, 어떻게 할 수있는 쉬운 해결책을 찾고 있습니다.

나는이 세션 트릭을 시도했다. https://stackoverflow.com/questions/20766744/php-double-form-submit-prevent 그러나 나는 여전히 빠르게 클릭 할 수 있으며 많은 것들을 db에 저장할 것이다.

또한 does a row with the same user_id, item_id and comment_id in the table reviews exist then stop 조건을 수행하면 매우 빠르게 버튼을 클릭 할 때도 작동하지 않습니다.

mysql이 동일한 정보로 둘 이상의 행을 저장하는 것을 거부하는 기능이 있습니까?

그런 것이 있다면 좋을 것입니다.

예를 들어 user_id, item_id, comment_id은 한 번만 저장하거나 여러 시간 절약을 사용하여 여러 항목을 절약 할 수 있습니다.

+2

음, 세 필드에 고유 인덱스를 설정할 수는 있지만 꽤 무차별적이고 유연하지 않습니다. 귀하의 구조와 원하는 요구 사항에 따라 다릅니다. – IncredibleHat

+0

데이터를 데이터베이스에 저장하기 전에 먼저 데이터베이스 테이블에서 username과 같은 제출 된 데이터 중 하나가 이미 데이터베이스 테이블에 있는지 확인하십시오. 그렇다면 양식을 확인하고 정보를 저장하지 않으면 사용자에게 플래그를 지정하십시오. – dean

+0

좋아요,''리뷰 '테이블이 있고'id, user_id, item_id, comment_id' 필드가 있고이 세 가지 (user_id, item_id, comment_id) 각각의 조합 만 가능하다는 것을 저장 할 수 있습니까? – Greggore

답변

1

여러 제출물로 인해 여러 항목이 생성되지 않도록 데이터를 디자인하십시오.

여기에는 두 가지 방법이 있습니다. 두 번째 방법이 더 좋습니다.

[Unique columns]1@ 기호는 PHP의 오류를 억제합니다. < - 가장 최근 제출이 삽입됩니다.

또는 더 나은 아직 당신은 DB에 전화를 할 수있는 정보가 이미 존재하는지 확인하고 만약 그렇다면, insert 전화를 만들 수 없습니다. < - 첫 제출이 inserted이됩니다. 조건부 논리는 적합하다고 판단되면 update 호출로 이어질 수 있습니다.

관련 문제