fbf / laravel-agegate
为网站添加年龄门的Laravel 4包
Requires
- php: >=5.3.0
- garetjax/phpbrowscap: 2.0.*
- illuminate/support: 4.*
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.mode
为 none
来阻止它们
如果您想要允许某些用户代理通过,该包提供了3种方法
-
使用
phpbrowscap_crawler
这是一个作为年龄门包依赖项安装的composer包。
简而言之,这是browscap项目的一个版本,不需要您在php.ini中指定browscap.ini文件的路径。
该项目维护了一个最新的平台、浏览器、版本和能力列表,以及爬虫的详细信息。这个包使用的是爬虫数据。
它的工作方式是获取并缓存最新的browscap.ini文件的副本,并创建一个php数组缓存版本,然后它查找该文件中的用户代理字符串以确定是否是爬虫。
正如您所猜测的,第一次获取和缓存文件需要一些时间,但一旦有了缓存副本,后续检查就非常快。
phpbrowscap还会自动更新缓存,所以它总是最新的。
偶尔请求(可能是你根本不关心的机器人)的额外开销的缺点,被确保过滤器不会应用于任何机器人的更健壮的测试的优势所抵消,因为替代方法(见下文)在这方面有出错的空间,你可能不会想出正确匹配所有目标用户代理的字符串列表。
-
使用
contains
将字符串列表添加到
allowed_user_agents.strings
配置设置中,如果用户代理包含这些字符串之一,则不会应用年龄门。 -
使用
exact
将字符串列表添加到
allowed_user_agents.strings
配置设置中,如果用户代理与这些字符串之一完全匹配,则不会应用年龄门。