2017-02-25 1 views
2

나는 관련 블로그 인 Silex를 사용하여 블로그를 작성하고 있으며 사용자가 댓글을 달 수있는 가능성을 추가하고 싶습니다. "신고/신고 덧글"을 구현하는 방법

처음에 난 그냥 내 comments 테이블에 부울 flagged 열을 추가 기본적으로 false로 설정하고, 사용자가 "주석을보고"버튼을 클릭 할 때마다 true에 투입합니다. 내 계획은 모든 신고 된 댓글을 관리자에게 쉽게 표시 할 수있게하는 것이 었습니다. 그러나 나는 모든 사용자가 모든 코멘트를보고 관리 패널에 익사시킬 수 있음을 깨달았다.

그래서 다르게 시도하고 싶습니다. 특정 댓글에 몇 번이나 플래그가 지정되었는지 계산하고 싶기 때문에 관리 패널의 '플래그가있는 댓글'섹션에 반영 할 수 있습니다. 그러면 관리자가 외로운 트롤과 외톨이가 어떤 댓글을 표시했는지 빠르게 확인할 수 있습니다. 거대한 표시가되어 관심을 기울일만한 가치가있다.
특정 사용자가 신고 한 댓글을 기억하고 싶기 때문에 이미 신고 한 댓글에 대해 '댓글 신고'버튼을 사용 중지 할 수 있습니다. 여기

두 질문 : 그것은이 작업을 수행 할 수있는 좋은 방법

  • 인가?
  • 어떻게 구현할 수 있습니까? 하나의 댓글이 신고 된 횟수는 재고가 적어야하지만, 단일 사용자가 신고 한 모든 댓글의 목록이 늘어나는 이유는 무엇입니까?

감사합니다.

+0

트롤이 아니라 해커가 아닌 경우 브라우저에서 쿠키와 자바 스크립트로 구현할 수 있습니다. 방탄을하고 싶다면 플래그를 별도의 테이블에 저장하고 플래그 날짜, IP 및 사용자 ID도 저장할 수 있습니다. 그럼 올바른 결정을 내리기 위해 모든 데이터가 있습니다 –

+0

'flags' 테이블에 모든 것을 넣어야합니까? 'flag_id','flag_date','user_id','comment_id' 컬럼을 볼 수 있습니다. 그런 식으로 코멘트의 id를 가진 플래그의 수를 그 테이블에 넣어야합니다. 그리고 주어진 모든 플래그를 쉽게 가져올 수 있습니다. 사용자의 ID. 그게 다야 ? 왜 사용자의 IP를'flags' 테이블에 저장할 수 있을까요? – yurden

+0

flag_id가 기본 키일 수 있으며 comment_id는 FK를 주석 테이블에 추가 한 다음 날짜를 datetime으로, user_id는 사용자가 주석을 작성할 때 기록됩니다. ip 열은 사용자가 주석에 플래그를 지정하기 위해 로그 할 필요가없는 경우에 유용 할 수 있습니다. 따라서 페이지를 표시 할 때 "의심스러운"댓글을 필터링 할 수 있습니다. –

답변

1

이 작업을 수행하는 좋은 방법은 최소한의 사용자 ID와 주석 ID를 보유 할 새 테이블을 만드는 것입니다. 사용자가 코멘트에 플래그를 지정했을 때 추적하고자하는 다른 정보에 대한 다른 컬럼을 추가하십시오.

이 방법의 장점은 sql에서 조인을 사용하여 사용자와 플래그가 지정된 모든 주석 또는 주석과 플래그가 지정된 모든 사용자를 가져올 수 있다는 것입니다. 또한 해당 테이블을 직접 쿼리하여 빠른 계산을 할 수 있습니다.

userid 및 commentid 열에 대한 색인은 테이블이 커지면 상황이 원활하게 유지됩니다.

관련 문제