개발
Laravel 개발 일지
라라벨에서 쿠키를 이용한 손쉬운 조회수 기능 추가
118 views as of September 30, 2024.
우리가 흔히 특정 게시글이나 페이지뷰에 대해서 조회수 기능(hit count)을 붙일때면 조회시에
post
모델의 hit
값을 1 올리는 incresement
작업으로 수행한다.$post->increment('hit');
Copy
근데 이 방식으로하면 해당 페이지를 계속 요청하는, 일련의 새로고침 연타로도 계속 조회수가 상승한다.
이런걸 막기위해서는 세션이나 쿠키를 사용해서 조회했던 페이지를 기억해놓고 조회시 이를 체크하는 과정을 통해 구현할 수 있다.
라라벨에서는 백단에서도 간단히
cookie
함수를 이용해서 아래와 같이 구현 할 수 있다.public function showPost($id, Request $request)
{
$post = Post::find($id);
// 사용자에게 hit 카운트를 증가시켰는지 확인하기 위한 쿠키 이름
$cookieName = 'erulabo_post_' . $id;
// 쿠키가 존재하지 않으면 조회수(hit) 증가
if (!$request->cookie($cookieName)) {
// 조회수 증가
$post->increment('hit');
// 쿠키 설정 (1일 동안 유지)
$cookie = cookie($cookieName, true, 1440); // 1440 분 = 1일
return response()
->view('view', compact('post'))
->cookie($cookie);
}
return view('view', compact('post'));
}
Copy
앞단에서 쿠키를 확인하면 아래와 같이 정상 기록이 되었음을 확인할 수 있다.
241007 추가
이거 이거 매우 안좋은 방법이다. 게시글마다 쿠키를 일일히 만들어버리니까 쿠키사이즈가 순식간에 올라가서 http 헤더사이즈가 너무 커져버리고 이러면 웹서버에서 해당 요청을 차단해버리는 문제가 발생한다.
이 방식으로 게시글별로 read 값을 관리하고싶다면 브라우저 쿠키 방식 보다 서버 세션 방식이 훨씬 나은것 같다.
라라벨에서 세션을 이용한 손쉬운 조회수 기능 추가 - eruLabo
라라벨에서 쿠키를 이용한 손쉬운 조회수 기능 추가 - eruLabo우리가 흔히 특정 게시글이나 페이지뷰에 대해서 조회수 기능(hit count)을 붙일때면 조회시에 post 모델의 hit값을 1 올리는 incresement 작업으로 수...
https://erulabo.com/181
#개발 #Laravel #라라벨 #조회수 #쿠키
0
개의 댓글
Collection. Laravel 개발 일지
01.
라라벨에서 ajax로 FormData 넘길때 method에 의해 발생할 수 있는 오류
2021
02.
PHPStorm 라라벨 로컬 서버 환경 설정 값
2021
03.
라라벨에서 쿠키를 이용한 손쉬운 조회수 기능 추가
2024
04.
라라벨에서 세션을 이용한 손쉬운 조회수 기능 추가
2024
05.
라라벨 에러 페이지 수정 및 커스터마이징
2024
06.
라라벨에서 AWS SDK를 설치했을때 나오는 PHP 버전 에러 우회 방법
2024
07.
라라벨에서 IndexNow 사용법
2024
08.
동적 목차(ToC) 구현
2024
09.
라라벨 Permissions-Policy 헤더 추가 하는 방법
2024
10.
라라벨 구버전에서 pagination link http 문제 해결 (proxy 환경)
2024
11.
라라벨 블레이드 템플릿(Blade Template) Json 파싱
2024