fastwebmedia/laravel-avp

一个用于在网站上添加AVP的Laravel 4包

0.7.9 2016-05-26 15:33 UTC

README

Build Status

Laravel-AVP

一个用于在网站上添加年龄门的Laravel 5包

特性

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

安装

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

"fastwebmedia/laravel-avp": "dev-master"

运行

composer update

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

'FWM\LaravelAVP\LaravelAVPServiceProvider'

发布配置

php artisan config:publish fastwebmedia/laravel-avp

配置

年龄门页面的URI

'agegate_uri' => 'agegate',

访问网站的最小年龄

'minimum_age' => 18,

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

'input_type' => 'select',

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

'cookie_name' => 'age_ok',

要设置的cookie值。更改此为唯一的值

'cookie_val' => 'hell yeah!',

要设置的cookie年龄。选项是:"永远",整数(分钟)或默认为会话

'cookie_age' => 'forever',

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

'can_try_again' => false,

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

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

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

'allowed_user_agents.mode' => 'phpbrowscap_crawler'

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

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

用法

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

Route::filter('agegate', 'FWM\LaravelAVP\LaravelAVPFilter');

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

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

或者

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

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

Route::get(
	Config::get('laravel-avp::agegate_uri'),
	'FWM\LaravelAVP\AVPController@agegate'
);

Route::post(
	Config::get('laravel-avp::agegate_uri'),
	array(
		'before' => 'csrf',
		'uses' => 'FWM\LaravelAVP\AVPController@doAgegate'
	)
);

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

Route::get(
    Request::segment(1).'/'.Config::get('laravel-avp::agegate_uri'),
    'FWM\LaravelAVP\AVPController@agegate'
);

Route::post(
    Request::segment(1).'/'.Config::get('laravel-avp::agegate_uri'),
    array(
        'before' => 'csrf',
        'uses' => 'FWM\LaravelAVP\AVPController@doAgegate'
    )
);

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

您可以通过将配置设置allowed_user_agents.mode设置为none来阻止它们

如果您希望允许某些用户代理通过,该包提供了三种方法

  • 使用phpbrowscap_crawler

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

    简单来说,这是browscap项目的版本,不需要您在php.ini中指定browscap.ini文件的路径。

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

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

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

    phpbrowscap还会自动更新缓存,因此它始终保持最新。

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

  • 使用 contains

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

  • 使用 exact

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