User ID speichern   Steuern Sie die SPAM-Flut in Kommentaren und erlauben Sie nur einen Kommentar in 48h. Dieser Beitrag zeigt wie es geht.

____________

« Home

In diesem Beispiel geht es darum für den aktuellen Leser zu realisieren, das er nur einen Kommentar pro 48h abgeben kann. Für diesen Zweck erzeugt das Script eine zufällige ID, speichert diese ab und hinterlegt ob der User einen Kommentar erfasst hat.

...
... //--------------------------------------------
008 session_start();
009 $userId = 0;
010 $userId = random_int(0, time());
011 $userComment = 0;
012
013 if (isset($_COOKIE['userId'])) {
014 $userId = (int)$_COOKIE['userId'];
015 }
016 if (isset($_COOKIE['userComment'])) {
017 $userComment = (int)$_COOKIE['userComment'];
018 }
019
020 setcookie('userId', $userId, strtotime('+2 days'));
021 setcookie('userComment', $userComment, strtotime('+2 days'));
022
023 if (isset($_SESSION['userId'])) {
024 $userId = (int)$_SESSION['userId'];
025 }
...
... //--------------------------------------------
242 if (isset($_GET['savecomment'])) {
...
247 setcookie('userComment', $userId, strtotime('+2 days'));
...
267 if ($userComment == 0) {
... // neuer Leser veroeffentlicht seinen
... // ersten Kommentar. Dieser wird hier
... // verarbeitet und gespeichert
291 } else {
... // Der Besucher hatte bereits einen
... // Kommentar hinterlassen, denn in der
... // SESSION userComment steht die
... // generierte Zufalls userId
295 }
...
299 }

Zeile 008 bis Zeile 025 erzeugt bei einem neuen Besucher eine zufällige User-ID (genauer gesagt ist es eher eine Sitzungs-ID) und speichert diese in der SESSION und einem COOKIE ab, sofern die Sitzung schon bekannt ist, wird die ID aus dem Cookie gelesen. Das Cookie bleibt 2 Tage gültig und wird dann gelöscht.

Auch wenn der Leser die Webseite mit F5 erneut läd, so verändert sich die ID nicht mehr, sie bleibt gleich. Erst das schließen und neu starten des Browsers erzeugt dann eine neue ID. Erst dadurch ist der Leser - genauer die anonyme Sitzung gut für das Programm identifizierbar.

Ab Zeile 242 wird der Kommentar auf der Webseite verarbeitet. Die Variable userComment die zuvor auf 0 stand bekommt jetzt die userId zugewiesen, hatte der User noch keinen Kommentar verfasst (267) wird sein Kommentar gespeichert, ansonsten erhält er die Meldung, das er keinen neuen Kommentar verfassen darf.

Im übrigen ist das Coding Datenschutz konform, denn es wird keinerlei Surfverhalten oder gar User-Daten gespeichert. Es wird lediglich gespeichert das die aktuelle Sitzung einen Kommentar abgegeben hat - mehr nicht.



Weiter stöbern


Unsichere PHP includes

PHP includes() sind in Einsteigerscripten oft zu finden und bergen großes Gefahrenrisiko in sich. Die Lücke kann aber einfach geschlossen werden.

Verzeichnisse mit PHP lesen

Mit PHP ein Verzeichnis mit Ordnern und Dateien einlesen und anzeigen. Der Beitrag zeigt ein kurzes Codesegment.


Autor: Oliver Lohse   Datum: 2020-06-01   Kategorie: PHP   Schlagworte: Sicherheit • Admin • Administrator • Hacker • Hacking • Angreifer