2017-02-25 7 views
2

Ich verwende Silex (nicht sicher, falls relevant), um ein Blog zu erstellen, und ich möchte die Möglichkeit für den Benutzer hinzufügen, einen Kommentar zu melden.So implementieren Sie "Bericht/Flag Kommentar"

Anfangs habe ich nur eine boolean flagged Spalte meiner comments Tisch, setzen Sie ihn auf false standardmäßig und schaltete es auf true, wenn ein Benutzer auf dem „Bericht der Kommentar“ klicken. Mein Plan war dann in der Lage zu sein, alle gekennzeichneten Kommentare zum admin leicht zu zeigen. Aber ich erkannte, dass jeder Benutzer dann einfach gehen und jeden Kommentar melden konnte, und ertränkte damit das Administrations-Panel.

Also ich möchte es anders versuchen. Ich möchte zählen, wie oft ein bestimmter Kommentar markiert wurde, also kann ich das im Abschnitt "Gekennzeichnete Kommentare" des Administrationsbereichs widerspiegeln, so dass der Administrator schnell sehen kann, welche Kommentare von einem einsamen Troll und welche markiert wurden wurden massiv markiert und verdienen Aufmerksamkeit.
Ich möchte auch daran erinnern, welche Kommentare ein bestimmter Benutzer selbst markiert hat, so dass ich die Schaltfläche "Kommentar melden" für ihn auf Kommentare deaktivieren kann, die er bereits markiert hat.

Zwei Fragen hier:

  • Ist es ein guter Weg, dies zu tun?
  • Wie kann ich das in meinem db implementieren? Die Anzahl der Male, die ein einzelner Kommentar markiert wurde, sollte leicht auf Lager sein, aber was ist mit der ständig wachsenden Liste aller Kommentare, die ein einzelner Benutzer markiert hat?

Vielen Dank!

+0

Wenn Sie sich Sorgen machen über einen Troll und nicht über einen Hacker, können Sie dies mit einem Cookie und ein wenig JavaScript im Browser implementieren. Wenn Sie es kugelsicher machen möchten, können Sie die Flags in einer separaten Tabelle speichern und Flag-Datum, IP und Benutzer-ID auch speichern. Dann haben Sie alle Daten, um die richtige Entscheidung zu treffen. –

+0

Soll ich alles in die 'flags' Tabelle setzen? Ich könnte eins mit 'flag_id',' flag_date', 'user_id' und' comment_id' Spalten sehen, auf diese Weise muss ich nur in dieser Tabelle die Anzahl der Flags zählen, die die ID eines Kommentars gegeben haben, und ich kann einfach alle Flags abrufen, die a gegeben sind Benutzer-ID Ist es das ? Warum sollte ich die Benutzer-IP speichern, wenn ich ihre ID in der Flags-Tabelle speichern kann? – yurden

+0

flag_id könnte der Primärschlüssel sein, comment_id wird einen FK zu der Kommentartabelle geben, dann date als datetime, user_id, wenn der Benutzer angemeldet ist, wenn er einen Kommentar abgibt. Die IP-Spalte ist möglicherweise nützlich, wenn der Benutzer nicht zum Kennzeichnen eines Kommentars angemeldet sein muss. So können Sie die "verdächtigen" Kommentare filtern, wenn Sie die Seite zeigen –

Antwort

1

Eine gute Möglichkeit, dies zu tun, wäre eine neue Tabelle zu erstellen, die auf die minimale Benutzer-ID und die Kommentar-ID beschränkt ist. Fügen Sie weitere Spalten für andere Informationen hinzu, die Sie verfolgen möchten, wenn ein Benutzer den Kommentar markiert hat.

Der Vorteil dieser Methode ist, dass Sie Joins in Ihrem SQL verwenden können, um einen Benutzer und alle markierten Kommentare oder einen Kommentar und alle Benutzer, die es markiert haben, zu ziehen. Sie können auch schnelle Zählungen durchführen, indem Sie diese Tabelle direkt abfragen.

Indizes auf Ihren Benutzer-ID und Kommentaren Spalten, werden die Dinge bissig wie die Tabelle wächst.

Verwandte Themen