18plus / agegate
18+ 成人网站年龄门
Requires
- php: >=5.4
- firebase/php-jwt: ^5.0
- uzulla/qrcode-php: ^0.1.3
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-09-26 19:17:03 UTC
README
欢迎使用PHP的18+年龄门。此仓库包含您将UK符合年龄18+年龄验证工具集成到您的Go后端所需的所有代码,以便您的英国访客可以以安全且匿名的方式确认他们年龄为18岁或以上。
有关英国年龄要求的更多信息,请访问https://www.ageverificationregulator.com
18+年龄门和验证工具是免费提供的,由https://18plus.org
组件
该仓库包含三个组件来构建您的年龄门:
- 年龄门模块,如果您的网站没有其他年龄门,则应使用该模块来拦截对您网站的请求。
- ReallyMe年龄验证模块,为您的访客提供一种免费且匿名的方式,以证明他们满足最低年龄要求。
- 18+ Pass模块,为您的访客提供加密VPN解决方案以进行私密浏览。如果您包括您的18+ Pass联盟链接,您将从AgeGate的任何销售中获得18+的补偿。有关更多信息,请访问https://18plus.org/affiliates。
如果您已经有一个年龄认证拦截器,您可以向现有工具添加ReallyMe年龄验证模块和18+ Pass模块。
概述 - 年龄验证如何工作
当英国访客访问您的网站时,会显示年龄验证要求。通过选择ReallyMe年龄验证选项,访客将能够安全且匿名地向您提供他们年龄为18+的保证。ReallyMe提供免费的iOS和Android应用程序,用户可以通过该应用程序验证其身份。然后,用户可以匿名地与您的网站共享他们年龄为18+的事实,在此过程中,您的网站和ReallyMe都不知道用户的身份或他们要访问的特定网站。
该过程如下:当访客在年龄门上点击ReallyMe年龄验证按钮时,他们会看到一个二维码或deeplink。通过使用手机扫描此二维码或点击此deeplink,手机上的ReallyMe应用程序会打开,用户会看到一个同意请求。deeplink包含一个唯一的AgeVerificationID,可以是您使用SDK生成的随机字符串,会话ID,或者通过连接用户的IP地址和访问时间UTC。deeplink还包含一个回调URL。
当用户同意与您的网站共享他们年龄为18+的事实时,ReallyMe应用程序会从Really.Me请求AgeVerificationID的签名版本。如果用户年龄超过18岁,ReallyMe将使用其私钥对AgeVerificationID进行签名,并向用户颁发jwt。然后,用户的应用程序会将此签名jwt传输到您的服务器端点的URL。
您的服务器将解码jwt,并将到期时间和日期与当前UTC进行比较,通过将其与存储在您的服务器上的ReallyMe公共签名密钥进行比较,以确保签名的有效性。
为了获得最佳的用户体验,访客的浏览器应该继续调用您的服务器进行会话刷新。这样,一旦会话通过您的服务器接收带有AgeVerificationID的签名jwt得到验证,AgeGate应自动消失。如果您希望用户点击下一个按钮,则可以添加此功能。
最后,存储一个cookie与访客一起,以防止他在一段时间内需要重新确认年龄。谨慎的做法是在会话结束时使cookie过期。
需求
版本
安装
对于Laravel
在您的composer.json中要求此包,并更新composer。这将下载该包。
composer require 18plus/agegate
用法
首先,验证访客是否来自英国或检查是否已经验证。如果访客来自英国,显示AgeGate。
if(AgeGate::isVerified() || !AgeGate::GbIPCheck()){
return redirect('/home');
}
return AgeGate::view('', '/home');
AgeGate::view()函数有三个参数 - 1:您的成人网站logo文件URL,2:当AgeGate消失时将进入的路由,3:AgeGate签名后返回的路由。如果您没有设置第三个参数,它将返回到'/AgeVerifyResult'路由,然后您必须定义'/AgeVerifyResult'之后的路由和动作。
对于Laravel
In routes/web.php
Route::any('/AgeVerifyResult', "EighteenPlusController@verify");
...
In EighteenPlusController.php / EighteenPlusController class
...
public function verify(Request $request){
return EighteenPlus\AgeGate\AgeGate::verify($request->jwt);
}
对于Symfony
In config/routes.php
return function (RoutingConfigurator $routes) {
...
$routes->add('AgeVerifyResult', '/AgeVerifyResult')
->controller([EighteenPlusController::class, 'verify']);
...
};
...
In EighteenPlusController.php / EighteenPlusController class
...
public function verify(Request $request){
return EighteenPlus\AgeGate\AgeGate::verify($request->request->jwt);
}
对于CodeIgniter
In config/routes.php
...
$route['AgeVerifyResult'] = 'AgeVerifyResult';
...
In controllers/AgeVerifyResult.php
...
class AgeVerifyResult extends CI_Controller {
public function index(){
return EighteenPlus\AgeGate\AgeGate::verify($this->input->post('jwt'));
}
}
对于Zend
In module.config.php
...
'router' => array(
'routes' => array(
'album' => array(
'type' => 'segment',
'options' => array(
'route' => '/AgeVerifyResult',
'defaults' => array(
'controller' => 'AgeVerifyResult\Controller\AgeVerifyResult',
'action' => 'index',
),
),
),
),
),
...
In class AgeVerifyResultController
...
class AgeVerifyResultController extends AbstractActionController {
public function index(){
return EighteenPlus\AgeGate\AgeGate::verify($this->input->post('jwt'));
}
}
配置
支持
对于任何疑问或支持,请通过电子邮件联系 sdksupport@18plus.org。一旦我们回答了您的问题,我们可能会再次联系您讨论18+产品和服务的细节。如果您希望我们不这样做,请在您发电子邮件时告知我们。