fbf/laravel-agegate

为网站添加年龄门的Laravel 4包

v0.4.0 2014-04-24 08:37 UTC

This package is not auto-updated.

Last update: 2024-09-23 14:13:08 UTC


README

为网站添加年龄门的Laravel 4包

功能

  • 将受保护的路线请求重定向到年龄门URL
  • 年龄门表单,带有输入类型为date或选择标签的年、月、日
  • 可配置的年龄门URL,最小年龄,cookie名称,cookie值
  • 如果用户足够大,设置'永久'、'会话'或X分钟(可配置)的cookie
  • 将用户重定向回他们试图访问的URL
  • 可选地允许通过3种方法之一允许机器人/爬虫/蜘蛛通过年龄门

安装

将以下内容添加到您的composer.json文件中

"fbf/laravel-agegate": "dev-master"

运行

composer update

将以下内容添加到app/config/app.php

'Fbf\LaravelAgegate\LaravelAgegateServiceProvider'

发布配置

php artisan config:publish fbf/laravel-agegate

配置

年龄门页面的URI

'agegate_uri' => 'agegate',

访问网站的最小年龄

'minimum_age' => 18,

要使用的输入类型。选择项是:"date"用于html5输入类型="date","select"用于日、月、年3个选择标签

'input_type' => 'select',

要设置的cookie名称。更改为此想要的内容

'cookie_name' => 'age_ok',

要设置的cookie值。更改为此独特的内容

'cookie_val' => 'hell yeah!',

要设置的cookie年龄。选项是'永久'、整数(分钟)或默认为会话

'cookie_age' => 'forever',

确定用户是否可以再次尝试,如果他们输入的生日使他们太年轻,或者不可以。这会持续整个会话

'can_try_again' => false,

应渲染的年龄门视图。您可以使用捆绑的视图,或指定自己的视图并使用 @include('laravel-agegate::agegate') 来获取年龄门表单和验证错误

'view' => 'laravel-agegate::agegate',

允许用户代理的模式(见下文关于允许机器人等部分)

'allowed_user_agents.mode' => 'phpbrowscap_crawler'

允许用户代理的字符串,对于模式=精确或模式=包含设置(见下文关于允许机器人等部分)

'allowed_user_agents.strings' => array(...)

用法

通过添加以下内容到app/filters.php中注册过滤器

Route::filter('agegate', 'Fbf\LaravelAgegate\LaravelAgegateFilter');

并将它应用到您想要保护的路由中,通过添加以下内容到app/routes.php中

Route::when('my/routes/*', 'agegate');

Route::group(array('before' => 'agegate'), function()
{
	// My routes
});

您还需要将年龄门路由添加到您的app/routes.php中,例如

Route::get(
	Config::get('laravel-agegate::agegate_uri'),
	'Fbf\LaravelAgegate\AgegateController@agegate'
);

Route::post(
	Config::get('laravel-agegate::agegate_uri'),
	array(
		'before' => 'csrf',
		'uses' => 'Fbf\LaravelAgegate\AgegateController@doAgegate'
	)
);

如果您正在结合使用路由前缀和年龄门过滤器,您可以这样做

Route::get(
    Request::segment(1).'/'.Config::get('laravel-agegate::agegate_uri'),
    'Fbf\LaravelAgegate\AgegateController@agegate'
);

Route::post(
    Request::segment(1).'/'.Config::get('laravel-agegate::agegate_uri'),
    array(
        'before' => 'csrf',
        'uses' => 'Fbf\LaravelAgegate\AgegateController@doAgegate'
    )
);

允许机器人/爬虫/蜘蛛通过

您可以通过设置配置设置 allowed_user_agents.modenone 来阻止它们

如果您想要允许某些用户代理通过,该包提供了3种方法

  • 使用 phpbrowscap_crawler

    这是一个作为年龄门包依赖项安装的composer包。

    简而言之,这是browscap项目的一个版本,不需要您在php.ini中指定browscap.ini文件的路径。

    该项目维护了一个最新的平台、浏览器、版本和能力列表,以及爬虫的详细信息。这个包使用的是爬虫数据。

    它的工作方式是获取并缓存最新的browscap.ini文件的副本,并创建一个php数组缓存版本,然后它查找该文件中的用户代理字符串以确定是否是爬虫。

    正如您所猜测的,第一次获取和缓存文件需要一些时间,但一旦有了缓存副本,后续检查就非常快。

    phpbrowscap还会自动更新缓存,所以它总是最新的。

    偶尔请求(可能是你根本不关心的机器人)的额外开销的缺点,被确保过滤器不会应用于任何机器人的更健壮的测试的优势所抵消,因为替代方法(见下文)在这方面有出错的空间,你可能不会想出正确匹配所有目标用户代理的字符串列表。

  • 使用 contains

    将字符串列表添加到 allowed_user_agents.strings 配置设置中,如果用户代理包含这些字符串之一,则不会应用年龄门。

  • 使用 exact

    将字符串列表添加到 allowed_user_agents.strings 配置设置中,如果用户代理与这些字符串之一完全匹配,则不会应用年龄门。