From c524592c687f2aae532e47d4f986a4c3aaf176a1 Mon Sep 17 00:00:00 2001 From: satopian Date: Mon, 30 Dec 2024 17:42:35 +0900 Subject: [PATCH] =?UTF-8?q?=E5=B9=B4=E9=BD=A2=E7=A2=BA=E8=AA=8D=E6=A9=9F?= =?UTF-8?q?=E8=83=BD=E3=82=92=E8=BF=BD=E5=8A=A0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- petitnote/config.php | 12 +++++++++ petitnote/functions.php | 34 +++++++++++++++++++++++++ petitnote/index.php | 6 +++-- petitnote/template/basic/age_check.html | 28 ++++++++++++++++++++ petitnote/template/basic/js/common.js | 12 +++++++++ 5 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 petitnote/template/basic/age_check.html diff --git a/petitnote/config.php b/petitnote/config.php index f328037..1b96723 100644 --- a/petitnote/config.php +++ b/petitnote/config.php @@ -227,6 +227,17 @@ // $set_nsfw = true; $set_nsfw = false; +//年齢確認を必須にする +// する: true しない: false +//する: trueで掲示板のすべてのコンテンツの閲覧に年齢確認確認が必要になります。 +//検索エンジンからも認識されなくなります。 + +// $age_check_required_to_view = true; +$age_check_required_to_view = false; + +//「18才未満です。」を押した時のリンク先 +$underage_submit_url="https://www.google.com/"; + // 閲覧注意を設定する //する: trueに設定すると閲覧注意の設定ができるようになります。閲覧注意画像にぼかしが入ります。 // する: true しない: false @@ -395,6 +406,7 @@ // 掲示板の閲覧に合言葉を必須にする // する: true しない: false // する: trueで掲示板のすべてのコンテンツの閲覧に合言葉が必要になります。 +// 検索エンジンからも認識されなくなります。 // $aikotoba_required_to_view=true; $aikotoba_required_to_view=false; diff --git a/petitnote/functions.php b/petitnote/functions.php index 163bcf8..283bf68 100644 --- a/petitnote/functions.php +++ b/petitnote/functions.php @@ -52,6 +52,8 @@ function aikotoba(): void { function aikotoba_required_to_view($required_flag=false): void { global $use_aikotoba,$aikotoba_required_to_view,$skindir,$en,$petit_lot,$boardname; + //先に年齢確認を行う + age_check_required_to_view(); $required_flag=($use_aikotoba && $required_flag); @@ -70,6 +72,38 @@ function aikotoba_required_to_view($required_flag=false): void { } } +// 年齢確認 +function age_check(): void { + global $aikotoba,$en,$keep_aikotoba_login_status; + + check_same_origin(); + + $agecheck_passed = (bool)filter_input(INPUT_POST,'agecheck_passed',FILTER_VALIDATE_BOOLEAN); + if($agecheck_passed){ + setcookie("agecheck_passed",$aikotoba, time()+(86400*30),"","",false,true);//1ヶ月 + } + // 処理が終了したらJavaScriptでリロード +} +//記事の表示に年齢確認を必須にする +function age_check_required_to_view(): void { + global $underage_submit_url; + global $age_check_required_to_view,$skindir,$en,$petit_lot,$boardname; + $age_check_required_to_view = $age_check_required_to_view ?? false; + $underage_submit_url = $underage_submit_url ?? 'https://www.google.com/'; + + if(!$age_check_required_to_view){ + return; + } + + $admin_pass= null; + $agecheck_passed = (bool)filter_input(INPUT_COOKIE,'agecheck_passed'); + if(!$agecheck_passed){ + $templete='age_check.html'; + include __DIR__.'/'.$skindir.$templete; + exit();//return include では処理が止まらない。 + } +} + //管理者パスワードを確認 function is_adminpass($pwd): bool { global $admin_pass,$second_pass; diff --git a/petitnote/index.php b/petitnote/index.php index 2e0214d..edc3bf4 100644 --- a/petitnote/index.php +++ b/petitnote/index.php @@ -1,8 +1,8 @@ + + + + + + + + +<?=h($boardname)?> + + +
+
+

Age Verification年齢確認

+

Are you 18 or older?あなたは18才以上ですか?

+ +
+ +
+
+ +
+
+
+ + + diff --git a/petitnote/template/basic/js/common.js b/petitnote/template/basic/js/common.js index 598013c..19a9fd3 100644 --- a/petitnote/template/basic/js/common.js +++ b/petitnote/template/basic/js/common.js @@ -153,6 +153,18 @@ const view_nsfw = (event) => { } } +//年齢確認ボタンを押下するまで表示しない +const age_check = (event) => { + const form = document.getElementById("age_check"); + if (form) { + event.preventDefault(); // 通常フォームの送信を中断 + const formData = new FormData(); + formData.append('mode', 'age_check'); + formData.append('agecheck_passed', 'on'); + postFormAndReload(formData); + } +} + //閲覧注意画像を隠す/隠さない const set_nsfw_show_hide = document.getElementById("set_nsfw_show_hide"); if(set_nsfw_show_hide){