Skip to content

Commit

Permalink
年齢確認機能を追加。
Browse files Browse the repository at this point in the history
  • Loading branch information
satopian committed Dec 30, 2024
1 parent 0a13f2c commit c524592
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 2 deletions.
12 changes: 12 additions & 0 deletions petitnote/config.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -395,6 +406,7 @@
// 掲示板の閲覧に合言葉を必須にする
// する: true しない: false
// する: trueで掲示板のすべてのコンテンツの閲覧に合言葉が必要になります。
// 検索エンジンからも認識されなくなります。

// $aikotoba_required_to_view=true;
$aikotoba_required_to_view=false;
Expand Down
34 changes: 34 additions & 0 deletions petitnote/functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand All @@ -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;
Expand Down
6 changes: 4 additions & 2 deletions petitnote/index.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?php
//Petit Note (c)さとぴあ @satopian 2021-2024
//1スレッド1ログファイル形式のスレッド式画像掲示板
$petit_ver='v1.65.3';
$petit_lot='lot.20241229';
$petit_ver='v1.66.0';
$petit_lot='lot.20241230';

$lang = ($http_langs = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : '')
? explode( ',', $http_langs )[0] : '';
Expand Down Expand Up @@ -169,6 +169,8 @@
return adminpost();
case 'aikotoba':
return aikotoba();
case 'age_check':
return age_check();
case 'view_nsfw':
return view_nsfw();
case 'set_nsfw_show_hide':
Expand Down
28 changes: 28 additions & 0 deletions petitnote/template/basic/age_check.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<!DOCTYPE html>
<?php include __DIR__.'/parts/html.html';?>
<head>
<meta charset="UTF-8">
<meta name="robots" content="noindex,nofollow">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<?php include __DIR__.'/parts/head_preload_css_js.html';?>
<link rel="stylesheet" href="<?=h($skindir)?>index.css?<?=h($petit_lot)?>">
<title><?=h($boardname)?></title>
</head>
<body>
<div class="container" id="top">
<div class="mainform">
<h2 class="article_title"><?php if($en):?>Age Verification<?php else:?>年齢確認<?php endif;?></h2>
<p><?php if($en):?>Are you 18 or older?<?php else:?>あなたは18才以上ですか?<?php endif;?></p>

<form action="./" method="post" class="aikotoba" id="age_check" onsubmit="return age_check(event)">
<input type="submit" value="<?php if($en):?>Yes, 18 or older<?php else:?>はい18才以上です。<?php endif;?>">
</form>
<form action="<?=h($underage_submit_url)?>" class="aikotoba">
<input type="submit" value="<?php if($en):?>No, under 18<?php else:?>いいえ18才未満です。<?php endif;?>">
</form>
</div>
</div>
<?php include __DIR__.'/parts/footer_js.html';?>
</body>
</html>
12 changes: 12 additions & 0 deletions petitnote/template/basic/js/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -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){
Expand Down

0 comments on commit c524592

Please sign in to comment.