日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

php博客浏览人数,在博客中实现浏览次数的统计

發(fā)布時(shí)間:2023/11/27 生活经验 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php博客浏览人数,在博客中实现浏览次数的统计 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

由于最近都在搭建自己的博客,像一些基本的功能如文章的發(fā)表,編輯等功能在之前就實(shí)現(xiàn)好了,今天主要是說(shuō)說(shuō)自己在實(shí)現(xiàn)瀏覽次數(shù)的統(tǒng)計(jì)上的解決方法。

在Laravel中,利用Eloquent的One-To-Many的關(guān)系,實(shí)現(xiàn)一篇文章有多條瀏覽記錄,具體思路如下:

用戶訪問(wèn)文章頁(yè)面-->取得ip地址和文章id,存入數(shù)據(jù)庫(kù) 再次訪問(wèn)時(shí)根據(jù)ip和文章id判斷是否新增記錄

利用weboAp/VisitorPackage可以輕松實(shí)現(xiàn),具體步驟如下:

1.在composer.json中添加weboAp/VisitorPackage:

{

"require": {

"weboap/visitor": "dev-master"

}

}

然后執(zhí)行:

composer update

將Service添加到config/app.php中:

'Weboap\Visitor\VisitorServiceProvider'

之后再執(zhí)行下面兩個(gè)命令:

php artisan vendor:publish

php artisan migrate

storage/geo/

當(dāng)然/geo是需要自己創(chuàng)建的目錄。

上面的步驟之后你將會(huì)得到一個(gè)表visitor_registry,這里我們首先為visitor_registry添加一個(gè)字段article_id用于One-To-Many的關(guān)系。

php artisan make:migration add_article_id_to_visitor_registry --table='visitor_registry'

在生成的migration大概是這樣寫(xiě):

public function up()

{

Schema::table('visitor_registry', function (Blueprint $table) {

$table->integer('article_id')->unsigned()->index();

$table->foreign('article_id')->references('id')->on('articles')->onDelete('cascade');

});

}

創(chuàng)建VisitorRegistry模型:

php artisan make:model VisitorRegistry

在VisitorRegistry.php中寫(xiě)上一下代碼:

protected $table = 'visitor_registry';

protected $fillable = ['clicks'];

public function articles()

{

return $this->belongsTo('App\Article');

}

上面我們通過(guò)articles()聲明了VisitorRegistry對(duì)Article的關(guān)系,于是在Article中也聲明關(guān)系:

public function visitors()

{

return $this->hasMany('App\VisitorRegistry');

}

關(guān)系修改完畢之后,由于我們?yōu)関isitor_registry表添加了article_id字段,所以我們需要修改weboAp/VisitorPackage中Visitor.php文件的log()方法,因?yàn)檫@個(gè)就是執(zhí)行插入數(shù)據(jù)的實(shí)際方法,我們首先給它闖入一額文章的id:

public function log($article_id){}

然后對(duì)log()方法里面修改第二個(gè)條件判斷:

if( $this->has( $ip ) && $this->hasArticle($article_id) )

{

//ip already exist in db.

$visitor = VisitorRegistry::where('ip','=',$ip)->where('article_id','=',$article_id)->first();

$visitor->update(['clicks'=>$visitor->clicks + 1]);

return true;

}

上面我們自己添加了一個(gè)hasArticle($article_id,$ip),我們可以直接將這個(gè)方法寫(xiě)在Visitor.php中:

public function hasArticle($id,$ip)

{

return count(VisitorRegistry::where('article_id','=',$id)->where('ip','=',$ip)->get()) > 0;

}

最后我們還要修改log()中的插入數(shù)據(jù)的數(shù)組數(shù)據(jù)$data:

$data = array(

'ip' => $ip,

'country' => $country,

'clicks' => 1,

'article_id' => $article_id,

'updated_at' => c::now(),

'created_at' => c::now()

);

我們就添加'article_id' => $article_id,到這里,我們的準(zhǔn)備工作做好了,然后在ArticleController中的show($id)方法使用:

Visitor::log($id);

有了數(shù)據(jù)之后我們可以將它展示給用戶看,在展示文章的頁(yè)面寫(xiě)上類(lèi)似下面的內(nèi)容:

{{ count($article->visitors) }} 瀏覽

打完收工,很開(kāi)心。

Happy Hacking

總結(jié)

以上是生活随笔為你收集整理的php博客浏览人数,在博客中实现浏览次数的统计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。