避免webcrawler运行中间件

时间:2016-01-08 22:40:09

标签: php laravel

当用户进入我的网站时,我会在中间件的帮助下创建一个购物车,如:

public function handle($request, Closure $next)
{

    $cartId =  $request->cookie('cartid');
    if($cartId == null) {
        $cart = new Cart();
        $cart->save();
        $cartId = $cart->id;
        $newCoockie = true;
    }
    else
    {
        $currentCart = Cart::find($cartId);
        if($currentCart == null){
            $cart = new Cart();
            $cart->save();
            $cartId = $cart->id;
            $newCoockie = true;
        }
    }
    $ip = "onbekend";
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }

    $cart->ip = $ip;
    $cart->save();
    $cookie = Cookie::forever('cartid', $cartId);
    return $next($request)->withCookie($cookie);
}

它工作正常,但现在我遇到了webcrawler的问题。在查看我的数据库时,我可以看到有很多由像[{3}}这样的网络浏览器创建的购物车,他们在过去几天每30秒发送一次请求!我应该如何避免为webcrawler请求创建购物车?

1 个答案:

答案 0 :(得分:0)

除非有某些原因导致每个请求都需要有一个有效的购物车,否则您可能只想在有人真正试图将某些内容放入其中时创建购物车。