Php Laravel 4:用于唯一访客计数的Cookies
我正在创建一个简单的博客,用户可以在其中添加、更新和查看帖子。我在帖子中实现了视图计数功能,显示帖子上的视图数。为此,我所做的是:Php Laravel 4:用于唯一访客计数的Cookies,php,cookies,laravel,laravel-4,Php,Cookies,Laravel,Laravel 4,我正在创建一个简单的博客,用户可以在其中添加、更新和查看帖子。我在帖子中实现了视图计数功能,显示帖子上的视图数。为此,我所做的是: 已创建事件侦听器: Event::listen('post.viewed','PostHandler@updatePostViewsAction'); 创建了PostHandler和updatePostViewsAction class PostHandler { public function handle() { //
Event::listen('post.viewed','PostHandler@updatePostViewsAction');代码>
PostHandler
和updatePostViewsAction
class PostHandler
{
public function handle()
{
//
}
public function updatePostViewsAction( $post )
{
// Update view counter of post
$post->views_count = $post->views_count + 1;
$post->save();
}
}
查看次数
。如果用户再次回来查看帖子,请检查是否有可用的cookie,如果它可用,则不要增加查看次数
,否则增加该次数。以下是我是如何实现这一点的:
class PostHandler
{
public function handle()
{
//
}
public function updatePostViewsAction( $post )
{
if ( !Cookie::get('post_viewed') ) {
// Update view counter of post
$post->views_count = $post->views_count + 1;
$post->save();
Cookie::forever('post_viewed', true);
}
}
}
但是它似乎不起作用,因为每次的浏览量都在增加。有人能告诉我,我做错了什么吗?为了用Laravel保存cookie,您需要将其发送到响应。但是,您可以通过将cookie发送到队列来解决此问题
public function updatePostViewsAction( $post )
{
if ( !Cookie::get('post_viewed') ) {
// Update view counter of post
$post->views_count = $post->views_count + 1;
$post->save();
// Create a cookie before the response and set it for 30 days
Cookie::queue('post_viewed', true, 60 * 24 * 30);
}
}
来源于Laravel文档:
将Cookie排队等待下一个响应
如果要在创建响应之前设置cookie,请使用cookie::queue()方法。cookie将自动附加到应用程序的最终响应
为了使用Laravel保存cookie,需要将其发送到响应。但是,您可以通过将cookie发送到队列来解决此问题
public function updatePostViewsAction( $post )
{
if ( !Cookie::get('post_viewed') ) {
// Update view counter of post
$post->views_count = $post->views_count + 1;
$post->save();
// Create a cookie before the response and set it for 30 days
Cookie::queue('post_viewed', true, 60 * 24 * 30);
}
}
来源于Laravel文档:
将Cookie排队等待下一个响应
如果要在创建响应之前设置cookie,请使用cookie::queue()方法。cookie将自动附加到应用程序的最终响应
您确定确实创建了cookie吗?使用浏览器的开发人员工具进行检查。是否确实创建了cookie?使用浏览器的开发人员工具进行检查。