2017-12-27 12 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は、1回だけ保存することも、複数のものを保存するために時間の予防を使用することもできます。

+2

まあ、これらの3つのフィールドに一意のインデックスを設定することはできますが、それは非常に力強く柔軟性がありません。あなたの構造と希望するニーズによって異なります。 – IncredibleHat

+0

データベースにデータを保存する前に、まずデータベーステーブルをチェックして、usernameなどの送信済みデータがデータベーステーブルにすでに存在するかどうかを確認します。そうであれば、ユーザーにフラグを立て、フォームを検証せずに情報を保存します。 – dean

+0

私がテーブル 'reviews'を持っていて、' id、user_id、item_id、comment_id'というフィールドを持ち、これらの3つのそれぞれの組み合わせ(user_id、item_id、comment_id)だけがそれを保存することは可能ですか? – Greggore

答えて

1

複数の提出で複数のエントリが作成されないようにデータを設計します。

これを達成するには2つの方法がありますが、私は2番目を優先します。

[Unique columns]1および@記号はPHPのエラーを抑制します。 < - これにより、最新の投稿が挿入されます

また、DBに電話をかけて情報が既に存在するかどうかを確認してください。そうであれば、insertコールを作成しないでください。 < - この結果、最初の投稿はinsertedになります。条件論理は、それが適切であれば、updateコールにセグメントすることができます。

関連する問題