CREATE TABLE IF NOT EXISTS comments ( id INTEGER PRIMARY KEY AUTOINCREMENT, resource_id INTEGER NOT NULL, user_id INTEGER NOT NULL, body TEXT NOT NULL, created_at TEXT NOT NULL);CREATE INDEX IF NOT EXISTS idx_comments_resource ON comments (resource_id, id ASC);
$stmt = $this->pdo->prepare( 'SELECT * FROM comments WHERE resource_id = :rid ORDER BY id ASC LIMIT :lim OFFSET :off');$stmt->bindValue(':rid', $resourceId, PDO::PARAM_INT);$stmt->bindValue(':lim', $limit, PDO::PARAM_INT);$stmt->bindValue(':off', $offset, PDO::PARAM_INT);
1 2 3 4 5 6
Die Antwort enthält total (Anzahl aller Kommentare für die Ressource), limit und offset, sodass Clients Paginierungssteuerelemente aufbauen können:
Nicht-Admin-Benutzer können nur ihre eigenen Kommentare löschen. Der Versuch, den Kommentar eines anderen Benutzers zu löschen, gibt 404 zurück (nicht 403):
How-to: Kommentar-Thread-API
Diese Anleitung demonstriert ressourcenbezogene Kommentar-Threads mit Paginierung, Nur-Autor-Löschung und Admin-Override.
Musterübersicht
limit- undoffset-Query-Parameter.Schema
2
3
4
5
6
7
8
Paginierungs-Muster
2
3
4
5
6
Die Antwort enthält
total(Anzahl aller Kommentare für die Ressource),limitundoffset, sodass Clients Paginierungssteuerelemente aufbauen können:2
3
4
5
6
Limit-Begrenzung
Ungültige oder außerhalb des Bereichs liegende limit/offset-Werte werden stillschweigend auf sichere Standardwerte begrenzt:
2
3
4
5
6
7
8
ctype_digit()wird verwendet, um ReDoS am Query-String zu vermeiden.IDOR: Nur-Autor-Löschung
Nicht-Admin-Benutzer können nur ihre eigenen Kommentare löschen. Der Versuch, den Kommentar eines anderen Benutzers zu löschen, gibt 404 zurück (nicht 403):
2
3
Ressourcenisolation
Alle Abfragen enthalten
WHERE resource_id = :rid, damit Kommentare für Ressource 1 nie mit Ressource 2 gemischt werden.Validierungsregeln
X-User-Idctype_digit, >0body{resourceId}-Pfadctype_digit, max. 18 Zeichen, >0; sonst 404limit-Queryoffset-QueryRouten
2
3
Siehe auch
../NENE2-FT/commentlog/docs/howto/note-taking.md(FT202, Notiz-CRUD)docs/howto/leaderboard-ranking.md(FT206, ressourcenbezogene Daten)