2017-04-18 2 views
1

Ich möchte einen "Like" -Button erstellen. Nur möchte ich, dass jeder ohne einen Account einen Artikel "mag".Erstellen Sie wie Button mit Laravel mit Cookies und Tabelle

In meiner Tabelle für einen Artikel, kann ich ein "Like" -Feld hinzufügen und mit Ajax das Feld um +1 erhöhen?

Wird es ein Sicherheitsproblem schaffen?

Ist es eine gute Idee, ein Cookie dafür zu verwenden?

vielen Dank

Antwort

2

Der Schutz mit Cookies ist ziemlich einfach zu umgehen. Eine Person oder eine Art Roboter könnte für jeden Artikel viele "Likes" geben.

Sie können die Möglichkeit sperren, mehrere "Likes" basierend auf der IP des Benutzers zu vergeben. Erstellen Sie also im Prinzip eine weitere Tabelle mit Feldern wie:

"article_id" 
"user_id" (nullable) 
"ip" (nullable) 

Für registrierte Benutzer füllen Sie einfach das Feld user_id. Für Benutzer von annonymus füllen Sie das Feld ip und bevor Sie einen neuen Datensatz zur Datenbank hinzufügen, prüfen Sie, ob der Datensatz mit der angegebenen IP existiert.

Verwenden Beziehung für Gleichen in Ihrem Modell sie leicht zu zählen:

$this->likes->count(); 
+0

Sie für diese Antwort danken. Ich verstehe, wie man das Problem aufschlüsselt. Es ist eine gute Lösung, ich hatte nicht gedacht, die IP auf diese Weise zu speichern. – Jeremy

1

Mit Cookie-Daten, die sie für wie einfach, aber der Angreifer den Browser-Verlauf löschen und mehr wie für diesen Artikel machen. Machen Sie einige Techniken wie Einfügen mit IP-Adresse oder Mac-Adresse in db, aber es hat auch einen Fehler, weil sie die Proxy-IP ändern und ein Like für das setzen. Einfache Lösung ist wie aus sozialen Netzwerken wie Google mögen oder Facebook mögen. Dies wird eine einzigartige wie für diesen Artikel. Ich denke, das wird dir helfen. Ich entschuldige mich wenn falsch in meiner Antwort.

Verwandte Themen