From f94c921c766cdcbbacf4ae202f1239130a47e7a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Wed, 16 Aug 2023 15:36:56 +0900 Subject: [PATCH 01/51] Initial commit --- README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..a240ce4 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# uwuzu \ No newline at end of file From ab77598cfd8dded82eaca4061206ce7400469e21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Wed, 16 Aug 2023 15:48:17 +0900 Subject: [PATCH 02/51] Update README.md --- README.md | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 99 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a240ce4..24e7f70 100644 --- a/README.md +++ b/README.md @@ -1 +1,99 @@ -# uwuzu \ No newline at end of file +# uwuzu +あたらしいSNSです!!! +右側のReleaseからDLして導入していただけます! +AGPLライセンスです!!! + +導入方法は以下のとおりです! + +## uwuzuサーバーの建て方 +※MySQLの設定結構めんどいです。 +まず、Apache2とPHP 8とmysql Ver 15が導入されているサーバーを準備します! +次にSQLを設定します。(InnoDB) +まず、お好きな名前でDBを作成し、その中に、account,emoji,notice,role,ueuse,notificationとテーブルを作成します。 +テーブルの中身は以下のとおりです。 +照合順序は全て標準でutf8mb4_general_ciです。 +### account +- sysid(INT)(AUTO_INCREMENT ) アカウントが追加されるとカウントされるシステム用ID +- username(varchar(500)) ユーザーネーム保存用 +- userid(varchar(500)) ユーザーID保存用 +- password(varchar(1024)) パスワード保存用(ハッシュ化されます) +- loginid(varchar(256)) 自動ログイン時に本人アカウントか確認 +- mailadds(varchar(500)) メールアドレス保存用 +- profile(TEXT) プロフィールテキスト保存用 +- iconname(varchar(256)) アイコン画像名保存用 +- iconcontent(mediumblob) アイコン画像保存用 +- icontype(varchar(256)) アイコン画像拡張子保存用 +- iconsize(INT) アイコン画像サイズ保存用 +- headname(varchar(256)) ヘッダー画像名保存用 +- headcontent(mediumblob) ヘッダー画像保存用 +- headtype(varchar(256)) ヘッダー画像拡張子保存用 +- headsize(INT) ヘッダー画像サイズ保存用 +- role(varchar(1024)) 「user」のようなロール保存用 +- datetime(datetime) アカウント作成日時保存用 +- follow(text) アカウントがフォローしている人保存用 +- follower(text) アカウントがフォローされている人保存用 +- admin(varchar(25)) 管理者アカウントなら「yes」、それ以外なら「none」と入力。 + +### emoji +- sysid(INT)(AUTO_INCREMENT) アカウントが追加されるとカウントされるシステム用ID +- emojifile(varchar(512)) 絵文字ファイル名保存用 +- emojitype(varchar(256)) 絵文字拡張子保存用 +- emojicontent(mediumblob) 絵文字画像保存用 +- emojiname(varchar(512)) 「:emoji:」のような絵文字名保存用 +- emojiinfo(text) 絵文字についての説明保存用 +- emojidate(datetime) 絵文字登録日時保存用 + +### notice +- sysid(INT)(AUTO_INCREMENT) うんえいからのおしらせが追加されるとカウントされるシステム用ID +- title(varchar(1024)) お知らせのタイトル保存用 +- note(text) お知らせの内容保存用 +- account(varchar(500)) 編集者ID保存用 +- emojidate(datetime) お知らせ登録日時保存用 + +### role +- sysid(INT)(AUTO_INCREMENT) ロールが追加されるとカウントされるシステム用ID +- rolename(varchar(512)) ロール表示名保存用 +- roleauth(varchar(256)) ロールの権限保存用 +- rolecolor(varchar(25)) ロールの色保存用 +- roleidname(varchar(512)) 「user」のようなロール指定用 + +### ueuse +- sysid(INT)(AUTO_INCREMENT) 投稿されるとカウントされるシステム用ID +- account(varchar(256)) 投稿者ID保存用 +- uniqid(varchar(256)) 投稿ID保存用 +- rpuniqid(varchar(256)) リプライ先ID保存用 +- ueuse(text) 投稿内容保存用 +- photo1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 +- photo2(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 +- video1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 +- datetime(datetime) 投稿日時保存用 +- favorite(text) いいね保存用 +- abi(text) 投稿者の追記保存用 +- abidate(datetime) 追記日時保存用 + +### notification +- sysid(INT)(AUTO_INCREMENT) 通知されるとカウントされるシステム用ID +- touserid(varchar(512)) 通知先ID保存用 +- title(varchar(1024)) 通知のタイトル +- msg(text) 通知の内容 +- datetime(datetime) 通知日時 +- userchk(varchar(25)) 通知の既読確認 + + +すべて作成完了したらGithubよりuwuzuのファイルをDLし、解凍し、それをサーバーの動作ディレクトリに置き、Apacheのhttpd.confからその動作ディレクトリを指定し、あとはApacheとphpとMy SQLを起動するだけ! +起動したらまずDBのroleにphpmyadminから「user」ロールを追加権限は「user」でOK。ロール名はとりあえず「一般ユーザー」ロールの色はHEXコード(#を除く)で000000のように指定。 +そしたら普通にuwuzuにアクセスして自分のアカウントを登録。 +それが終わったら一度サーバーを止め、uwuzuの動作ディレクトリ内のserverフォルダ内のファイルを各自設定 +ファイルの機能は以下の通り! +- admininfo.txt : 管理者名(てすとまる/@sampledayo) +- contact.txt : 管理者への連絡用メアド(sample @test.com) +- info.txt : サーバー登録時に表示されるメッセージ(好きな内容) +- privacypolicy.txt : プライバシーポリシー(サーバーのプライバシーポリシーを記載) +- servername.txt : サーバー名(てすとさば) +- terms.txt : 利用規約(サーバーの利用規約を記載) +- uwuzuabout.txt : このファイル(uwuzuを改造した場合は書き換え) +- uwuzuinfo.txt : uwuzuのバージョン等記載(uwuzuを改造した場合は書き換え) +- uwuzurelease.txt : uwuzuのバージョン等記載(uwuzuを改造した場合は書き換え) + +### これでサーバーは完成!!! +もう一度サーバーを起動してみんなに公開しよう!!! From 3f835cc697711d8be5c8d36cb53870350459e2b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:18:10 +0900 Subject: [PATCH 03/51] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 24e7f70..9246538 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +# 注意:結構脆弱です。導入後はローカルな環境で使うことをおすすめします。 + # uwuzu あたらしいSNSです!!! 右側のReleaseからDLして導入していただけます! From f6417823af30ebd3a663498d55a6fda028582d29 Mon Sep 17 00:00:00 2001 From: Ryo Kanbayashi Date: Thu, 17 Aug 2023 19:38:56 +0900 Subject: [PATCH 04/51] import release v1.1.3 --- .gitignore | 474 ++++ .htaccess | 17 + abi/addabi.php | 40 + api/userdata-api.php | 75 + check.php | 225 ++ css/home.css | 3501 ++++++++++++++++++++++++++ css/style.css | 855 +++++++ db.php | 9 + delete/delete.php | 27 + emoji/addemoji.php | 360 +++ emoji/emojiimage.php | 75 + emoji/index.php | 197 ++ errorpage/400.php | 54 + errorpage/401.php | 54 + errorpage/403.php | 54 + errorpage/404.php | 54 + errorpage/500.php | 54 + errorpage/503.php | 54 + errorpage/serverstop.php | 89 + favicon/apple-touch-icon-180x180.png | Bin 0 -> 1905 bytes favicon/icon-192x192.png | Bin 0 -> 2067 bytes favorite/favorite.php | 57 + home/index.php | 612 +++++ home/tlimage.php | 78 + image.php | 77 + img/defhead/head.png | Bin 0 -> 8502 bytes img/deficon/head.png | Bin 0 -> 8502 bytes img/deficon/icon.png | Bin 0 -> 123586 bytes img/logoback.png | Bin 0 -> 11078 bytes img/motto.svg | 32 + img/sysimage/favorite_1.svg | 1 + img/sysimage/favorite_2.svg | 1 + img/sysimage/image_1.svg | 1 + img/sysimage/video_1.svg | 1 + img/titleimg/0.png | Bin 0 -> 54406 bytes img/titleimg/1.png | Bin 0 -> 64541 bytes img/titleimg/2.png | Bin 0 -> 89250 bytes img/uwuzucolorlogo.svg | 151 ++ img/uwuzulogo.svg | 195 ++ index.php | 145 ++ js/back.js | 6 + login.php | 205 ++ manifest/icon-512x512.png | Bin 0 -> 5221 bytes manifest/manifest.json | 15 + new.php | 498 ++++ nextpage/nextpage.php | 124 + nextpage/notification.php | 63 + nextpage/notificationview.php | 32 + nextpage/searchpage.php | 131 + nextpage/ueusepage.php | 139 + nextpage/userpage.php | 140 + nextpage/view.php | 85 + notice/addnotice.php | 292 +++ notice/notice.php | 40 + notification/index.php | 229 ++ others/index.php | 300 +++ reply/reply.php | 202 ++ require/botbox.php | 10 + require/leftbox.php | 26 + require/rightbox.php | 45 + rule/privacypolicy.php | 80 + rule/releasenotes.php | 93 + rule/terms.php | 80 + rule/uwuzuabout.php | 93 + search/index.php | 390 +++ settings/index.php | 664 +++++ success.php | 41 + sw.js | 42 + ueuse/index.php | 620 +++++ user/headimage.php | 78 + user/index.php | 646 +++++ 71 files changed, 13028 insertions(+) create mode 100644 .gitignore create mode 100644 .htaccess create mode 100644 abi/addabi.php create mode 100644 api/userdata-api.php create mode 100644 check.php create mode 100644 css/home.css create mode 100644 css/style.css create mode 100644 db.php create mode 100644 delete/delete.php create mode 100644 emoji/addemoji.php create mode 100644 emoji/emojiimage.php create mode 100644 emoji/index.php create mode 100644 errorpage/400.php create mode 100644 errorpage/401.php create mode 100644 errorpage/403.php create mode 100644 errorpage/404.php create mode 100644 errorpage/500.php create mode 100644 errorpage/503.php create mode 100644 errorpage/serverstop.php create mode 100644 favicon/apple-touch-icon-180x180.png create mode 100644 favicon/icon-192x192.png create mode 100644 favorite/favorite.php create mode 100644 home/index.php create mode 100644 home/tlimage.php create mode 100644 image.php create mode 100644 img/defhead/head.png create mode 100644 img/deficon/head.png create mode 100644 img/deficon/icon.png create mode 100644 img/logoback.png create mode 100644 img/motto.svg create mode 100644 img/sysimage/favorite_1.svg create mode 100644 img/sysimage/favorite_2.svg create mode 100644 img/sysimage/image_1.svg create mode 100644 img/sysimage/video_1.svg create mode 100644 img/titleimg/0.png create mode 100644 img/titleimg/1.png create mode 100644 img/titleimg/2.png create mode 100644 img/uwuzucolorlogo.svg create mode 100644 img/uwuzulogo.svg create mode 100644 index.php create mode 100644 js/back.js create mode 100644 login.php create mode 100644 manifest/icon-512x512.png create mode 100644 manifest/manifest.json create mode 100644 new.php create mode 100644 nextpage/nextpage.php create mode 100644 nextpage/notification.php create mode 100644 nextpage/notificationview.php create mode 100644 nextpage/searchpage.php create mode 100644 nextpage/ueusepage.php create mode 100644 nextpage/userpage.php create mode 100644 nextpage/view.php create mode 100644 notice/addnotice.php create mode 100644 notice/notice.php create mode 100644 notification/index.php create mode 100644 others/index.php create mode 100644 reply/reply.php create mode 100644 require/botbox.php create mode 100644 require/leftbox.php create mode 100644 require/rightbox.php create mode 100644 rule/privacypolicy.php create mode 100644 rule/releasenotes.php create mode 100644 rule/terms.php create mode 100644 rule/uwuzuabout.php create mode 100644 search/index.php create mode 100644 settings/index.php create mode 100644 success.php create mode 100644 sw.js create mode 100644 ueuse/index.php create mode 100644 user/headimage.php create mode 100644 user/index.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bcad0a6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,474 @@ +##### Windows +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +##### Linux +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +##### MacOS +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +##### Backup +*.bak +*.gho +*.ori +*.orig +*.tmp + +##### GPG +secring.* + +##### Dropbox +# Dropbox settings and caches +.dropbox +.dropbox.attr +.dropbox.cache + +##### SynopsysVCS +# Waveform formats +*.vcd +*.vpd +*.evcd +*.fsdb + +# Default name of the simulation executable. A different name can be +# specified with this switch (the associated daidir database name is +# also taken from here): -o / +simv + +# Generated for Verilog and VHDL top configs +simv.daidir/ +simv.db.dir/ + +# Infrastructure necessary to co-simulate SystemC models with +# Verilog/VHDL models. An alternate directory may be specified with this +# switch: -Mdir= +csrc/ + +# Log file - the following switch allows to specify the file that will be +# used to write all messages from simulation: -l +*.log + +# Coverage results (generated with urg) and database location. The +# following switch can also be used: urg -dir .vdb +simv.vdb/ +urgReport/ + +# DVE and UCLI related files. +DVEfiles/ +ucli.key + +# When the design is elaborated for DirectC, the following file is created +# with declarations for C/C++ functions. +vc_hdrs.h + +##### SVN +.svn/ + +##### Mercurial +.hg/ +.hgignore +.hgsigs +.hgsub +.hgsubstate +.hgtags + +##### Bazaar +.bzr/ +.bzrignore + +##### CVS +/CVS/* +**/CVS/* +.cvsignore +*/.cvsignore + +##### TortoiseGit +# Project-level settings +/.tgitconfig + +##### PuTTY +# Private key +*.ppk + +##### Vim +# Swap +[._]*.s[a-v][a-z] +!*.svg # comment out if you don't need vector files +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim +Sessionx.vim + +# Temporary +.netrwhist +*~ +# Auto-generated tag files +tags +# Persistent undo +[._]*.un~ + +##### Emacs +# -*- mode: gitignore; -*- +*~ +\#*\# +/.emacs.desktop +/.emacs.desktop.lock +*.elc +auto-save-list +tramp +.\#* + +# Org-mode +.org-id-locations +*_archive + +# flymake-mode +*_flymake.* + +# eshell files +/eshell/history +/eshell/lastdir + +# elpa packages +/elpa/ + +# reftex files +*.rel + +# AUCTeX auto folder +/auto/ + +# cask packages +.cask/ +dist/ + +# Flycheck +flycheck_*.el + +# server auth directory +/server/ + +# projectiles files +.projectile + +# directory configuration +.dir-locals.el + +# network security +/network-security.data + +##### SublimeText +# Cache files for Sublime Text +*.tmlanguage.cache +*.tmPreferences.cache +*.stTheme.cache + +# Workspace files are user-specific +*.sublime-workspace + +# Project files should be checked into the repository, unless a significant +# proportion of contributors will probably not be using Sublime Text +# *.sublime-project + +# SFTP configuration file +sftp-config.json +sftp-config-alt*.json + +# Package control specific files +Package Control.last-run +Package Control.ca-list +Package Control.ca-bundle +Package Control.system-ca-bundle +Package Control.cache/ +Package Control.ca-certs/ +Package Control.merged-ca-bundle +Package Control.user-ca-bundle +oscrypto-ca-bundle.crt +bh_unicode_properties.cache + +# Sublime-github package stores a github token in this file +# https://packagecontrol.io/packages/sublime-github +GitHub.sublime-settings + +##### Notepad++ +# Notepad++ backups # +*.bak + +##### TextMate +*.tmproj +*.tmproject +tmtags + +##### VisualStudioCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +##### NetBeans +**/nbproject/private/ +**/nbproject/Makefile-*.mk +**/nbproject/Package-*.bash +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ + +##### JetBrains +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +##### Eclipse +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ +.apt_generated_test/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +# Uncomment this line if you wish to ignore the project description file. +# Typically, this file would be tracked if it contains build/dependency configurations: +#.project + +##### Dreamweaver +# DW Dreamweaver added files +_notes +_compareTemp +configs/ +dwsync.xml +dw_php_codehinting.config +*.mno + +##### CodeKit +# General CodeKit files to ignore +config.codekit +config.codekit3 +/min + +##### Gradle +.gradle +**/build/ +!src/**/build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Cache of project +.gradletasknamecache + +# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 +# gradle/wrapper/gradle-wrapper.properties + +##### Composer +composer.phar +/vendor/ + +# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control +# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file +composer.lock + +##### PHP CodeSniffer +# gitignore for the PHP Codesniffer framework +# website: https://github.com/squizlabs/PHP_CodeSniffer +# +# Recommended template: PHP.gitignore + +/wpcs/* + +##### SASS +.sass-cache/ +*.css.map +*.sass.map +*.scss.map diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..791d5c1 --- /dev/null +++ b/.htaccess @@ -0,0 +1,17 @@ +RewriteEngine on +RewriteCond %{REQUEST_FILENAME} !-d +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME}\.php -f +RewriteRule ^(.*)$ $1.php [L] +RewriteBase / + +RewriteRule ^(@\w+)$ /user/index.php?uwuzuid=$1 [QSA,L] + +RewriteRule ^!(\w+)~(\w+)$ /ueuse/index.php?ueuseid=$1&touser=$2 [QSA,L] + +ErrorDocument 400 /errorpage/400.php +ErrorDocument 401 /errorpage/401.php +ErrorDocument 403 /errorpage/403.php +ErrorDocument 404 /errorpage/404.php +ErrorDocument 500 /errorpage/500.php +ErrorDocument 503 /errorpage/503.php \ No newline at end of file diff --git a/abi/addabi.php b/abi/addabi.php new file mode 100644 index 0000000..6766577 --- /dev/null +++ b/abi/addabi.php @@ -0,0 +1,40 @@ +beginTransaction(); + + $stmt = $pdo->prepare("UPDATE ueuse SET abi = :abi, abidate = :abidate WHERE uniqid = :uniqid"); + $stmt->bindValue(':abi', $abitext, PDO::PARAM_STR); + $stmt->bindValue(':abidate', $abidate, PDO::PARAM_STR); + $stmt->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $pdo->commit(); + + if ($res) { + header('Content-Type: application/json'); + echo json_encode(['success' => true]); + exit; + } else { + header('Content-Type: application/json'); + echo json_encode(['success' => false, 'error' => '追加に失敗しました。']); + exit; + } + } catch(PDOException $e) { + header('Content-Type: application/json'); + echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); + exit; + } +} +?> diff --git a/api/userdata-api.php b/api/userdata-api.php new file mode 100644 index 0000000..c9c77c2 --- /dev/null +++ b/api/userdata-api.php @@ -0,0 +1,75 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + } catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); + } + + + if (!empty($pdo)) { + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $pdo->prepare("SELECT username,profile,datetime,follow,follower FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $search); + $userQuery->execute(); + $userdata = $userQuery->fetch(); + } +if (empty($userdata)){ + $response = array( + 'error_code' => "userid_not_found", + ); +}else{ + $followcnts = explode(',', $userdata["follow"]); + $userdata["follow_cnt"] = count($followcnts)-1; + + $followercnts = explode(',', $userdata["follower"]); + $userdata["follower_cnt"] = count($followercnts)-1; + + $response = array( + 'user_name' => $userdata["username"], + 'profile' => $userdata["profile"], + 'registered_date' => $userdata["datetime"], + 'follow' => $userdata["follow"], + 'follow_cnt' => $userdata["follow_cnt"], + 'follower' => $userdata["follower"], + 'follower_cnt' => $userdata["follower_cnt"], + ); +} +echo json_encode($response); + +}else{ + + $err = "input_not_found"; + $response = array( + 'error_code' => $err, + ); + + echo json_encode($response); +} +?> \ No newline at end of file diff --git a/check.php b/check.php new file mode 100644 index 0000000..1584fe0 --- /dev/null +++ b/check.php @@ -0,0 +1,225 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + //$row['userid'] = "daichimarukn"; + + $userid = $_SESSION['userid']; + + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT userid, username, profile, role FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + $username = $row["username"]; + + $role = $row["role"]; + + + //-------------------------------------- + + $userQuery = $dbh->prepare("SELECT username, userid, loginid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $userid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + $roles = explode(',', $userData["role"]); // カンマで区切られたロールを配列に分割 + + $roleDataArray = array(); + + foreach ($roles as $roleId) { + $rerole = $dbh->prepare("SELECT rolename, roleauth, rolecolor FROM role WHERE roleidname = :role"); + $rerole->bindValue(':role', $roleId); + $rerole->execute(); + $roleDataArray[$roleId] = $rerole->fetch(); + } + + + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + + +if( !empty($_POST['btn_submit']) ) { + + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['loginid'] = $userData["loginid"]; + + $_SESSION['username'] = $username; + $_SESSION['password'] = ""; + + // リダイレクト先のURLへ転送する + $url = '/home'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + +if( !empty($_POST['btn_submit2']) ) { + + $_SESSION['admin_login'] = false; + $_SESSION['userid'] = ""; + + $_SESSION['username'] = ""; + + // リダイレクト先のURLへ転送する + $url = 'index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +確認 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
+

確認

+ +

あなたは ですか?

+ + +
    + +

    + +
+ + +
+ +

名前

+

+
+ + +
;"> +

;"> + +

+
+ +
+
+

プロフィール

+

+ +
+ +
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/css/home.css b/css/home.css new file mode 100644 index 0000000..8d380a2 --- /dev/null +++ b/css/home.css @@ -0,0 +1,3501 @@ +@import url('https://fonts.googleapis.com/css2?family=BIZ+UDPGothic:wght@400;700&family=Josefin+Sans:ital,wght@1,700&family=Kosugi+Maru&family=Zen+Maru+Gothic:wght@500&display=swap'); + + +::-webkit-scrollbar{ + display:none; +} +::-webkit-scrollbar:hover{ + overflow: scroll; + margin-right: 10px; + border-radius: 25px; +} +body{ + width: 70%; + display: flex; + border: none; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + padding-top: 12px; + background-color: #f7f7f7; + /* 画像を常に天地左右の中央に配置 */ + background-position: center center; + + /* 画像をタイル状に繰り返し表示しない */ + background-repeat: no-repeat; + + /* コンテンツの高さが画像の高さより大きい時、動かないように固定 */ + background-attachment: fixed; + + /* 表示するコンテナの大きさに基づいて、背景画像を調整 */ + background-size: cover; +} + +.irobutton{ + cursor: pointer; + border: none; + display: block; + width:50%; + margin: 32px; + padding: 8px 5%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + background-color: #FFC832; + + text-align: center; + border-radius: 50px; + color:#fff; + font-size: 22px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.sirobutton{ + cursor: pointer; + border: none; + display: block; + width:40%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + text-align: center; + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 22px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:45%; +} +.sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.inbox { + width: 96%; + padding: 8px 10px; + border: none; + border-radius: 10px; + background: #fff; + font-family: 'Zen Maru Gothic', sans-serif; + color: rgb(32,32,32); + font-size: 1em; + line-height: 1.5; + white-space: nowrap; + box-shadow:0px 0px 25px rgba(0,0,0,0.05) inset; + box-shadow:0px 0px 25px rgba(0,0,0,0.07); + overflow-x: scroll; + overflow-y : scroll ; + transition: border 350ms ease-in-out; + transition: border-bottom 150ms ease-out; + border: 1px solid #f1f1f1; + } + +.inbox::placeholder { + color: #999; +} + +.inbox:hover { + outline: none; + border: 1px solid #FFC832; +} + +.inbox:focus { + outline: none; + border: 1px solid #FFC832; + border-bottom: 3px solid #FFC832; +} + + +.errmsg{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 10px; + background-color: #ffebeb; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin: 12px; + text-align: left; + color:#ff4848; + font-family: 'BIZ UDPGothic', sans-serif; + word-wrap: break-word; + line-height: 20px; + border: 1px solid #FF4848; +} + +.flexbtn{ + display: flex; +} + +.flexbtn .irobutton{ + border: none; + display: block; + width:20%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + background-color: #FFC832; + + border-radius: 50px; + color:#fff; + font-size: 26px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.flexbtn.irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.flexbtn.irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.flexbtn.sirobutton{ + border: none; + display: block; + width:50%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 26px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.flexbtn.sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.flexbtn.sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + + +.rolebox{ + + margin-top: 12px; + margin-bottom: 12px; + + margin-left: auto; + margin-right: auto; + + width: 120px; + padding-left: auto; + padding-right: auto; + + background-color: #fff; + border: 1px solid #FFC832; + + border-radius: 25px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + +} + +.rolebox p{ + + color:#FFC832; + margin-top: 2px; + margin-bottom: 2px; + margin-left: 10px; + margin-right: 10px; + + text-align: center; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + +} + + +.userleftbox{ + border-radius: 17px; + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + margin-bottom: 12px; + background-color: #FFFFFF; + width: 18%; + height: 100%; + margin-left: 0px; + padding: 32px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; +} + +.userleftbox h1{ + font-family: 'Zen Maru Gothic', sans-serif; + margin-left: 20px; + color:#fff; + font-size: 32px; +} +.userleftbox .logo{ + display: flex; +} + +.userleftbox .logo img{ + + margin-left: auto; + margin-right: auto; + margin-top: 16px; + width: 72%; + + +} +.userleftbox .logo p{ + color:#FFC832; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; +} + +.leftbutton_on{ + cursor: pointer; + border: none; + display: block; + width:70%; + margin: 16px; + padding: 8px auto; + margin-left: auto; + margin-right: auto; + + padding-left: 16px; + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 20px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: left; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.leftbutton_on:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:75%; +} +.leftbutton_on:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:65%; +} + +.leftbutton{ + cursor: pointer; + border: none; + display: block; + width:70%; + margin: 16px; + padding: 8px auto; + margin-left: auto; + margin-right: auto; + + padding-left: 16px; + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFFFFF; + + border-radius: 50px; + color:#FFC832; + font-size: 20px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: left; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.leftbutton:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:75%; +} +.leftbutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:65%; +} + +main{ + height: 95dvh; + overflow: auto; + border-radius: 17px; + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + width: 62%; + background-color: #fff; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; +} + +main h1{ + color:#252525; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; +} + +.userheader{ + margin: 12px; + border-radius: 10px; + width: auto; + height:auto; + margin-bottom: 12px; +} + +.userheader .hed img{ + object-fit: cover; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + width: 100%; + height:25vh; + border-radius: 10px; +} + +.userheader .icon{ + margin-left: 24px; + display: flex; + width: auto; +} + +.userheader .icon img{ + object-fit: cover; + margin-top: -90px; + text-align: left; + width: 148px; + height:148px; + border-radius: 50%; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); +} + +.userheader h2{ + margin-left: 12px; + margin-top: auto; + margin-bottom: auto; + color:#252525; + font-size: 32px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: 900; +} + +.userheader p{ + margin-left: 12px; + margin-right: auto; + margin-top: auto; + margin-bottom: 14px; + color: #999; + font-size: 18px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: 900; +} + +.userheader .profile p{ + text-align: left; + margin-top: 12px; + margin-bottom: auto; + margin-left: 24px; + margin-right: 24px; + word-wrap: break-word; + font-size: 18px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.userheader .roleboxes{ + margin-left: 180px; + display: flex; + padding: 0px; + flex-wrap : wrap; +} + + +.userheader .rolebox{ + + margin-top: 0px; + margin-bottom: 12px; + + margin-left: 0px; + margin-right: 12px; + + width: auto; + padding-left: auto; + padding-right: auto; + + background-color: #fff; + border: 1px solid #FFC832; + + border-radius: 25px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + +} + + +.userheader .rolebox p{ + + color:#FFC832; + margin-top: 2px; + margin-bottom: 2px; + margin-left: 10px; + margin-right: 10px; + + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + +} + +.fzone{ + margin-left: 24px; + margin-right: 24px; + margin-bottom: 24px; + width: auto; + height: 48px; + display: flex; + padding-left: 12px; + padding-right: 12px; +} + +.fzone .follow .fbtn{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 0px; + margin-top: 12px; + margin-bottom: 12px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.fzone .follow .fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.fzone .follow .fbtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.fzone .follow .fbtn_no{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 0px; + margin-top: 12px; + margin-bottom: 12px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + border: 1px solid #FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.fzone .follow .fbtn_no:hover{ + background-color: #FFFAE6; + color: #FFC832; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.fzone .follow .fbtn_no:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.fzone .follow .fbtn_un{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 0px; + margin-top: 12px; + margin-bottom: 12px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#4e4428; + border: none; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.fzone .follow .fbtn_un:hover{ + background-color: #FFFAE6; + color: #FFC832; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.fzone .follow .fbtn_un:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.fzone .time{ + margin-top: auto; + margin-bottom: 0px; + margin-left: 0px; + margin-right: auto; +} +.fzone .time p{ + margin-top: 0px; + margin-bottom: 0px; + text-align: left; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.fzone .time a{ + margin-top: 0px; + margin-bottom: 0px; + text-align: left; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.fzone .follow_yes{ + margin-top: auto; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + background-color: #FFFAE6; + border-radius: 10px; + padding: 12px; +} +.fzone .follow_yes p{ + margin-top: 0px; + margin-bottom: 0px; + text-align: left; + font-size: 12px; + color:#252525; + font-family: 'BIZ UDPGothic', sans-serif; +} + + + +.ueuse{ + animation: slideInY 0.5s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards; + margin: 12px; + border-radius: 10px; + padding-left: 24px; + padding-right: 24px; + padding-top: 16px; + padding-bottom: 16px; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; +} +@keyframes slideInY { + 0% { + transform: translateY(24px); + opacity: 0; + } + 100% { + transform: translateY(0px); + } + 40%,100% { + opacity: 1; + } +} +.ueuse .flebox{ + display: flex; +} +.ueuse .flebox img{ + object-fit: cover; + margin-left: -12px; + + text-align: center; + width: 48px; + height:48px; + border-radius: 50%; +} +.ueuse .flebox a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 18px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + + + + +.ueuse .flebox .idbox{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + border-radius: 10px; + background-color: #FFF; + border: 1px solid #EEE; +} +.ueuse .flebox .idbox a{ + margin-top: 6px; + margin-bottom: 6px; + margin-left: 8px; + margin-right: 8px; + text-align: center; + font-size: 12px; + color:#999; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.ueuse p{ + line-height:20px; + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 60px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + +.ueuse h1{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 60px; + font-size: 48px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse h2{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 60px; + font-size: 32px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse h3{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 60px; + font-size: 24px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse center{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + font-size: 16px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse p img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 32px; + vertical-align: middle; +} + +.ueuse h1 img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 64px; + vertical-align: middle; +} + +.ueuse h2 img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 48px; + vertical-align: middle; +} + +.ueuse h3 img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 48px; + vertical-align: middle; +} + +.ueuse img{ + margin-left: 60px; + margin-top: auto; + margin-bottom: auto; + margin-right: 4px; + height: 32px; + vertical-align: middle; +} + +.ueuse .flebox .time{ + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + margin-right: 12px; + text-align: right; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.ueuse .photo1 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: 350px; + border: 1px solid #EEE; +} + +.ueuse .photo2{ + display: flex; +} + +.ueuse .photo2 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 47%; + height: 350px; + border: 1px solid #EEE; +} + +.ueuse .video1 video{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: 350px; + border: 1px solid #EEE; +} + +.ueuse .abi{ + margin-left:auto; + margin-right: auto; + margin-top: 12px; + margin-bottom: 12px; + border-radius: 10px; + padding-left: 12px; + padding-right: 12px; + padding-top: 16px; + padding-bottom: 16px; + background-color: #FFFFFF; + border: 1px solid #EEE; + width: auto; +} + + +.ueuse .abi p{ + line-height:20px; + overflow-wrap: break-word; + margin-top: 12px; + margin-bottom: 12px; + margin-left: auto; + font-size: 14px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse .abi .back{ + background-color: #FFFAE6; + padding: 12px; + border-radius: 7px; + border: 1px solid #EEE; +} + +.ueuse .abi .back h1{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse .abi h3{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + font-size: 12px; + color:#999; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse .favbox{ + display: flex; + margin-left: 0px; + width: 100%; +} +.ueuse .favbox .favbtn{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: all 250ms ease-out; +} + +.ueuse .favbox .favbtn_after{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: all 250ms ease-out +} + + +.ueuse .favbox .tuduki{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 5px; + padding-bottom: 5px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + +.ueuse .favbox .tuduki:hover{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 5px; + padding-bottom: 5px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + +.ueuse .favbox .delbtn{ + cursor: pointer; + border: none; + display: block; + width:60px; + padding: 8px auto; + + margin-left: 6px; + margin-right: 0px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + + + background-color: #F5F5F5; + + border-radius: 50px; + color:#FF4848; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + +.ueuse .favbox .delbtn:hover{ + cursor: pointer; + border: none; + display: block; + width:60px; + padding: 8px auto; + + margin-left: 6px; + margin-right: 0px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + + + background-color: #FF4848; + + border-radius: 50px; + color: #f5f5f5;; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + + + +.ueuse .favbox .addabi{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: auto; + margin-right: 6px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + +.ueuse .favbox .addabi:hover{ + cursor: pointer; + border: none; + display: block; + width:auto; + + margin-left: auto; + margin-right: 6px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color: #FFFAE6;; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + + +.ueuse .favbox img{ + margin-left: 0px; + width: 24px; +} + +.ueuse hr{ + height: 0; + margin-top: 12px; + margin-bottom: 12px; + padding: 0; + border: 0; + border-top: 1px solid #999; +} + + + +.tokonone p{ + text-align: center; + margin-top: 64px; + margin-bottom: 64px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.sendbox{ + margin: 12px; + border-radius: 10px; + padding-left: 24px; + padding-right: 24px; + padding-top: 24px; + padding-bottom: 24px; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; +} + +.sendbox .fx{ + display: flex; + width: 100%; +} + +.sendbox .fx img{ + object-fit: cover; + margin-left: -12px; + text-align: center; + width: 58px; + height:58px; + border-radius: 50%; +} + +.sendbox p{ + line-height:20px; + text-align: left; + margin-top: 12px; + margin-bottom: 12px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.sendbox textarea{ + background-color: #F5F5F5; + text-align: left; + margin-left: auto; + margin-right: auto; + width:100%; + height:90px; + border-radius: 10px; + outline: none; + border: none; + resize: none; + font-size: 18px; +} + +.sendbox .fxbox{ + display: flex; +} + +.sendbox label > input { + display:none; /* アップロードボタンのスタイルを無効にする */ +} + +.sendbox label{ + cursor: pointer; + border: none; + display: block; + width:6%; + padding: 8px auto; + margin-left: 6px; + margin-right: 6px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.sendbox label:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:7%; +} +.sendbox label:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:5%; +} +.sendbox label img{ + vertical-align:bottom; + width: 24px; +} +.sendbox .fxbox p{ + line-height:20px; + text-align: left; + margin-top: auto; + margin-bottom: auto; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + + +.ueusebtn{ + cursor: pointer; + border: none; + display: block; + width:20%; + padding: 8px auto; + margin-left: auto; + margin-right: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.ueusebtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:21%; +} +.ueusebtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:19%; +} +/*--------------------------*/ + +.ueuse2{ + margin: 12px; + border-radius: 10px; + padding-left: 24px; + padding-right: 24px; + padding-top: 16px; + padding-bottom: 16px; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; +} +.ueuse2 .flebox{ + display: flex; +} +.ueuse2 .flebox img{ + object-fit: cover; + margin-left: -12px; + + text-align: center; + width: 64px; + height:64px; + border-radius: 50%; +} +.ueuse2 .flebox a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 26px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse2 .flebox .idbox{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + border-radius: 10px; + background-color: #FFF; + border: 1px solid #EEE; +} +.ueuse2 .flebox .idbox a{ + margin-top: 6px; + margin-bottom: 6px; + margin-left: 8px; + margin-right: 8px; + text-align: center; + font-size: 16px; + color:#999; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.ueuse2 p{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 80px; + font-size: 22px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse2 a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + font-size: 16px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse2 p img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 32px; + vertical-align: middle; +} + +.ueuse2 .flebox .time{ + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + margin-right: 12px; + text-align: right; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.ueuse2 .photo1 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: 25dvh; + border: 1px solid #EEE; +} + +.ueuse2 .photo2{ + display: flex; +} + +.ueuse2 .photo2 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 47%; + height: 350px; + border: 1px solid #EEE; +} + +.ueuse2 .video1 video{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: 350px; + border: 1px solid #EEE; +} + +.formarea{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + text-align: left; +} + +.formarea p{ + overflow-wrap: break-word; + margin-top: 24px; + margin-bottom: 24px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.formarea .iconimg{ + margin-left: auto; + margin-right: auto; + text-align: center; +} + +.formarea .iconimg img{ + object-fit: cover; + margin-top: -64px; + margin-left: auto; + margin-right: auto; + text-align: center; + width: 100px; + height:100px; + border-radius: 50%; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); +} +.formarea .hed img{ + object-fit: cover; + object-fit: cover; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + width: 100%; + height:25vh; + border-radius: 10px; +} + +.formarea .sub{ + display: flex; + margin: 48px; + margin-left: auto; + margin-right: auto; +} +label>input { + display:none; /* アップロードボタンのスタイルを無効にする */ +} +.imgbtn{ + cursor: pointer; + border: none; + display: block; + width:25%; + padding: 8px auto; + margin-left: auto; + margin-right: auto; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.imgbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:19%; +} +.imgebtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:21%; +} + +.imgbtn2{ + cursor: pointer; + border: none; + display: block; + width:20%; + padding: 8px auto; + margin-top: -64px; + margin-left: 12px; + margin-right: auto; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.imgbtn2:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:19%; +} +.imgebtn2:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:21%; +} + +.modal { + display: none; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: 9999; +} + +.show { + display: block; +} +.modal-content { + background-color: #fff; + padding: 16px; + border-radius: 10px; + width: 60%; + max-width: 400px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); +} + +.modal-content textarea{ + background-color: #F5F5F5; + text-align: left; + margin-left: auto; + margin-right: auto; + width:100%; + height:90px; + border-radius: 10px; + outline: none; + border: none; + resize: none; + font-size: 18px; +} +.modal-content p{ + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.modal-content h1{ + font-size: 24px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.modal-content .btn_area{ + display: flex; + width: 70%; + margin-left: auto; + margin-right: 0px; +} + +.modal-content .fbtn{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 6px; + margin-bottom: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.modal-content .fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.modal-content .fbtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.modal-content .fbtn_no{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 0px; + margin-bottom: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + border: 1px solid #FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.modal-content .fbtn_no:hover{ + background-color: #FFFAE6; + color: #FFC832; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.modal-content .fbtn_no:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.topbox { + position: fixed; + + top: 0; + left: 0; + width: 100%; + height: 44px; + padding-top: 0.0%; + padding-bottom: 0.2%; + padding-left: 23%; + + background-color: #FFC832; + box-shadow: 0px 0px 30px rgba(0,0,0,0.1); + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 2em; + text-align: left; + color: #fff; + +} + +.topbox .logo img{ + margin-left: 0px; + margin-right: auto; + margin-top: 2px; + width: 120px; +} + +.terms{ + overflow-wrap: break-word; + margin-left: auto; + margin-right: auto; + width: 77%; + margin-top: 64px; + margin-bottom: 64px; + background-color: #f7f7f7; +} + +.terms h1{ + line-height:32px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 48px; + text-align: left; + color: #252525; +} + +.terms h2{ + line-height:32px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 48px; + text-align: left; + color: #252525; +} + +.terms h3{ + line-height:28px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + text-align: left; + color: #252525; +} + +.terms h4{ + line-height:24px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 24px; + text-align: left; + color: #252525; +} + +.terms p{ + margin-top: 2px; + margin-bottom: 2px; + line-height:24px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #252525; +} + +.terms img{ + background-color: #FFF; + background: linear-gradient(45deg, #CCC 25%, transparent 25%, transparent 75%, #CCC 75%), + linear-gradient(45deg, #CCC 25%, transparent 25%, transparent 75%, #CCC 75%); + background-size: 20px 20px; + background-position: 0 0, 10px 10px; + object-fit: cover; + width: auto; + height: 40dvh; + margin: 12px; + border-radius: 15px; +} +.terms .code{ + background-color: #252525; + border-radius: 15px; + padding: 12px; +} + +.terms .code p{ + line-height:24px; + margin-right: 12px; + margin-left: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #FFFFFF; +} + + +.terms .p2c{ + margin-top: 0px; + margin-bottom: 10px; + text-align: left; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.terms .p3{ + margin-top: 24px; + text-align: left; + word-wrap: break-word; + line-height: 24px; + color: #252525; + font-size: 22px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.terms ul{ + margin-top: 6px; + margin-bottom: 6px; + font-family: 'BIZ UDPGothic', sans-serif; + line-height: 20px; +} + +.terms .err404 h1{ + margin-top: 256px; + line-height:64px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 64px; + text-align: center; + color: #252525; +} + +.terms .err404 p{ + margin-top: 2px; + margin-bottom: 2px; + line-height:32px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: center; + color: #252525; +} + + +.rightbox{ + position: relative; + border-radius: 17px; + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + width: 24%; + background-color: #fff; + padding: 12px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; +} + +.rightbox h1{ + + margin-top: 12px; + margin-bottom: 0px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 28px; + text-align: left; + color: #252525; +} + +.rightbox .noticearea{ + width: auto; + height: 52dvh; + overflow: scroll; + border-radius: 10px; +} + +.rightbox .noticebox{ + overflow-wrap: break-word; + border-radius: 10px; + margin-top: 12px; + margin-bottom: 12px; + margin-left: auto; + margin-right: auto; + width: auto; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; + padding: 12px; +} + +.rightbox .noticebox h4{ + margin-top: 2px; + margin-bottom: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 20px; + text-align: left; + color: #252525; +} + +.rightbox .noticebox p{ + line-height: 20px; + margin-top: 2px; + margin-bottom: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #252525; +} + +.rightbox .noticebox img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 32px; + vertical-align: middle; +} + +.rightbox .noticebox .makeup p{ + line-height: 20px; + margin-top: 2px; + margin-bottom: 2px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #252525; +} + +.rightbox .noticebox .makeup a{ + margin-top: 24px; + margin-bottom: auto; + margin-left: 0px; + font-size: 16px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.rightbox .noticebox .time{ + margin-top: 4px; + margin-bottom: auto; + margin-left: 0px; + margin-right: auto; +} +.rightbox .noticebox .time p{ + margin-top: 0px; + margin-bottom: 0px; + text-align: left; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + + + +.rightbox .btmbox{ + position: absolute; + bottom: 12px; /*下に固定*/ + height: 31dvh; + width: 90%; +} + +.rightbox .btmbox h2{ + margin-top: 12px; + margin-bottom: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 20px; + text-align: left; + color: #252525; +} + +.rightbox .btmbox h3{ + margin-top: 2px; + margin-bottom: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 20px; + text-align: left; + color: #252525; +} + +.rightbox .btmbox p{ + + line-height: 20px; + margin-top: 2px; + margin-bottom: 2px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 14px; + text-align: left; + color: #252525; +} + +.rightbox .btmbox a{ + margin-top: 24px; + margin-bottom: auto; + margin-left: 0px; + margin-right: 6px; + font-size: 14px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + + +.loading { + text-align: center; + font-size: 48px; /* 絵文字のサイズ */ + animation: rotate 0.5s infinite linear; /* アニメーションを適用 */ +} + +@keyframes rotate { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +.emojibox{ + margin-left: 12px; + margin-right: 12px; + padding: 12px; + width: auto; +} + +.emojizone{ + margin-left: 0px; + margin-right: 0px; + margin-top: 12px; +} + +.emjtex{ + background-color: #F5F5F5; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + padding: 12px; + border-radius: 10px; + border: 1px solid #EEE; +} + +.emjtex .fx{ + display: flex; +} + +.emjtex img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 64px; +} + +.emjtex h3{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 24px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.emjtex p{ + overflow-wrap: break-word; + margin-top: 12px; + margin-bottom: auto; + margin-left: 12px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.rp p{ + overflow-wrap: break-word; + margin-top: 0px; + margin-bottom: 6px; + margin-left: 12px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + + +.notification{ + animation: slideInY 0.5s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards; + margin: 12px; + border-radius: 10px; + padding-left: 24px; + padding-right: 24px; + padding-top: 16px; + padding-bottom: 16px; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; +} +@keyframes slideInY { + 0% { + transform: translateY(24px); + opacity: 0; + } + 100% { + transform: translateY(0px); + } + 40%,100% { + opacity: 1; + } +} +.notification .flebox{ + display: flex; +} + +.notification .flebox a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 18px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.notification .flebox .idbox{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + border-radius: 10px; + background-color: #FFF; + border: 1px solid #EEE; +} +.notification .flebox .idbox a{ + margin-top: 6px; + margin-bottom: 6px; + margin-left: 8px; + margin-right: 8px; + text-align: center; + font-size: 12px; + color:#999; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.notification p{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.notification h3{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: 6px; + margin-left: 12px; + font-size: 24px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + +.notification .flebox .time{ + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + margin-right: 12px; + text-align: right; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.notification a{ + overflow-wrap: break-word; + margin-top: 24px; + margin-bottom: auto; + margin-left: 12px; + font-size: 16px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +hr{ + height: 0; + margin-top: 12px; + margin-bottom: 12px; + padding: 0; + border: 0; + border-top: 1px solid #FFC832; +} + + +.search_btn{ + margin-top: 24px; + cursor: pointer; + border: none; + display: block; + width:20%; + padding: 8px auto; + margin-left: auto; + margin-right: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.search_btn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:21%; +} +.search_btn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:19%; +} + +.botbox{ + display: none; +} + +/*------------------------------------------------------------------------------------------------------------*/ +/*--------------------------------------------------スマホ向け--------------------------------------------------*/ +/*--------------------------------------------------ここから--------------------------------------------------*/ +/*------------------------------------------------------------------------------------------------------------*/ + +@media screen and (max-width:1010px) { + body{ + width: 100%; + display: block; + border: none; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + padding-top: 0px; + } + + .userleftbox{ + display: none; + } + + .userheader .icon{ + margin-left: 24px; + display: block; + width: auto; + } + + main{ + height: 88dvh; + overflow: auto; + border-radius: 0px; + margin-top: 0px; + margin-left: 0px; + margin-right: 0px; + width: auto; + background-color: #fff; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: none; + border-bottom: 1px solid #FFC832; + } + + main h1{ + color:#252525; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; + } + + .sendbox .fx img{ + object-fit: cover; + margin-left: -12px; + text-align: center; + width: 58px; + height:58px; + border-radius: 50%; + } + + .sendbox p{ + line-height:20px; + text-align: left; + margin-top: 12px; + margin-bottom: 12px; + font-size: 14px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + } + + .sendbox .fxbox{ + display: flex; + } + + .sendbox label > input { + display:none; /* アップロードボタンのスタイルを無効にする */ + } + + .sendbox label{ + width:10%; + padding: 8px auto; + margin-left: 6px; + margin-right: 6px; + padding-top: 6px; + padding-bottom: 6px; + } + .sendbox label:hover{ + width:11%; + } + .sendbox label:active{ + width:9%; + } + .sendbox label img{ + vertical-align:bottom; + width: 24px; + } + .sendbox .fxbox p{ + line-height:20px; + text-align: left; + margin-top: auto; + margin-bottom: auto; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + } + + .ueusebtn{ + width:30%; + } + .ueusebtn:hover{ + width:31%; + } + .ueusebtn:active{ + width:29%; + } + + .rightbox{ + display: none; + } + + .botbox{ + display: block; + } + + .botbox .lbtnzone{ + display: flex; + width: 90%; + margin-left: auto; + margin-right: auto; + } + + + .btmbutton{ + cursor: pointer; + border: none; + display: block; + width:28%; + margin: 16px; + padding: 8px auto; + height: auto; + margin-left: 12px; + margin-right: 12px; + + padding-top: 14px; + padding-bottom: 14px; + background-color: #FFFFFF; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; + } + .btmbutton:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:29%; + } + .btmbutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:27%; + } + + .ueuse .favbox .tuduki{ + + display: block; + width:26%; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 8px; + padding-bottom: 8px; + padding-left: 6px; + padding-right: 6px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 12px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + } + + .ueuse .favbox .tuduki:hover{ + background-color: #FFC832; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 8px; + padding-bottom: 8px; + padding-left: 6px; + padding-right: 6px; + + width:28%; + border-radius: 50px; + color:#FFFAE6; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + font-size: 12px; + text-decoration:none; + text-align: center; + } + + .ueuse .favbox .delbtn{ + cursor: pointer; + border: none; + display: block; + width:60px; + padding: 8px auto; + + margin-left: 6px; + margin-right: 0px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + + + background-color: #F5F5F5; + + border-radius: 50px; + color:#FF4848; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + + .ueuse .favbox .delbtn:hover{ + cursor: pointer; + border: none; + display: block; + width:60px; + padding: 8px auto; + + margin-left: 6px; + margin-right: 0px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + + + background-color: #FF4848; + + border-radius: 50px; + color: #f5f5f5;; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + + + + .ueuse .favbox .addabi{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: auto; + margin-right: 6px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + + .ueuse .favbox .addabi:hover{ + cursor: pointer; + border: none; + display: block; + width:auto; + + margin-left: auto; + margin-right: 6px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color: #FFFAE6;; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + + + .ueuse .favbox img{ + margin-left: 0px; + width: 24px; + } + + .leftbox{ + display: block; + border-radius: 17px; + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + margin-bottom: 12px; + background-color: #FFFFFF; + width: 18%; + height: 100%; + margin-left: 0px; + padding: 32px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; + } + + .leftbox h1{ + font-family: 'Zen Maru Gothic', sans-serif; + margin-left: 20px; + color:#fff; + font-size: 32px; + } + .leftbox .logo{ + display: flex; + } + + .leftbox .logo img{ + + margin-left: auto; + margin-right: auto; + margin-top: 16px; + width: 72%; + + + } + .leftbox .logo p{ + color:#FFC832; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; + } + + .imgbtn{ + width:40%; + } + .imgbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:35%; + } + .imgebtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; + } + + .imgbtn2{ + cursor: pointer; + border: none; + display: block; + width:20%; + padding: 8px auto; + margin-top: -64px; + margin-left: 12px; + margin-right: auto; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + .imgbtn2:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:19%; + } + .imgebtn2:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:21%; + } + + .topbox { + position: absolute; + + top: 0; + left: 0; + width: 90%; + margin-left: 0px; + margin-right: 0px; + height: 44px; + padding-top: 0.0%; + padding-bottom: 0.2%; + padding-left: 10%; + } + + .topbox .logo img{ + margin-left: 0px; + margin-right: auto; + margin-top: 2px; + width: 120px; + } + + .terms{ + overflow-wrap: break-word; + margin-left: auto; + margin-right: auto; + width: 90%; + margin-top: 64px; + margin-bottom: 64px; + background-color: #f7f7f7; + } + + .terms h1{ + line-height:52px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 48px; + text-align: left; + color: #252525; + } + + .terms h2{ + line-height:52px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 48px; + text-align: left; + color: #252525; + } + + .terms h3{ + line-height:36px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + text-align: left; + color: #252525; + } + + .terms h4{ + line-height:24px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 24px; + text-align: left; + color: #252525; + } + + .terms p{ + margin-top: 2px; + margin-bottom: 2px; + line-height:24px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #252525; + } + + .terms img{ + + object-fit: cover; + width: auto; + height: auto; + margin-top: 12px; + margin-bottom: 12px; + margin-left: auto; + margin-right: auto; + border-radius: 15px; + } + + .terms .code{ + background-color: #252525; + border-radius: 15px; + padding: 12px; + } + + .terms .code p{ + line-height:24px; + margin-right: 12px; + margin-left: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #FFFFFF; + } + + + .terms .p2c{ + margin-top: 0px; + margin-bottom: 10px; + text-align: left; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + } + + .terms .p3{ + margin-top: 24px; + text-align: left; + word-wrap: break-word; + line-height: 24px; + color: #252525; + font-size: 22px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + } + + .terms .err404 h1{ + margin-top: 128px; + line-height:64px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 64px; + text-align: center; + color: #252525; + } + + + .ueuse .photo1 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: auto; + border: 1px solid #EEE; + } + + .ueuse .photo2{ + display: flex; + } + + .ueuse .photo2 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 47%; + height: auto; + border: 1px solid #EEE; + } + + .ueuse .video1 video{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: auto; + border: 1px solid #EEE; + } + +} + +/*------------------------------------------------------------------------------------------------------------*/ +/*--------------------------------------------------ダークモード--------------------------------------------------*/ +/*--------------------------------------------------ここから--------------------------------------------------*/ +/*------------------------------------------------------------------------------------------------------------*/ + +@media (prefers-color-scheme: dark) { + + body{ + background-color: #0c0c0c; + } + .errmsg{ + background-color: #3a3333; + color:#ff4848; + border: 1px solid #FF4848; + } + .rolebox{ + background-color: #0c0c0c; + border: 1px solid #FFC832; + } + + .userleftbox{ + background-color: #181616; + border: none; + } + + .leftbutton{ + background-color: #181616; + color:#FFFAE6; + } + .leftbutton:hover{ + background-color: #FFFAE6; + color: #0c0c0c; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:75%; + } + .leftbutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:65%; + } + + main{ + background-color: #0c0c0c; + border: none; + } + + main h1{ + color:#FFFAE6; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; + } + + + .ueuse{ + background-color: #181616; + border: none; + } + .ueuse .flebox a{ + color:#FFFAE6; + } + + .ueuse .flebox .idbox{ + background-color: #302c2c; + border: none; + } + .ueuse .flebox .idbox a{ + color:#CCC; + } + + .ueuse p{ + color:#FFF; + } + + + .ueuse h1{ + color:#FFF; + } + + .ueuse h2{ + color:#FFF; + } + + .ueuse h3{ + color:#FFF; + } + + .ueuse center{ + color:#FFF; + } + + .ueuse a{ + color:#FFC832; + } + + .ueuse .flebox .time{ + color:#CCC; + } + + .ueuse .photo1 img{ + border: none; + } + + .ueuse .photo2{ + display: flex; + } + + .ueuse .photo2 img{ + border: none; + } + + .ueuse .video1 video{ + border: none; + } + + .ueuse .abi{ + background-color: #0c0c0c; + border: none; + } + + .ueuse .abi p{ + color:#FFFAE6; + } + + .ueuse .abi .back{ + background-color: #FFC832; + border: none; + } + + .ueuse .abi .back h1{ + color:#252525; + } + .ueuse .abi h3{ + color:#CCC; + } + .ueuse .favbox .favbtn{ + background-color: #0c0c0c; + color:#FFC832; + } + .ueuse .favbox .favbtn_after{ + background-color: #FFC832; + color:#FFFAE6; + } + .ueuse .favbox .tuduki{ + background-color: #0c0c0c; + color:#FFC832; + } + .ueuse .favbox .tuduki:hover{ + background-color: #FFC832; + color:#FFFAE6; + } + .ueuse .favbox .delbtn{ + background-color: #0c0c0c; + color:#FF4848; + } + .ueuse .favbox .delbtn:hover{ + background-color: #FF4848; + color: #f5f5f5;; + } + .ueuse .favbox .addabi{ + background-color: #0c0c0c; + color:#FFC832; + } + .ueuse .favbox .addabi:hover{ + background-color: #FFC832; + color: #FFFAE6;; + } + .ueuse hr{ + border-top: 1px solid #CCC; + } + + .userheader h2{ + color:#FFFAE6; + } + + .userheader p{ + color: #CCC; + } + + .userheader .profile p{ + color:#FFFAE6; + } + + .userheader .rolebox{ + background-color: #181616; + border: 1px solid #FFC832; + } + + .fzone .follow .fbtn{ + background-color: #FFC832; + color:#FFFAE6; + } + .fzone .follow .fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + } + + .fzone .follow .fbtn_no{ + background-color: #181616; + color:#FFC832; + border: 1px solid #FFC832; + } + .fzone .follow .fbtn_no:hover{ + background-color: #181616; + color: #FFC832; + } + .fzone .time p{ + color:#CCC; + } + .fzone .time a{ + color:#CCC; + } + .fzone .follow_yes{ + background-color: #181616; + } + .fzone .follow_yes p{ + color:#FFFAE6; + } + + + .rightbox{ + background-color: #0c0c0c; + border:none; + } + + .rightbox h1{ + color: #CCC; + } + + .rightbox .noticebox{ + background-color: #181616; + border: none; + } + + .rightbox .noticebox h4{ + color: #FFF; + } + + .rightbox .noticebox p{ + color: #FFF; + } + + .rightbox .noticebox .makeup p{ + color:#FFFAE6;; + } + + .rightbox .noticebox .makeup a{ + color:#FFC832; + } + .rightbox .noticebox .time p{ + color:#CCC; + } + .rightbox .btmbox h2{ + color: #CCC; + } + + .rightbox .btmbox h3{ + color: #CCC; + } + + .rightbox .btmbox p{ + color: #FFF; + } + + .rightbox .btmbox a{ + color:#FFC832; + } + + .sendbox{ + background-color: #181616; + border:none; + } + + .sendbox p{ + color: #FFF;; + } + + .sendbox textarea{ + background-color: #181616; + color:#CCC; + } + .sendbox .fxbox p{ + color:#FFFAE6; + } + + + .emjtex{ + background-color: #181616; + border: none; + } + + .emjtex h3{ + color:#FFF; + } + + .emjtex p{ + color:#CCC; + } + + .formarea{ + background-color: #181616; + } + + .formarea p{ + color:#CCC; + } + + + .modal-content { + background-color: #181616; + } + + .modal-content textarea{ + background-color: #181616; + color:#CCC; + } + .modal-content p{ + color:#CCC; + } + + .modal-content h1{ + color:#FFF; + } + + .modal-content .fbtn_no{ + background-color: #181616; + color:#FFC832; + border: 1px solid #FFC832; + } + .modal-content .fbtn_no:hover{ + background-color: #181616; + color: #FFC832; + } + + .inbox { + background: #0c0c0c; + color: #FFF; + border: none; + } + + .inbox::placeholder { + color: #999; + } + + .inbox:hover { + outline: none; + border: 1px solid #FFC832; + } + + .inbox:focus { + outline: none; + border: 1px solid #FFC832; + border-bottom: 3px solid #FFC832; + } + + .btmbutton{ + background-color: #FFC832; + color:#FFFAE6; + border: none; + } + .btmbutton:hover{ + background-color: #FFC832; + color: #FFFAE6; + } + + + .terms{ + background-color: #0c0c0c; + } + + .terms h1{ + color: #CCC; + } + + .terms h2{ + color: #FFF; + } + + .terms h3{ + color: #FFF; + } + + .terms h4{ + color: #FFF; + } + + .terms p{ + color: #FFF; + } + + .terms .code{ + background-color: #CCC; + } + + .terms .code p{ + color: #252525; + } + + .terms ul{ + color: #FFF; + } + + .terms .p2c{ + color: #CCC; + } + + .terms .p3{ + color: #FFF; + } + + .terms .err404 h1{ + color: #CCC; + } + + .terms .err404 p{ + color: #FFF; + } + + .notification{ + background-color: #181616; + border: none; + } + + .notification .flebox a{ + color:#CCC5; + } + + .notification p{ + color:#FFF; + } + + .notification h3{ + color:#CCC; + } + + + .notification .flebox .time{ + color:#CCC; + } + + .notification a{ + color:#FFC832; + } + .tokonone p{ + color:#CCC; + } +} \ No newline at end of file diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..cef3fbe --- /dev/null +++ b/css/style.css @@ -0,0 +1,855 @@ +@import url('https://fonts.googleapis.com/css2?family=BIZ+UDPGothic:wght@400;700&family=Josefin+Sans:ital,wght@1,700&family=Kosugi+Maru&family=Zen+Maru+Gothic:wght@500&display=swap'); + +body{ + display: flex; + border: none; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: 0px; + background-color: #FFFFFF; + /* 画像を常に天地左右の中央に配置 */ + background-position: center center; + + /* 画像をタイル状に繰り返し表示しない */ + background-repeat: no-repeat; + + /* コンテンツの高さが画像の高さより大きい時、動かないように固定 */ + background-attachment: fixed; + + /* 表示するコンテナの大きさに基づいて、背景画像を調整 */ + background-size: cover; +} + +.leftbox{ + margin-top: 0px; + margin-bottom: 0px; + background-color: #FFC832; + width: 35%; + height: 100%; + margin-left: 0px; + padding: 32px; +} + +.leftbox h1{ + margin-left: 20px; + color:#fff; + font-size: 2em; +} +.leftbox .logo{ + display: flex; +} + +.leftbox .logo img{ + + margin-left: 16px; + margin-top: 16px; + width: 200px; + +} +.leftbox .logo p{ + color:#fff; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; +} + +.leftbox2{ + margin-top: 0px; + margin-bottom: 0px; + background-color: #FFC832; + width: 35%; + height: 100vh; + margin-left: 0px; + padding: 32px; +} + +.leftbox2 h1{ + margin-left: 20px; + color:#fff; + font-size: 2em; +} +.leftbox2 .logo{ + display: flex; +} + +.leftbox2 .logo img{ + + margin-left: 16px; + margin-top: 16px; + width: 200px; + +} +.leftbox2 .logo p{ + color:#fff; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; +} + +.textbox{ + padding: 32px; + width: auto; + margin-left: 24px; + margin-right: 24px; + margin-top: 64px; + margin-bottom: 100px; + border-radius: 25px; + background-color: #fff; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); +} + +.textbox h1{ + word-wrap: break-word; + margin: 0px; + color: #FFC832; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; +} + +.textbox h2{ + word-wrap: break-word; + margin: 0px; + color: #252525; + text-align: center; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; +} + +.textbox h3{ + word-wrap: break-word; + margin: 0px; + color: #252525; + text-align: center; + font-size: 18px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; +} + +.textbox p{ + word-wrap: break-word; + line-height: 20px; + color: #252525; + font-size: 16px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .p2{ + margin-top: 0px; + margin-bottom: 10px; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .p2c{ + margin-top: 0px; + margin-bottom: 10px; + text-align: center; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .p3{ + margin-top: 24px; + text-align: center; + word-wrap: break-word; + line-height: 24px; + color: #252525; + font-size: 22px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.textbox .maillink{ + word-wrap: break-word; + line-height: 20px; + color: #4e4428; + text-decoration: none; + font-size: 16px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .cntzone{ + display: flex; + width: 100%; + padding: 0px; +} + +.textbox .cntzone .usercnt{ + margin-top: 24px; + margin-left: 12px; + margin-right: 12px; + width: 43%; + height: 5dvh; + border-radius: 15px; + background-color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + padding: 18px; +} + +.textbox .cntzone .usercnt .p1{ + display: block; + margin-top: 0px; + margin-bottom: 6px; + text-align: left; + word-wrap: break-word; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .cntzone .usercnt p{ + margin-top: 0px; + margin-bottom: 8px; + text-align: left; + word-wrap: break-word; + line-height: 24px; + color: #252525; + font-size: 20px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.btnbox{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 32px; + text-align: center; + margin-left: auto; + margin-right: auto; + +} + +label > input { + display:none; /* アップロードボタンのスタイルを無効にする */ +} + +.irobutton{ + cursor: pointer; + border: none; + display: block; + width:40%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + background-color: #FFC832; + + text-align: center; + border-radius: 50px; + color:#fff; + font-size: 22px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:45%; +} +.irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:35%; +} + +.sirobutton{ + cursor: pointer; + border: none; + display: block; + width:40%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + text-align: center; + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 22px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:45%; +} +.sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.formarea{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 64px; + text-align: left; + margin-left: auto; + margin-right: auto; +} + +.formarea .iconimg{ + margin-left: auto; + margin-right: auto; + text-align: center; +} + +.formarea .iconimg img{ + margin-left: auto; + margin-right: auto; + text-align: center; + width: 100px; + height:100px; + border-radius: 50%; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); +} + +.myarea{ + padding-top: 16px; + padding-bottom: 32px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 64px; + text-align: center; + margin-left: auto; + margin-right: auto; +} + +.myarea img{ + margin-left: auto; + margin-right: auto; + text-align: center; + width: 100px; + height:100px; + border-radius: 50%; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); +} + +.myarea p{ + margin-top: 32px; + margin-bottom: 10px; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.inbox { + width: 96%; + padding: 8px 10px; + border: none; + border-radius: 10px; + background: #fff; + font-family: 'Zen Maru Gothic', sans-serif; + color: rgb(32,32,32); + font-size: 1em; + line-height: 1.5; + white-space: nowrap; + box-shadow:0px 0px 25px rgba(0,0,0,0.05) inset; + box-shadow:0px 0px 25px rgba(0,0,0,0.07); + overflow-x: scroll; + overflow-y : scroll ; + transition: border 350ms ease-in-out; + transition: border-bottom 150ms ease-out; + border: 1px solid #f1f1f1; + } + +.inbox::placeholder { + color: #999; +} + +.inbox:hover { + outline: none; + border: 1px solid #FFC832; +} + +.inbox:focus { + outline: none; + border: 1px solid #FFC832; + border-bottom: 3px solid #FFC832; +} + + +.errmsg{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #ffebeb; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 64px; + text-align: left; + margin-left: auto; + margin-right: auto; + color:#ff4848; + font-family: 'BIZ UDPGothic', sans-serif; + word-wrap: break-word; + line-height: 20px; + border: 1px solid #FF4848; +} + +.flexbtn{ + display: flex; +} + +.flexbtn .irobutton{ + border: none; + display: block; + width:20%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + background-color: #FFC832; + + border-radius: 50px; + color:#fff; + font-size: 26px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.flexbtn.irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.flexbtn.irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.flexbtn.sirobutton{ + border: none; + display: block; + width:50%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 26px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.flexbtn.sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.flexbtn.sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} +.rolebox{ + + margin-top: 12px; + margin-bottom: 12px; + + margin-left: auto; + margin-right: auto; + + width: 120px; + padding-left: auto; + padding-right: auto; + + background-color: #fff; + border: 1px solid #FFC832; + + border-radius: 25px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + +} + +.rolebox p{ + + color:#FFC832; + margin-top: 2px; + margin-bottom: 2px; + margin-left: 10px; + margin-right: 10px; + + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + +} + + +.userleftbox{ + margin-top: 0px; + margin-bottom: 0px; + background-color: #FFC832; + width: 10%; + height: 100%; + margin-left: 0px; + padding: 32px; +} + +.userleftbox h1{ + font-family: 'Zen Maru Gothic', sans-serif; + margin-left: 20px; + color:#fff; + font-size: 32px; +} +.userleftbox .logo{ + display: flex; +} + +.userleftbox .logo img{ + + margin-left: 16px; + margin-top: 16px; + width: 72%; + +} +.userleftbox .logo p{ + color:#fff; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; +} + +.leftbutton{ + cursor: pointer; + border: none; + display: block; + width:70%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 20px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.leftbutton:hover{ + background-color: #FFFAE6; + color: #FFC832; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:75%; +} +.leftbutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:65%; +} + +main{ + border-radius: 25px; + margin-top: 24px; + margin-left: 24px; + margin-right: 24px; + width: 80%; + background-color: #fff; + padding: 24px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); +} + +main h1{ + color:#252525; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; +} + + +.btn_area{ + display: flex; + width: 100%; + margin-left: auto; + margin-right: auto; +} + +.fbtn{ + cursor: pointer; + border: none; + display: block; + width:50%; + padding: 8px auto; + + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + margin-bottom: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + text-align: center; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.fbtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +/*------------------------------------------------------------------------------------------------------------*/ +/*--------------------------------------------------スマホ向け--------------------------------------------------*/ +/*--------------------------------------------------ここから--------------------------------------------------*/ +/*------------------------------------------------------------------------------------------------------------*/ + +@media screen and (max-width:1010px) { + + body{ + backdrop-filter: blur(10px); + } + + .leftbox{ + margin-top: 0px; + margin-bottom: 0px; + background-color: transparent; + width: 100%; + height: 100%; + margin-left: 0px; + padding: 16px; + } + + .leftbox h1{ + margin-left: 20px; + color:#fff; + font-size: 2em; + } + .leftbox .logo{ + display: flex; + background-color: #FFC832; + border-radius: 15px; + } + + .leftbox .logo img{ + + margin-left: 16px; + margin-top: 16px; + width: 200px; + + } + .leftbox .logo p{ + color:#fff; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; + } + + + .textbox{ + padding: 32px; + width: auto; + margin-left: 0px; + margin-right: 0px; + margin-top: 64px; + margin-bottom: 8px; + border-radius: 25px; + background-color: #fff; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + } + + .textbox h1{ + word-wrap: break-word; + margin: 0px; + color: #FFC832; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; + } + + + .btnbox{ + padding-top: 12px; + padding-bottom: 12px; + padding-left: 12px; + padding-right: 12px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 32px; + text-align: center; + margin-left: auto; + margin-right: auto; + + } + + .irobutton{ + width:60%; + } + .irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:65%; + } + .irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:55%; + } + + .sirobutton{ + width:60%; + } + .sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:65%; + } + .sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:55%; + } + + + .btn_area{ + display: block; + width: 100%; + margin-left: auto; + margin-right: auto; + } + + .fbtn{ + cursor: pointer; + border: none; + display: block; + width:50%; + padding: 8px auto; + + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + margin-bottom: 0px; + + padding-top: 12px; + padding-bottom: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + text-align: center; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + .fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; + } + .fbtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; + } + + .leftbox2{ + margin-top: 0px; + margin-bottom: 0px; + background-color: #FFC832; + width: 100%; + height: 100vh; + margin-left: 0px; + padding: 32px; + } +} \ No newline at end of file diff --git a/db.php b/db.php new file mode 100644 index 0000000..cde25eb --- /dev/null +++ b/db.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/delete/delete.php b/delete/delete.php new file mode 100644 index 0000000..9becbcc --- /dev/null +++ b/delete/delete.php @@ -0,0 +1,27 @@ +prepare("DELETE FROM ueuse WHERE uniqid = :uniqid"); + $deleteQuery->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); + $res = $deleteQuery->execute(); + + if ($res) { + echo json_encode(['success' => true]); + exit; + } else { + echo json_encode(['success' => false, 'error' => '削除に失敗しました。']); + exit; + } + } catch(PDOException $e) { + echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); + exit; + } +} +?> diff --git a/emoji/addemoji.php b/emoji/addemoji.php new file mode 100644 index 0000000..c6ab82c --- /dev/null +++ b/emoji/addemoji.php @@ -0,0 +1,360 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if(!($res["admin"] === "yes")){ + header("Location: ../login.php"); + exit; +} + +if( !empty($pdo) ) { + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $dbh->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $userid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + $role = $userData["role"]; + + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + $rerole = $dbh->prepare("SELECT username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime FROM account WHERE userid = :userid"); + + $rerole->bindValue(':userid', $userid); + // SQL実行 + $rerole->execute(); + + $userdata = $rerole->fetch(); // ここでデータベースから取得した値を $role に代入する + + +} + + + +if( !empty($_POST['btn_submit']) ) { + $emojiname = $_POST['emojiname']; + $emojiinfo = $_POST['emojiinfo']; + + if (!empty($_FILES['image']['name'])) { + $img = $_FILES['image']; + }else{ + $error_message[] = '画像を選択してください~'; + } + + + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM emoji WHERE emojiname = :emojiname limit 1'); + + $query->execute(array(':emojiname' => $emojiname)); + + $result = $query->fetch(); + + // IDの入力チェック + if( empty($emojiname) ) { + $error_message[] = '絵文字IDを入力してください!'; + } else { + + // 文字数を確認 + if( 20 < mb_strlen($emojiname, 'UTF-8') ) { + $error_message[] = 'IDは20文字以内で入力してください。'; + } + + if($result > 0){ + $error_message[] = 'このID('.$emojiname.')は既に使用されています。他のIDを作成してください。'; //このE-mailは既に使用されています。 + } + + } + + if( empty($error_message) ) { + + // 書き込み日時を取得 + $datetime = date("Y-m-d H:i:s"); + + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO emoji (emojifile, emojitype, emojicontent, emojisize, emojiname, emojiinfo, emojidate) VALUES ( :emojifile, :emojitype, :emojicontent, :emojisize, :emojiname, :emojiinfo, :emojidate)"); + + + + $name = $img['name']; + $type = $img['type']; + $content = file_get_contents($img['tmp_name']); + $size = $img['size']; + + $stmt->bindValue(':emojifile', $name, PDO::PARAM_STR); + $stmt->bindValue(':emojitype', $type, PDO::PARAM_STR); + $stmt->bindValue(':emojicontent', $content, PDO::PARAM_STR); + $stmt->bindValue(':emojisize', $size, PDO::PARAM_INT); + + // 値をセット + $stmt->bindParam( ':emojiname', $emojiname, PDO::PARAM_STR); + $stmt->bindParam( ':emojiinfo', $emojiinfo, PDO::PARAM_STR); + + $stmt->bindParam( ':emojidate', $datetime, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch(Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if( $res ) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '登録に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + + + } + +} + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + +絵文字登録 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ + + + +

絵文字登録

+ +

絵文字登録です。

+ +
+ + +
+ + +
+

EmojiID

+ +
+ +
+

この絵文字について

+ +
+ +
+ + +
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/emoji/emojiimage.php b/emoji/emojiimage.php new file mode 100644 index 0000000..f23fc2f --- /dev/null +++ b/emoji/emojiimage.php @@ -0,0 +1,75 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false +); +$pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + +//$row['userid'] = "daichimarukn"; + +$emojiname = $_GET['emoji']; + + +$options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, +); + +if( empty($emojiname) ) { + $filePath = 'img/deficon/icon.png'; + $data = file_get_contents($filePath); + header('Content-type: image/png'); + //データを出力 + echo $data; + exit(); +}else{ + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT emojiname, emojicontent, emojitype, emojisize profile FROM emoji WHERE emojiname = :emojiname"); + + $result->bindValue(':emojiname', $emojiname); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + + + header('Content-type: ' . $row['emojitype']); + echo $row['emojicontent']; + exit(); +} +?> \ No newline at end of file diff --git a/emoji/index.php b/emoji/index.php new file mode 100644 index 0000000..5c5c360 --- /dev/null +++ b/emoji/index.php @@ -0,0 +1,197 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if (!empty($pdo)) { + $sql = "SELECT emojiname,emojiinfo,emojidate FROM emoji ORDER BY emojidate DESC"; + $message_array = $pdo->query($sql); + + while ($row = $message_array->fetch(PDO::FETCH_ASSOC)) { + + $messages[] = $row; + } +} + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + +絵文字一覧 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ +
    + +

    + +
+ + +
+
+

絵文字一覧

+
+ '; + echo '
'; + echo ''; + echo '

:'.$value["emojiname"].':

'; + echo '
'; + echo '

'.$value["emojiinfo"].'

'; + echo '
'; + } + }else{ + echo '

カスタム絵文字がありません

'; + } + ?> +
+ +
+ +
+ + + + + + + \ No newline at end of file diff --git a/errorpage/400.php b/errorpage/400.php new file mode 100644 index 0000000..eb8713f --- /dev/null +++ b/errorpage/400.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +400 Bad Request - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

400 Bad Request

+

<(_ _)>
はいっ!エラーです!!!
原因はわかりません!!!!!!!!

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/401.php b/errorpage/401.php new file mode 100644 index 0000000..badc804 --- /dev/null +++ b/errorpage/401.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +401 Unauthorized - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

401 Unauthorized

+

...(* ̄0 ̄)ノ< アクセス権が無いようです()
サービス管理者によってアクセス権の変更をされた可能性がございます。

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/403.php b/errorpage/403.php new file mode 100644 index 0000000..295bd00 --- /dev/null +++ b/errorpage/403.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +403 Forbidden - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

403 Forbidden

+

...(* ̄0 ̄)ノ< 閲覧権限が無いようです()
サービス管理者によって閲覧権限の変更をされた可能性がございます。

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/404.php b/errorpage/404.php new file mode 100644 index 0000000..b147077 --- /dev/null +++ b/errorpage/404.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +404 Not found - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

404 Not found

+

申し訳ございませんがお探しのページは見つかりませんでした!
ページの移動や削除が行われた可能性がございます。

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/500.php b/errorpage/500.php new file mode 100644 index 0000000..39a869b --- /dev/null +++ b/errorpage/500.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +500 Internal Server Error - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

500 Internal Server Error

+

\(^o^)/
サーバーオワタ☆

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/503.php b/errorpage/503.php new file mode 100644 index 0000000..1ac0fd9 --- /dev/null +++ b/errorpage/503.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +503 Service Unavailable - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

503 Service Unavailable

+

(´。_。`;)< サーバーに過負荷がかかっているようです...
時間をおいてから再度アクセスしてください!

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/serverstop.php b/errorpage/serverstop.php new file mode 100644 index 0000000..c5715ab --- /dev/null +++ b/errorpage/serverstop.php @@ -0,0 +1,89 @@ + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$sterms = explode("\n", $termsdata); +$htmltext = ''; // 初期化 + +foreach ($sterms as $terms) { + $markdowntext = $terms; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + + + +サーバー停止 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ +
+ +
+ +
+
+
+

サーバー停止中

+

(/´・ヮ・`\)
現在サーバーが管理者によって停止されています...
停止の理由は以下の通りです。

+ +
+

+ + +
+ +
+ + + + + \ No newline at end of file diff --git a/favicon/apple-touch-icon-180x180.png b/favicon/apple-touch-icon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a71703a27630696dd57cddfa4da8d2cfc90cca GIT binary patch literal 1905 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 literal 0 HcmV?d00001 diff --git a/favorite/favorite.php b/favorite/favorite.php new file mode 100644 index 0000000..f2b17fa --- /dev/null +++ b/favorite/favorite.php @@ -0,0 +1,57 @@ +prepare("SELECT favorite FROM ueuse WHERE uniqid = :uniqid"); + $stmt->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); + $stmt->execute(); + $post = $stmt->fetch(PDO::FETCH_ASSOC); + + if ($post) { + $favoriteList = explode(',', $post['favorite']); + $index = array_search($userId, $favoriteList); + + if ($index === false) { + // ユーザーIDを追加 + $favoriteList[] = $userId; + } else { + // ユーザーIDを削除 + array_splice($favoriteList, $index, 1); + } + + // 新しいいいね情報を更新 + $newFavorite = implode(',', $favoriteList); + $updateQuery = $pdo->prepare("UPDATE ueuse SET favorite = :favorite WHERE uniqid = :uniqid"); + $updateQuery->bindValue(':favorite', $newFavorite, PDO::PARAM_STR); + $updateQuery->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); + $res = $updateQuery->execute(); + + if ($res) { + echo json_encode(['success' => true, 'newFavorite' => $newFavorite]); + exit; + } else { + echo json_encode(['success' => false, 'error' => 'いいねの更新に失敗しました。']); + exit; + } + + + } else { + echo json_encode(['success' => false, 'error' => '投稿が見つかりません。']); + exit; + } + } catch(PDOException $e) { + echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); + exit; + } +} else { + echo json_encode(['success' => false, 'error' => '必要なパラメータが提供されていません。']); + exit; +} +?> diff --git a/home/index.php b/home/index.php new file mode 100644 index 0000000..793a49f --- /dev/null +++ b/home/index.php @@ -0,0 +1,612 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +//------------------------------------------- + +if( !empty($_POST['btn_submit']) ) { + + $ueuse = $_POST['ueuse']; + + // メッセージの入力チェック + if( empty($ueuse) ) { + $error_message[] = '内容を入力してください。'; + } else { + // 文字数を確認 + if( 1024 < mb_strlen($ueuse, 'UTF-8') ) { + $error_message[] = '内容は1024文字以内で入力してください。'; + } + } + + + if (empty($_FILES['upload_images']['name'])) { + $photo1 = "none"; + } else { + // アップロードされたファイル情報 + $uploadedFile = $_FILES['upload_images']; + + // アップロードされたファイルの拡張子を取得 + $extension = pathinfo($uploadedFile['name'], PATHINFO_EXTENSION); + + // 新しいファイル名を生成(uniqid + 拡張子) + $newFilename = uniqid() . '-'.$userid.'.' . $extension; + + // 保存先のパスを生成 + $uploadedPath = '../ueuseimages/' . $newFilename; + + // ファイルを移動 + $result = move_uploaded_file($uploadedFile['tmp_name'], $uploadedPath); + + if ($result) { + $photo1 = $uploadedPath; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!(1)エラーコード:' . $uploadedFile['error'].'
'.var_dump($_FILES['upload_images']); + } + } + + if (empty($_FILES['upload_images2']['name'])) { + $photo2 = "none"; + } else { + + if (empty($_FILES['upload_images']['name'])){ + $error_message[] = '画像1から画像を選択してください!!!'; + } + // アップロードされたファイル情報 + $uploadedFile2 = $_FILES['upload_images2']; + + if( 10000000 < $uploadedFile2["size"] ) { + $error_message[] = 'ファイルサイズが大きすぎます!'; + } + // アップロードされたファイルの拡張子を取得 + $extension2 = pathinfo($uploadedFile2['name'], PATHINFO_EXTENSION); + + // 新しいファイル名を生成(uniqid + 拡張子) + $newFilename2 = uniqid() . '-'.$userid.'.' . $extension2; + + // 保存先のパスを生成 + $uploadedPath2 = '../ueuseimages/' . $newFilename2; + + // ファイルを移動 + $result2 = move_uploaded_file($uploadedFile2['tmp_name'], $uploadedPath2); + + if ($result2) { + $photo2 = $uploadedPath2; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!(2)エラーコード:' . $uploadedFile2['error'].'
'.var_dump($_FILES['upload_images']); + } + } + + if (empty($_FILES['upload_videos1']['name'])) { + $video1 = "none"; + } else { + // アップロードされたファイル情報 + $uploadedFile3 = $_FILES['upload_videos1']; + + // アップロードされたファイルの拡張子を取得 + $extension3 = strtolower(pathinfo($uploadedFile3['name'], PATHINFO_EXTENSION)); // 小文字に変換 + + // サポートされている動画フォーマットの拡張子を配列で定義 + $supportedExtensions = array("mp4", "avi", "mov", "webm"); + + if (in_array($extension3, $supportedExtensions)) { + // 正しい拡張子の場合、新しいファイル名を生成 + $newFilename3 = uniqid() . '-'.$userid.'.' . $extension3; + // 保存先のパスを生成 + $uploadedPath3 = '../ueusevideos/' . $newFilename3; + + // ファイルを移動 + $result3 = move_uploaded_file($uploadedFile3['tmp_name'], $uploadedPath3); + + if ($result3) { + $video1 = $uploadedPath3; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!エラーコード:' . $uploadedFile3['error']; + } + } else { + $error_message[] = '対応していないファイル形式です!'; + } + + + } + + if( empty($error_message) ) { + + // 書き込み日時を取得 + $datetime = date("Y-m-d H:i:s"); + $uniqid = createUniqId(); + $abi = "none"; + + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, ueuse, photo1, photo2, video1, datetime, abi) VALUES (:username, :account, :uniqid, :ueuse, :photo1, :photo2, :video1, :datetime, :abi)"); + + $stmt->bindParam(':username', $username, PDO::PARAM_STR); + $stmt->bindParam(':account', $userid, PDO::PARAM_STR); + $stmt->bindParam(':uniqid', $uniqid, PDO::PARAM_STR); + $stmt->bindParam(':ueuse', $ueuse, PDO::PARAM_STR); + + $stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR); + $stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR); + $stmt->bindParam(':video1', $video1, PDO::PARAM_STR); + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + $stmt->bindParam(':abi', $abi, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch(Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if( $res ) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = $e->getMessage(); + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + + + + +ホーム - <?php echo file_get_contents($servernamefile);?> + + + + + + + +
+ + +
    + +

    + +
+ +
+
+ +

画像のEXIF情報(位置情報など)は削除されません。
情報漏洩に気をつけてくださいね…

+
+ + + + + +
+
+
+ + +
+
+ + +
+
+ + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/home/tlimage.php b/home/tlimage.php new file mode 100644 index 0000000..2e4998b --- /dev/null +++ b/home/tlimage.php @@ -0,0 +1,78 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false +); +$pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + +//$row['userid'] = "daichimarukn"; + +$userid = $_GET['account']; + + +$options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, +); + +if( empty($userid) ) { + $filePath = 'img/deficon/icon.png'; + $data = file_get_contents($filePath); + header('Content-type: image/png'); + //データを出力 + echo $data; + exit(); +}else{ + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT iconname, iconcontent, icontype, iconsize profile FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + + + header('Content-type: ' . $row['icontype']); + echo $row['iconcontent']; + exit(); +} \ No newline at end of file diff --git a/image.php b/image.php new file mode 100644 index 0000000..e40c66d --- /dev/null +++ b/image.php @@ -0,0 +1,77 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false +); +$pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + +//$row['userid'] = "daichimarukn"; + +$userid = $_SESSION['userid']; + + +$options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, +); + +if( empty($userid) ) { + $filePath = 'img/deficon/icon.png'; + $data = file_get_contents($filePath); + header('Content-type: image/png'); + //データを出力 + echo $data; + exit(); +}else{ + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT iconname, iconcontent, icontype, iconsize profile FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + + + header('Content-type: ' . $row['icontype']); + echo $row['iconcontent']; + exit(); +} \ No newline at end of file diff --git a/img/defhead/head.png b/img/defhead/head.png new file mode 100644 index 0000000000000000000000000000000000000000..2f65be74729c98006de1ace8ff16019901548092 GIT binary patch literal 8502 zcmeI0KTASk6vm%>H8oQMX_5#V9o<^5-0ab8-@dOlmq0?5Zv*ap%LNM2-ot_&C569#Y6 zuGcVMo&Iu?90rX5SiBzXZVxy=97nwgP*~dVzD6Gdp!^+&LFb{rSyw$Ex14UTdzGuV zZ;UWtAO{fc@9Dw0+dB?odQ<3O$` zg(e1aWH~Z1kR!{HiGk!mazG3u2Wp@h29g8G0WpvqNDhdB9QZ$p*?s@){rT^crx0H@!+GuIaSu0`q~HJm literal 0 HcmV?d00001 diff --git a/img/deficon/head.png b/img/deficon/head.png new file mode 100644 index 0000000000000000000000000000000000000000..2f65be74729c98006de1ace8ff16019901548092 GIT binary patch literal 8502 zcmeI0KTASk6vm%>H8oQMX_5#V9o<^5-0ab8-@dOlmq0?5Zv*ap%LNM2-ot_&C569#Y6 zuGcVMo&Iu?90rX5SiBzXZVxy=97nwgP*~dVzD6Gdp!^+&LFb{rSyw$Ex14UTdzGuV zZ;UWtAO{fc@9Dw0+dB?odQ<3O$` zg(e1aWH~Z1kR!{HiGk!mazG3u2Wp@h29g8G0WpvqNDhdB9QZ$p*?s@){rT^crx0H@!+GuIaSu0`q~HJm literal 0 HcmV?d00001 diff --git a/img/deficon/icon.png b/img/deficon/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f92134699968260f82be8a8d3e0ffc4ace46e11d GIT binary patch literal 123586 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

6PaNWs7UggjETx% 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 + + + + + + + + + + diff --git a/img/sysimage/favorite_1.svg b/img/sysimage/favorite_1.svg new file mode 100644 index 0000000..17aea16 --- /dev/null +++ b/img/sysimage/favorite_1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/sysimage/favorite_2.svg b/img/sysimage/favorite_2.svg new file mode 100644 index 0000000..04c6a67 --- /dev/null +++ b/img/sysimage/favorite_2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/sysimage/image_1.svg b/img/sysimage/image_1.svg new file mode 100644 index 0000000..3dd8f5a --- /dev/null +++ b/img/sysimage/image_1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/sysimage/video_1.svg b/img/sysimage/video_1.svg new file mode 100644 index 0000000..1d9d64f --- /dev/null +++ b/img/sysimage/video_1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/titleimg/0.png b/img/titleimg/0.png new file mode 100644 index 0000000000000000000000000000000000000000..b1ccf4b2fb3a47c27e3babbfe3c20e09a8fd00ba GIT binary patch literal 54406 zcmZ5oby$>H)E{60S4BiRgcTNP5S0=TR0fm~X#@#Hr39o)O4p#*l~7s`#sP*@NwR63o69?Wpg{Gv=YRb!%lYVQZ@u-s zcOPp+Cuwg6acCEPvHs_86zxORVAPe%!GB&u&3{{%TbTQHwdIWR@!6aXcdz1v>AaS~ zE{oRH9IHhITfdT=ifm^c(xU&cL6Q2^-+&s`_?H}!T8qyNs@Z!MqwU7gC}WKNo)r0C z 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

pz?C}HE`*_&0;F6cX2H{? zYv@*5ULF)78VS`)_^x_F?VeF?r3G3Uyqe|>2W~ifi=3(sV*Y*IiGrCop`8RYsA^oy zQaFX)cbPs2TK{We!G<_tv?_3+yfYcw|0&08FB0JOIW!SC=0YaE+W@#D2-m){# zIUlg{kXAhbO>X%&75f0|S6vC(tpkuOkb&jt}EU(luHT@9Vx&`n5o3w9{ks;`fM`YGM~8?K(+47Lk20 z4r#s4WzbM0$TiOe5|N9A5fZLdO}GusDWx2R_m4^6^P;Zkww{knTErhw*+9T$(?U0P z>wlE3jf#_fe7u9zq&L=4{5`jW=5EYv^jILtYm1Y6JqGJuJB8>-c$h_+#9K`uYI~WU z1#6Q-$De!*IM9vm?A-n?fqnX;#Yz9!$R@ael<^K`*Gt#J%$@e%*++XS&a3&^W%yH( z`8Y{fpx??f4=pM+UhNwL;>`<|Y$D~Ic+d(xP+D`5T$^+d+0!@aI%}TD+@$C6VPwWo zrk7a2cP%#Ed=4$ei<-&c93MGC`kI^!_n;SpQe&?SjxmCV_2LYpH)wTN*Cc4(-TxmS du%6vll_Hm4R~2aHriL``sOj7)yJ7j){{uj}oT~r; literal 0 HcmV?d00001 diff --git a/img/titleimg/1.png b/img/titleimg/1.png new file mode 100644 index 0000000000000000000000000000000000000000..134f1640375052c9d48dc51d96ff608c1dab1ada GIT binary patch literal 64541 zcmeFZXJ6A<_dOhClo`u7N|!c@qI5$il%S|6RS8v^CL+BFh?Ec*N088lp_hPw1nGtj zQk4V+P3XNSNJ(hYTS)#V=ym<>mvBG09{3@Me#<#~@3Zz=YZHFQK>Osev&SG1$jRHc zt{Xuh?7kqLvZLHnry5Ooqrs5V10$0y#_hS`l_k*>&ru|4-UWn?;`(O zlmErZ|8nPlrQm<%@qb4KI1>L?3jS9L{{L7Cn%{NcDZl-IZRU3@R74FEc9%JS0K7LI zWsf6;BN?Z(nTxqDw5J3X;)OuWvSC~tVcEgIp z3Vwn`2~)m^uVKh9OWx{Zm>~ThK(RUD1F}HorciW9%J6LaErR3^sQG2puCLb>^;8rs zG?7{7q4wMSHF(3*C+7neqWZ1_telO=9y8)en8k6*Ila<>H@QF#c3L| z#y?*F$|(zlb~fl!_u`T0mH@!H65E6Q6Ty!A4o zhTIWr_@6(Bc-Z$klK8z1`K5%H@zgl9yZz#s9}o83#X z+o!2<6&i}cvj(s1KVS@X;h)d@AsdDpRzEc=sI}GRjd_?bX;>2cV>j*-)0QH-3`xz_P`ZasCeI6QfrF@! z80n?*`d=ZV{|x1p{qLR4^UEH`hZ%kKDnNtFTPgp%yy+{NailQTtNJE$5n5GhZguCs zKj<|$*2{R&5-_j~%!W`->p2Aq1-hiq8+xrCCoeN^5N;eFxg z5LG0-6N#s&aQ$eQI_@Uk@R7W!5eqhb*CC#rTLn%289#|R`EvPVUQBD~?o+)ju80WT z&`V+hJ7Ottsh^kbpobIZP7D5#BEg9XCfRD7TBll@)g7l=T*A{dY&Cy8 zfu?hN0n}4+7k&mU9NpEHCiUO#cerYCal>DzMs5+N>?dDxYsjLN!4hcZb zwa9-EC;G?z=LhlaPa}iQE1-oK=6X1{;dPZuKZ4jn5L6gHNuP0E|39PB()52l*syz7 z6N%sQdF$c38ocjMDPjJ*$?^?FXQx|?H%5J(Y4y-C+ae_;DdmHZNwxHm6^+i_KN_|a zLqOlfiT9^v{Cr2zL=)74=84f*n0tlsZaU)7L0{WhB#x4!uHm5GwoZ^Sr=J@ypGytl z^^@Nn&jkPY{{P)KO|nnp6r2-mVapzhrbifc`WdPYqJ7k44UYGx+PHMaokQ&ie6C_r;9!P@pW1^Me$c%R67lIp6W(=R(~`GC@v$|CIQwx^0kQ zm-62ymMo!pN2;ECvn|5-UA?CRjI zicgo=z#0!BJ$Hl~?8_HWN@`p-2xVuZuyb3nH>!Ag(tSk#)^=Ci03 zNoT|?l78RYHKL@rYur-uFhoN`o8+35-x)8lQZ+y1LV@yVY@mtOQyA~MFhDlh5?5@8UC1i}YK%6Ji?ir7{2kuIYm z(RQp7_$JWKLSQ#{t|=#3Gw<8>Eak;ObzNXmfJA7GZgY7jC5|Q?>cr^L<)Q zabYsq)-?Rmgpii76n-`VX0$t6uG(i&y1!svX=Wi0X~zD;99CJsual__2PN`T0TFgO z$z&d6wbTQeo*qt$R8Fg%dE7l~#h@6dnMA^+B=Ve+vSRSH(IQ5 zfP$waelG`>Qa}LgRDnTTFLhmdbn7c`9UQ;+io$aT1XQz{@uegrbIGV;!|D+xa*aH8 zHVjkDOUahn92MYie4T9lZx;LHN8jFIlSg~ittG;jNu3Tm+7tWkFJjwz%JB`ChW!yq zYnya`Yo|NowHNEEiFG{MZNroEhk~EW23-yn!nVBa9)Fgwf{e9i5oA|RU1G@d*OcCvS}jBoL7P zgbe3Nyrt2JlMu-lbhFRldD%=dZ_u0mXpuSA!j&obiCa6Ful>~lj>EV%RQ4mjwmKf2 zObcT~-hBGnNUh4Sy6B<%A;vdR-w59Lu`dmd^GBRmQ00wYl<#RY7ww3ZBL9-;jQI$tWOSW9W7Ed+1SD7j>LY%1*`R?MD%`*B zmvN9<+6iBIGvDrcm28F14Vp*FeEdeOAo`u0*MP(NIZ@`nB!t7p9_cK0l^61|L6W2} z?*;4OATmT^Zu-46eSjmSX4=D0cYU*w6195wS< zIghrw4z6DpeEc`IqRoZz(L$b3eKZ8^oiU5KJ4SI zD>W@2%b3sBE@k63t8KD@G-y~uf;$knNCG;4%8M!Jm=s%NR3rz_bt#x(j6op(sO}6v z*Y87ZOdJQ5S8KKizHj^a`Wf(%B#_dCps}iu-&JE1|_#Z`=THND6WYvthPR3bW}ZQLnd0?{e_V> zH23PN>iNP~ur2SyE*Cr6a}5pQa+kGzV7M!3wq*eWCYvti5jUi90Q3agiAIPpCCH7X z$<{7?5=n+w-Bt!ydUDnx6K%6y3AN_D5$+DKZ%o zQhBTE>piwtyi}NGWW%+2%EKB;jWK1mzK3G20uS2VmFuA|&oFyG`9L%HUM1x5z}NB& zF<0g0h6DrL!^u&^ii>&zy6BI2U?GVxr8fQQS8bOdSA=)mMW@2L-OfMT!rO}FQq1%~ z2iLqROTVSI({Fr5wXmwB=Bq1Vvpj-Iw@c{l2gd?<{$i%a6XqOpc}=lOCSw8^KUphlm*<8odpMZ1A=;^o>rJ*InN|I-GxuTtSi=a?$iQI|JJezOUBgXxtl zHs3h?Sch@w{*iV}So%|OSCwR2&>}Tm^|TwtGT9-)(+}oaRC;Euww5|ZFL5)3$xM(u12GI%kvl}ONk75Ioox3+e9e{5Q#%lg2q@f5t#5S3wk z$wmmNnEA0lA+aABK1z=Q2VyOBGn2jGdTpEBUUbcWP*!=D$y4Jj%ngkXaa1(ujZfbjK7PyHDf4a zt~2%H&WT?-e}z<}7o8D_xiP_x`VyV2W-3|s$3e=7Olfyp#CbW+V>e{PNJ+0?35uGA z`cjYjxYHWdhW)WaNO2$h@#7bpawMd5v zSXr7yR8|}fCMx-ehb|f7ltSSdbsldz4=%-%(8Z}a@MdXErkqLog06i0G0OIgHRv?X zOZZ$*;}$qxpk{pH-n(_pcy>^8V2ZDfL#`ASrTc?^GOl~JtF2pe(rbY-K1>EDntkG~5FB?A%TX`bCaA-$Rb-XrW+WO77P!I?4 zozf>FF>PNOsPx+W9_p6**_*5cmHXE8*D^*I>Smz+7PTzZRZB6_gzO$N&|+Ctl`c3pe#|DWb{JK>$Xp;y4*l!qZ%sp+BjVn zVH?Ph$zTp>pmDMjd2M|kjb#IuCXm~)9kkH9*k~W>*RD!+LEgDq(UY)&&ks8bdoak@ z-(DW+gvh5ArIOwGN0O?Nh3cEgZpS2lVVyLT&bmY1jGeE|GGvRq(KFH_!6gQ{fnMtf z;<}uU;idXnwn@XVdbufi2a1k$?s?Ir@XeI@wJD0#Y*NV@W}e!syiZ({pzzAvDX`>= z$YP&bXu?Bw|1J1u)%~TH*YL5&8(!VH0ovX!8R2O>CI9S{{d^c|Bk01Sr`@uXRqo%ZY`HcGB+hR{=chS*KG-)~`m44Y|FN&r|g-&5)G+R(HAPM>v^J?sEp z__IjiE3cWO!T^r*zrD>y`R{Er)MAm1`Q<>~+QlhPwVmHj(ZC|%{*zx}ax z`46^YCtk2sw|2JC@+i4g-U|-^v>o?tJ?S0;ju?}GGTPF)WB97Z5AIS z0)ea<^XX=JG3Jp>SGh_G%w1BEwaZd&F1C&fACY=-9R(n@1)iD-FyoR-24r)KB`o*e z)hx|Ug;uxDV9aQv>568*K$4qQJ$A>YMvDPA<1|b%>SO~aw>==h1Q>nD(eyfB(gs{u za6ZD(RNqwqAnD|)3cCrmI@z=K3>5<=dYGA4MZamjKRUP>Mc7>H&cGJyo^nusdB|LR z$31+=*r`|1!|cR3ynOn8<+ccS5(^jDzcwJPYl2+KjjmvOK&8s7qr|jYbYbA_0!gVmIO--P6e*SgUe> zanhDs&>36VpO66f1g*3B2ATRXpH}Zc8_a{|7a6g0qxbZZu2W26Y5j-pi|J)xW3^G= zGmH;ePYK46SS?y-y8**a0OJcS$wK>xOB<{#T`aI}soUZ5Tr}iC&HQTuD4K;+G@iq= zzCAOg*y4#l#zrEzW@L9i0`T_QfC~V9D-NXw378@$0%CqwG@AJR8Pvl!QdrMg+1$vV zb%!$0GA(Z+^}GrUh$)!J_skrdT`O!KC43%p?#X`ex}S}xVJ~QfacS9TYv|G71khl0 z&xWW@jfNq&PgA|*Sg@tDEL7;l$2=@l|Fvu)ttW=*8Ly2^u&CToUBph8E$7JR|wZ>G$AQ91*G+(X#OlNpvy%bH$*CO|X^+K(gh z?o>NlTCH(-_HE^1t!KnKkl8knu>e;nXhP5FCJ`=WGdJh=-qKE{qkCD1ZR_Sl7!ojwOA>Z~G;=t7aP2#GYGg*lyF}3h%;7*WlWz zmr@M8>$F?%@2->0gD{QC@9|vP_xyq*Frz%_hEsFP_(!o)uhjmLR`4#006>culGyMV z)sTnX4IPyEmaC(W#rZ&{W47ct#KR_%Ij*PA(woiU2@Z4RVY*w8dZOSz) z;4!ubJTQ9M@Y46Hzr%AB0@AMMJ3Chti;F_uSefLZCi8h~L_qC`)!u(RSiu4a6{%V5 zJ@zM3^%>{B_fA}&V0T_T;irKf-x+pT1}~uxR;)3QT>N|awPW z>yDoMX^`g0G-UxmR@a`wqpx~Daz?TqdnOB(vZ-#l&@m`^_fccejJgI&9w(_g!boTA z#eXB`_9nvI7wAh4%VMV77R!BvDb;L1LD<}6vfVRYNNPY zpmUwuJplAktMtwAa@ugB&>|=(Vh~Aw3p@PgPV8KhM5wUNB~stulfUp;N7zAOKi@IA zuxGS;6OnJw_OS_ctwe8AKuc}KNC)nw!!H1VqSkV%Srx@hoBU>*%j*w{KgPEpDpi-# zM_5cl5Y~!BW7?<~2im;?s@Gj1F+lf#xCK2uMDh|Mue)W2UX1ycf=X zgiS6qk@s)sa4r^N&qX+XFR56$A7vN}iu8PdOdh?yDm-s8pNVq{ImM(@$k^?2?p9>Q zkZLiyE9(n7pt(bSK8_tCf>`Y`G0K4!e$i#vufnZ+ zz(#i-D?oVCn7PB0+Vur&rHmv=GW8?Eb5h26iH^WZ*$VPEKK=SuJSnWFQ7i7!8oM@O z)zL!5VBa+oZUIncBkW0_WnG4e-G%)P+I6U_BFBco;kin-bC3>QyYo1<0gNR$b#Drl z`ebnE-v+QvQvzr}N0+2YtlZTckb&7)AT=qzp zD|vd3>unLk;W6z`p$&tnvqVx7*Hpwwczi)Y+8rNpQK#ie1eQf%bO7mKQOLzn^!X{s&3jIEvU8(?)&*42h{Q6^jShm`oNc+BVerrpxcNG;ysnHi>)VTMn z^MY*S40Dwn?)}4x+!@mfMDp83O`S7M8Zaep1h=-&d4(H(k7lPMTm$`zoFCf8M=KE4 z;Md#gkp3ZSG3jSF-i^IQtx3$Pxj}dHdHrAVD#fg7;vjV>tvX1v?3FQ|_owhu?0{%q zz2BbWs1JCO&EKpbkUu}g zh4%8c@sEk7nWyjWUETtV$y!(c8_-6z#X{sh&&`12ZhT4}z5=`MmB(W1s@kI54I66t z#hH@+lN1oppDn2M)6SE$fzLy14{3S}0Vq8o2|SPaetpe~lvfqj<_usxLVUTVEQuQIBiSjTD{aDNg%5q+yB_i1x2xsBav^r>5#=ZTM2F$aR&0S||wW3Lmgu#-z#KiC)@F zJ$1UP{4KBTpG-*LrfoNQ@ALVH75_Aujp2|#f=x|v(S&D?ap8;+)cSAKwbega;4-|} z?`qM`0%(xQ`hQNDB>xvz^|A>I_y#YxO`*QzKs zokvs3&+b1Qb|&057DdvG0WX*@1v+06r1LQV&OuiI2ky0OIICzfyVQJBm(`tjwho&S zquuof${ix4O0nbfSiXoyEQi!YvienE4vQB*MDP_U`75H>a@4@BNlcz)04)tQcK2OxDO5kpsAwe(z? zz*6&y>%`oidURD|Jt2kr%FEB~bOiyqE64$S}66W`i zdrFiQYdcRmE4(<%k9!xzG%QDs&jV%!w>y%oVHU}A-S5io^6QO|dbE$r_P^jT#YfjLfxOiHowH> zAtyfPOFK#n&QFqj0rQWgB2(2)?@gqafJKqmY($a&k;g1H&a}q! z{pcVl3Ob#6Dv!(wQo^77Z{@kA@zZHd{?TV=UwoYE^0gFyl3_wwGT+KZ28I}EgKQ!} znh&=ZSTICYpBfJPcx>OLu06iU3Lk2M4q+!DlN!?L<>Rz%NxO`fOf6C?Pn!_nb2GvM zF2WT@bRm2eNckWvRNi4^`O&_=3yuJ&18rBa!P&F6O0A>B%m;~gdHxgg|fjw(P%t_-)kfPgO8g*F`#xk!j{-hdZG|g%OgVIwo(Ua*6Ks(*t|I{Fnc}{grCbtK}!{4Z^*r29xMy!$t z<6!~rcO@?i0O4`(l%>MTCh3m94nRn<^1Z^P%B#b5*}jzWvYC%l`4ZP=@kswehrG3b zw8Rk3zkxdW7IUTQ^IhBeWCMl|==p}8tr}ltW*SvTS(uQzbDg~yKE!qw_1XNq%*m;e zRpM(@Lp4&n?M)%9#&OMK+YE6D`+rEs`tV#R=nXh_^gU~mZHkH|HW|nwMiH{^Z&5=M zL#g#!J~%f30T(bXut;&+8fB39R-;T&_KBWC(-RJ<{kKO>n9KfH_vn?L^zcVSxYIh?`@0c3! z%bQ%nQYCfr8+;hbwr6sq!THn`pby2BN){j-Gb!!Yce})Q?qBeKBDEr#2$8?W_zUhQ z3;L^;J>>cd=gsneSuiM>{m^=msWAk-ur<{?0nQiKJyQHN#qc5lc8u6Yl3Ho6kosGM z#X3nQI-@Y@XUGozdN%e9TK26P@r9C~ZIlDDX zl8KlP!f!17331}z@73E4bce~OHGL_6=fJW@^v2mi8KC3>1V?fQZ3CKcBgkMi&HB`{WK7<;GL_$IpXE$ z33|Sx=D)2@2#cfgsa{O&$x-$miTZWF8wW<04dXUofrzv>!UP2im838>>irg{QW- zMd?Ehhb&-k?Y6V#_L{+h$QHjbVrj9#{@q7C6(l@H{JWnYO({ISlULbKLeJY8&3DQA z!9suxd5jI z1nhX3_avFs-@EGx=rtsmul!(X56_YK_OGjXdJ*(TfnFA#=62g!#@wS)`0v|dZh@9X zdvs*~ndtqX^xe1MB#!nWY*}{&SVNDzG%>z}S~Wf~%E#v0wtdxAN!gI)A$XZl^slr+ z{IJOC@soFi43f?ou`QWKFa{buW}tFmz@MXbFY=HB7wGNL=Xc%o4|xwaXzuD=WjVfj zhOK8yZy)g>tW7YKxwKky)jbHm@;V@TAH=UHtu0T-CQF;Sjs%EBrTnwZZ`OM8GbfLh@2H>eu-!I?=LRsHN}@)-gv zY@Gw-2jsJuL>}%jFe7*g>v47Vun}QuX+Hw4SVG4dJY`?FH|Pb)T+eE~-6W3|176bK zs_#mbOqmmS^dYd`^gHQq6%^10rGp8>BRAgsn^2ZNMf?L08pB-^Q9aB%kushA9B&(& z3@AeuCO0Psg~>w^PZp1(_Q2Y8^z;iBx)pG|S9nI}9^A4;u0CWDO~;o(s|qlJWPFi; z;iy1P=4E{O@XDfRpL2xg@f5X;pbBd3)W*1T&$9v)YuodI7wYIzRETPi&5^!*KRyT@YDPs?RH8~N#)Sj;QSAo_g}rc1)nt`p{w zmbd(_9O>lHK9G{|_S%#s%qsFidfFUWLM)UJ>_6S4Yaxw>OLn5Z)Rus=BPtV1!M%ayt!cESev%hqn^a0e)_5jeI z>q=91EEIVV+^ySL>jILeczP_xwl~eUc8E2V0`$@@j5Y|ajDfaL8Bhr%vx)=&;`;Wr zcgt^`L)QwYS$H=Cc#%G7Q4}2WTF&AP+WwXnI4;F(&a`!s@Zo%xh$yJuf23%A0%CrT zqYY4l$^nJzDIEs^Ig{n=?A>4FMs5e*n1>cnyQ>cqyz_I6>6i|&zCCiG59SHvY>})` zj^TCYBEVIVi*XuWe5{httmf_V0^r{jt57(1k9`F6xJa5dexfXkDa+`BB!3uM*^H32XY{yJkM^})d!<@3J{EsEfTS~ zFyZLNQ#Y76s2@_u{#*0HL8%)}{4Dx+E_sk{!qOnfwmxdWAlR-&TpubMSI<2uBPE)Y zhjw)dx={fzlD-@L)dF`KvgpQ5vS z6TI(ZID0Itna4rziuHWZ4d0AXEd0i-^Y0X)W&pLl#WQvrLVq;)WabJy%93%u`Z zx-b)wqu0c9R$4!^m@6_ZREf9?n1QG}xajibC=QH9Pj?09yoOB4ju=q6^l;%>?7;o% z;)2OnOJ8-UISh~;05=HQizu1G0j?~-TSG~wc;rg%So&7@a81<$&mE`_YMco}6sf28 z#DLiMK*abGXbDc98OC1bcM_=CHPER;ChnF4W*&F9&Wu_HiE$i&=z}aHeOtZ4gG{0M@B{W;;S+y10cr zcroIXiBpW=#A#KVI4r*Q%$nn~o^n<7dYK&JPB(1FEPuBqw8S;G>7BPLQ132dY=rk4 zj3<=#Lht1ce(&x*bx*?U{*jMHX4!;Gh@RP&0N`~y%l_-vGY3XaE6@c90X2EWs!S(+ zcVuqQqab%ur(&zuFfor@Wy2FqGd=+~j-2f#oEskCnK~lxC;mIre|LY4az`|CKK{%vid|fkA4Oou# z^Kzz3<9=wX%@@UpGo`6!@VM1GY8y>C%g>JGmwW(-?dr*ATQ_ojU_Os50BIx+*Z^tg z4BHdjMwX0iTvAc0e~&Pxn)`M0<3tmr{}mwFUXq$F{e-X=RK%Y?$o-47QC`(Xso|Ns zxO+l6#U~6H`ZT*w)6`lRte< z;V9y)`BtR%g#|cYxFd=wHU{M!eM|)mI|>ee~E8c2@Wuf*KN!`Id?RT z^k6a@ADGaaW#d>H7chP=_w(*wkDtdS95&Nr0Sc?SD)QipAc00g-m^4~W~fentR~iO zNjz_S2-q9I@_B;gB7T@6)})*alCP|K?Yys>Q~Z`!re=H|gl)Qevo#LOfr0kiCOJ}@ zAK&Ezj36FQ*?GIR{q?m0_k1TW>k#--=It6j2Is}4VI8gG+NM6Z6I*PtUtf<5Gq5)i{<^=ZhF9qWZMIbbej2c1j;@Z{pW)b+09@wp zlI*iRvyG?Pnynpm2Z6sw>pct92X|EN?f{+RrlmWySRySNSkVCe{=GE!@fgjUVBlJ~ zd3{;!30eRxX|S)qHeP_R@5aZ2EOtCOZ`=Kn!A~ihDW9SVM?`NBE2?@w)0q`Fqf|6c zPR9a|9xhzgBS0_1!;L*c>tO9ljKn~X_asPre|OZrATsw|A!tIwf>acuU(cyp81B*h zd`5v3I+HoM5RgV_4x||i>_i#UZOq#023Py;I??U>=v{9CIkR;tH_cbWD41cHfA5c% zT)B8k9&)ZR9=Km$QRO07j3&eiwDK`4a0F^CL;kW1e3U2e)Q`jt&jFZX12C zze(Qz3D4A7K(zw3WF7wMYWWA`dbsj-2Xy^Q{XKJ+z@7T`2A=CI(LnM^&{kl~%Shp9 z5vD3YQ;6Wi*c*O-^4GyPfO+*Yo*ipv&UvtN?G--6=z-Qv_oj5~sWK{1NTc_!g0lta zkHfhhlgStSxvedc9Rr^VrE6fZvU7A%*U-Q$+0*t+h2I+`Zo*B9dixsyNvIV+96>$* zfoZvO^6jE!cUJrkupk4>3=2HmDP9lz56N(lLK8DH&_G(qy%{Rfb(i_ zW50`lH?K9G4(W}a`p%3*E49Tf-%_YY?WO-omjtwksd^soK%#zI$`)P|v;Fnrh_yI# zIXX!8_kA6;4GaLb1anJEU#HpbhVo?TR1otF8aPVV=J#TW%{ahwdS79`r)3&NV1s&S z1DEsWbvc~y`(rH68HD?qrM=6}aLr~O;`ID<2eM8kRO2k5KY<4z;fC-|RPPmk`WL;= z)b^4=nmLad+N^>iH%S4FX7AT;`4izQS`l@hjZLGw(2h+lAU>XLy^;^K8Ah&2px!5O zm*40g=P*MX7BSzk5-?nj$%|gD_T%YX5TByfM=?fvRH@$((dh)^;fY;*rdTKh;t^6L zfEK@wa*v^^TUw>4l4KMQ(SUgh4Y(O%T%D5f zTgUBzs+9K0HbkSE@Q|_i1>t(tF~P;c9Q5MFYFgtj7J6HG{n?ioAfN0a)q)&-p3K{D znlU|CFeIY1Sk)9`iY4b!I3*Nb1$;#iXuETb1?Gnw6nogfT)-Iu z8qBR}8w&dVB_g#yL%HmJ@#8{-Sfmg<9-FfVPxt@x#Arf6-D;S=kGxNHq~vs0#E|M! zV6R2?ofOk2yN~R22$N8IIZSf=@3Ts%Ac@@VMpeNpHIH|qGBI!w;TQx)_!9HHPawIe zT34MI0F<57Og(f-lIb4J9F5wwnDK9iBWU?`@czIj-fovoA*tF7M%p+OP}a%qY*gzr z2d@9%T9yMMDX&=0bUCUrGgI6n&w%{)xA$r$Jx6tVW{qs4zXB(cE7T)keInL~8k-U` z)DSQ;@Tpp1x_U8nmeiV+a&}EO7LLoKyt)9iSKzQC79sMoVHumhePUitIzvy5^)}VF zwH4A!@a70ZRCq3-J!$S!p8_UzLakOR4N_O>g7I0{1;Qh6 zDx-k)2=w`M2k|V|*VYrlBTbdOGVX}kZdB0srQVntuH3aVKwb*6AGRV4J)BlvN%EwX zMht%+9)_a9Vk32bZ`{Ym|FLWu~QGQbW5#Iz3H!&ybowd~ekZKsG-9 zrXs)NVQXpY`4c*0Au|ZnI6hE_m@0j z5dV~q1yDa1ywbFFe(Xx_lBt>HK>y%g$=tYwp4neT>29BoCYu zcnu`so{Hy2OsoDfmVZKEq*2Utj29@B@CLQQ&7#hRFLl1HpfTnjkH<#vypkZl1B*+e zV4Z_xH|zaoR9$d;moe8DcUyKu_W(2;kP*ZA3x(NUC}=V8K>|q$>gMR2!831aAU9-mOz*8Psg7bO7&6ds z!M`*`>;*X+cG@%CV!W!<5ch{E-pCS69Bjzw$7Iq|EQM|bz@=-WH>ep6Kw+A#2A-aZ zFJD89yloRo5F*iaF(ju*cuI6m(QDBw%|;(>X?f&V(t0fThq@~$(Vw+*z)Yq={BIW( zL3a68_v)OzfS#t4trX-51TClD&i=Rr9qQkcE_K^wEDmOI;tW7l)OKShfEM{1uZ;Oy zr)A5=9-CaXbdU8Z3I}rM{D7Sq+ShS@0RQY*F^@XDxR<*jz$ohLwwmHbfkCc}B{Tbx zd)VQMI{Nc{dg3!M_O>0e>mK{&)sM#0vZPndj>wRT*?mnYL#1q@2mvI$t<)d zDsjRaffh5?ul{<=xD7GC=(HnetvU=d(p{ogxz6iTa-x0mi@gT$4z@`?Mbed}`q1@b zzwMVxlJ|AhHr`fZPrj{c>w_l_+o=9=SpJ>2EsR(3se7ba2KiG>y~v9 z=jQt2Ae)7!`heiB=@kMftz_S@tI~Cb0^v5clT1+Cnh*kWZUiv{&^W}hFC4KJ>n4oHZ=6K|u z#ZMFMm&1J@S>`m)qGX$w0rm@wuPkj)cWJbV*o-D_A6`@kq+gD60Q3mN!5|KtE-iCS zawISX_S*dK0}&c9ak-{A9qL-=J|LAM)w8~**c~(r5QuI8EI}uOeK`V5vrXQ4*oPFn zmnj6=dkEx>Hy95N5(k5aK-`@aqsnze{+M(!KVzYHiZs~B;`)TKfPR;i6!|gVd0#C4 z=WwC_pLhy)#GCpbGgHAt6I}GF<_UFPpqhVwpMRWP62U@NPpfFgyYl9IV!$#}38qeN z0CPZlQJG{Y{45|@y-l6rs&!R7D2TZu=@hZEjWxmr2ktWD=|mCM0-8w{l3KscjSI3k zeq9M59x3HzI+y}yagP+i$sKBEYH<;;nIbWOy|ZSn5mxMgJIgeh&Xc#IB?iV8FNwz7 z@F_D7v(q^R9;Rdv^zqvro(o&3x>EB)kS|CuWw37y$d#i@w<;^ChgtPP()uQxi`^}}2UD7G4$^G@ zun!C;uX?PHCF1rp^)lYf|0xm1Iz%PpfJQcA8|gLOqRhAiXhbV z_eug}Rv(8Ac?)C|U`IE?W|SiZO(AK29ENxtDbs0B-P17E%glEMgsS$)M03v$;7YIi$frLb=D!!j4T0cddaO?fhbV=QP*BBTtxJoXkW>qPzXSRWV3h~b=i9-r%FY*?=f_(m`j z=M0#Y!MyC{&0e0MNe^HYfEB5+e2gA`Wi0qJN$GxhT1SvDHG~_>bm@wfV{2*!K5OZ_N4xUry$&Q^r438LLo9ma)^_d}qzCApp5Nl7rHM z;!Nz+roW)}BB zy>a}pE5{6@xsXhkzYa_TMV=WFbj>#osh<+HZ;;_Uq^?`~gP0CnyKoct&5q zAXnXs+Mww6RCl2vmti;Sd)=`FQfE9&H_0V`CZ2$p#)E0^6pWsBpyO}TS-nd;EZeUy zkfz()iLfhLtfZ5^!APNfa0gyM&Yt6-W7>)#^_NQE6}~aaEw%=E`Q(BCvjwz0a7W@5 zj7f;nuSb>-HEiqPK!*D~v2r<=BGf5ilsHZKxV|8Lwj*8GN=-`J=kbi}%0kO0pNmZy zeCf>gwWO*HpkVU9*_oYo8W!r@vA)9>)qbar>`rQbSf{OH-PJF+*wEFe2 zyA5py2i{4fMiOpR>IegWU{LAa!C~hgS4B)|4mO>r-#!8doTklIhf) z4!Jf2wRe@)`|1A7YEjF#a_*ji%u}iMM~U#qLDPH#Nd?8KI7PxP9$EJ-RU(*d#HqSs z43wOk8hpS-Cx4_fjv7Oj@Okw|6Uvo_uAq?sN?(6GR_kdaQ?Bnk#NJt}Aag4wmmZy? zGF|$pXCIifPmJTbXNNF_hYk*JTfYmx*UQ}$k~*+0D!?4x;J_vh}%8$)2}lq9&o`K1Ime2 zF#1C-&9wcLCpSPjJDWtgPT>jblAFq7&lFO6ZnS{b#_FeCkNc%Ffv`?f@-Q2I<3_s< z1EXEJn{$og{g?+XyV$u}7_Pn>YkCcWn@~`- zXnK|0{|~SY#Z2}xfddT;V7LWpdrMI_pH*r_(JwUsqfTXYvaG}*@1+%CUF*~4m)~NP ztI#OcGx2IBvF9*1mG>HxmCH2SF6iWou`m+*Y0E-Rm_*y)DEsj=1C>xAAZ_5v!}^Y_ zZl!)MeX&@YvAm-xiKpLH@>HuF;|=_iw8<6GJbDl=T6X7uXF8o21rErn6+6#GOmtNV z^4|Maf-ytQ`5)Zo6?&|3L^bdUn;C#zJDRzj-wh^E-X)Bzq#7R^zL0nUjDe7v8-N2D zN&omR^4~9HF;8m;NhMe+X7lO#{TaMyD9D&%ye65Dq@B>crq91SH#B`_uHDwn65m_wPDdJtcIwHyv<4F}*L+ zpI`A2T{QBTGwWV?*88!cD&^g*GY009*7YPuMSrX9dmErw@;7VM%q0)69a!w}?GCI# z3z#+723jbmCMD0y!8E*_sa7sE;?l1s)8ACV`(E}+=1G;5CNQFVFe32PHUg*_Kp0F2 zErArOVR;*3`P* z)2@P!VcpJ5#L5v}x6}Tbv!!+5cT*7Hb)SkQ*USnwO{n+|Ca&Gwc(!_F%+J~8j{qAm zH-Z&QasrO<-8AD%s+5yw*4j47%R0-i06sjXe-WddrWTtK14bR+%MH6V=duPdu2i?| z84YxueI90MlTdXsonk*jXB+uy8wC(b&+%94Copvu8UfWh5OpxO7Oy=9ac5giMlATa7E(p7qm4N+Qz&|8!$CG=2* zsEi_gq=gz31PoO=1V}^#q=w#m3!y_Gl(c&?-(Bn8|5=OhhIgO6pZz?)BlLv$DeO8$ z_3M%Ud<(A?wNMFoL+g#P02P|+2zaY1)4yYCj zGsCQ$9YrtDSC{PlXRD~cMhYRcNBOZA<_kx6S_ztK&U|)@4Sj>>Jk$g*VPSKxG-=*W zX_;e1J0EmjxJI>Whj|>XkfrPqYuTL4bV|rCYr6Xm>Xs}|l8S7x``WR!e0}_Q&5e5R z9jmzWy7SU5tm~>aDFNmDfSA$9&vJa`j7PJhTIW$k-Xj`Mlw7{KhzdJ#R`e0N9!Gm{LgvwzpXLr3! zeusf#Co&pgzGIahOcxs}xmv_5G1&F@|G$qT85NxyoPP-dJGUBq=-E(yJzGzNS54>& zX-GPR>HvkL^YNmb2k+BX@6TtqwcV+Nbm6509^=Y`sx(DTuT5gkNEHUVhL7pLp&TZ= zxrAw-71x#`GsotBW&j(FrOy#nA5gctI`S9j*O=4+Y#?*6SZ8gYLaQ%odz8i;yZCU( z@%poHOUP~5Z=EW(1O0!Jf7bT39;JxBTGuSTt&CSa!H_AW^M3AuW)IcVyV8}&6Ffz1 z_~+{ggIxW+*Pw{_%6f<_2mk|OFw)#KjTu^AGEg8i8BiR-KN)avb@c?5kZtsG(q%g% zV53%FU}*tZNcs~vx@~BH8kIclw-|d?lT_@$r`gdj?vNd=?`?|^$i5~UtfcIE{vgYF zwY8rUgm1KdAt*xMKtMHEw;=Gv&U#o;A-Tovd<)C_1)rC(@QOi=6-enl=m?z!`-)bZ zCQZb_L%TK7PpWaQfCXiXzEHd=Jeh8l=$s)HI~5|2zdle1Gxt}}B>>UECZ4o+g*=(C zMvv}&FXdSOgOzX{z;bli(~c&=;ES$;PR+!z@-yt_ftYC6>p-4E#i|8$+6_bj+Z9D8 zN*JSAv)NC!KGa5}dvrpZa*A)|fD^6rLCy9NT(+I5wxCWAaJ1P^DePEhM=y<}^W6tR z*p8L5!}Sl@$Q@tUChm7h+1Fidz@ee^Og=-fv!-Ybc%g0j&~W>EX;Zmic&vZl-!0eY z`Vx6z<05W;JGT`GP4Ko~S;$^GWfW)Ki2fP9@d0BAO4ludIc3UZo94ZV*}0NT;{59w ztZ#J&5Lu;vL43K!&k3{K3U_L35ThAR7_t{qNtf9PR8H3kE$c>JUYk!(<2m#r-ZR{y zr8m-z_j_wZ1Rjr4-uKJ;?VW8JCF-o%rQ8m3H5T{p<7uFW7cpF5kJ# z^B+e>O+ssIPl#EOv@XSCKM-i?LN7f?ybC_d%J2wPup_gu{6LJI%F2l8m!~ZB0Hw}K z`-BXqot+Ut8SPwi-0{yj`KGaoF=FDEZxzm^3K{V4ZvE5BLrx+pT&CKz}t1d8&- zPP7z91Lrq&(t4qEfi)pKr7vu4#d=4!MYm7hLSE*FoCm0mikxKPTCN~Aq*^6QBwa@@2K=yI={^%Qb;o>BUC7I ztC6Bqexw5=u8$m1S=*VCM;@M*d1Camq#g7r(ku(9Aj#~9H*4__*H?iqj6I1&HThIB z9(dG24|+)U!m2in1iI=)r=uUwI<1)Sr{YB`gDt(? zpwNGe`c=5QVGgsu+`7_A^fpAs2NOz}0#g{PBfNw2t;4=vhq{Zsc&Ei1d+)7rvA_-H zufQD{qpDbJJV9Rw0u%D0vE;q7i+rN(nd3rPP}`8bctB_&mo+JU`!5c!QmB-CZ0SvH zgyV%g{(I1~UovJ-0bAX)R4(F!{lH+l{v2i{oSbm0f@nLk23QwUKT8y-9Cvo^rC%G@ z*C=45vE2uUHHAGZ{*pT9??DBjhUIKW5}(pwbJtMwB8nFwtCb)H_5b@s_Z$acacmps z(r@^7Qo_mMhL@xIHlCt^(Omywa8@B>+`G6Cr$<}mxs8;3EcldTS_6`xt9gX)KhaYf zjB=P)=JBMh%Yje(xjummz%5L*;>|N4flkBq>M1PoD4z;kWqgAjRDw;b4aJlMbA^GuM;fTC3mK%6-H zaCw1eqcQudn79(SRIdiy_$7-q2l?(LrPJHI^dR}%H3w&t)}!7?ATdH|T)OF!Mozz` zZW%+QiUJV8`8}wn_59s0RDQBbqSc=#H##3@+;TiT{l7T(2*{S<*~%g-)nd|;1!AqKhjqMt~*jampY`@4)Fhu=j?>N2OwZ%n+Rs=tKC1!TF=9zzoo z?;JilJ((&QC!D3ECw`1;t{S|dM3C7_S4%rptywaYU9!TFiHKH>2a45ljtOPN%W84d zs@SIU9o)Ym+rf7$;roxaHns(0cw^{khO%7qK(ST@@mR%)*eIdMMuJkzPR&KIu^wV- zHv;|zvQ)Q^u5XMhkTI35AgOJ3fq~Bd3o&~~&5t4Vvuk79*6}EC#(wM%`pT+YB3u`^ z5UbXh`Jb4l-WF2ALO4?LK_~6RI-FMqX2aPS4A#p=G&=trPsTpQyJi^2+Z5#{)?B9K z>wJY-VNKT-{Zuo2&|EMW@u-rc9iGJYIFNx+NFBFlMt#RiKn&(ynfs;K){w;1az@}XcUeg6Ow)M!GTF?fF%m{9#4z|sqJg(oV>F41mxah(C#OCw_q?*f|;M|Bp0%e|_&A5t^Rn=IG zQ`@rwvkD3Xaq9Id-_uXH2mB=)q_)=p6heWZk7|wA*t>z-sRQzzBlkiU@{~qmg?@z! z=?1C9&>t_`2Tt=m-B~RaUsLj#PVv`HQfk@t-jAt7u%hy#675f&2^J za%gRL&H!W}-ctw2rRV3Rf{y#X^`ccmO6a7x50*|g-dWq!mz^qZC-om2NaNCZ9b z0wRXyw&4^%7^zI${s59ULH0ewNIOnHz_w_Ve}!-xff=l~d=P&cay~Tp23rj&*w&b+ zfC#A8hKtB{l$~e+fXbbG;C!(5kj$Z8-Zn30w5>R5fjTJtdDp-3Zw8|I)tLz!;{;TfoK4?jUh?p15J zZp2Lxons-pDi=wGxT{69k%WP@JIydDdl4C3n%Fpaa7&eZ6T|DE6IxGSKn?@D8BYDhVdP@uah#_qW)14gG6A zt1;G7{MIaUFw{2>U&wH5zYRX8pm;L?mi4DqEPu>?JJk@_7i<;aJ+rk8QT&={0wjmsYr*6Tg3fuK0jTTga|_ zrVBg)$6u^{5amTDIz4vD9^P31`!sBGoO&hIYi^l!3FPF-v-y$Pk2k&AN5N+){?@( zosS3GGLXF0*+7DkB_~PRpzO%)JsFx`d4{OOKm zr^jy{Las2XT9$IlCtl~UAND6%WIRW%Py=usdH~A7^1;H4Qi~hTmp8-+oshLrsjwNb zJLVd%WIcy&=5h;;f^=WQKIQ!5De`PpfU zj@~+`R|y8IxDO!z$-%$uvv-om`2X%lpBq8((g{DU3cPGUd_Q3EjEFAXA7|k*5dpLe z5TQ!1l|92UyAzxP3NoSE3Cf2KT{b3Eex*(}uWKcu)F1#G^mN)n6XC%if+ep+PA697 z3e8nF>><~hv-L)8I7dg@N5i?FwXh?WbCT;dO0Is+-o?Kb|K^}f$$}q zC_{td+e=SqI}>VrjR0$=0z?p4PG}1j@Ah(tpJR`;yD|<(I_**w_-Ixco^gC~L2QnJ z&IH{X3_BvCHekD&@A?Gvh~G^0n$I-HxkUq_RX~Y;pasLGWWgB-X)||^El~{}hZ>@! z+!DWT{mf_zW0^-v4VK8&4^yp-waxqYXF$`8<#k`fJUHN-SSA5&861hKE0e8lWTYp6 zJYLaV=m7MToqGoFGgZuTV*@bTELYm-j_zoXp%W+mP!UVhXbE_+lMS4sAY$t7o9AA& z@LU2ReYTK}Q(ZAhJ@b!u5j3WXet)>+rtB-Xji(btElVt&Mc0cX{<4oQ(9X>gAF(yK znW>bB`90yIx5`bz{D#5;edNxaIHqx*h~}B&|J&6p0~3_AsUqf8;AvG8ZIFSLp6F-u z6)q^zz{JE4oWADxn-$6?dZoabX-;m&zUZXb5L1m_IUUyV#?~PLv8+ z)nZChB_{c2jk4y1^uhr;xK8n14@`Q26-SONzxed*mt5j}a(Svp@X(hm*+%KTh}(SZ zFCW>-eUFskK&7LXQUb*af#F(`*PJrqF+l|J86X&Fpo%X+;*JD-P78)!VL-r2IGb9{ z+%1{mjBxC01yH&V__N$)BMGyI8Cvxg#_=VL5>_YqpPia`rMbh5C@#3Zc8v=9;yn^E z2QhU~ne|Z9A8>}E7;c)$6Bb4g`E=E8m8nf&2nGa*4}Biug*VLz5jwf5<%1+qaN79MHZJ(`s|aLnhTPFCJsWAY0jFvwOK`L<{iWefeg> zOI6C>oeue@HT)}y{~#uir&dJgu+fXwfQWXNYP%ZvFde#Tjt|IrRV|{mx!A`B5QxsK z*5HzgelwND9Ih$Qh-@o@n(|u7AU-e2Q?aza&U&y<*bpDMgfm8`{(Iv)xbI1+9o>1*3fW&n!6JhJCM1uPVsLB(NGoy)2Qsg%74lBV z@!SO_ouw@70^{w@oU2|o^`gw46*^eT3~3WEq+2hGgIyrqj5oATK}P13F7*VFgI>{} z1#pAyFz>el*{z&wK;a50-}_=wP}zFHaiwrE9_3y*w(iyGP+0xVetKOg(0$j6-x+Qa zS)&4s`por%9HQz_^SThCS-0%~s#iFI$qZbd)a=A6ag&&`0N=vcQ3QGRxP=Z#wspr% zXoi=mqU;y7ovFF*;xASgw1)Y=JdIojpl#qoC~uwD)Xvbt%HW*?K@JX}8RkYafU6HU z>y5$2W2ana><>A+!!$4%U$_szZdIQJigl-`6_Cq7k&%1lap<9+e_4l!mS%r71y2ry zzmIZRm64VBxg`_CwMgwliKuQ%nj#>}+=>C1PEdgW(r&f9d7(8Aw9M9i!NiCz9bh8L zk)BO`X7{%k(f@bhh{|$PQ%;ey0B#+_TwkqEl{6A?!@2S!4RiHhGUvw}0?dnlO;EQT z;K3R|(Pva;M_tR&EvjxCp>#G3p5_-2Y|~GYN(FLLh_@?jdcC3_2XI_@^xd!0%T26^d~pRD2ov z@I>wgeX)P9?EU&0u-utl9pwfd*i*TsHSLPZ@;Mk$u{;s#TmJv1In`q;P8(7AC~>)9 z^|<#UpetS|_ad95V$|w~xchDboUq3Cq(HbrbCys#g0?U&^g+9%OmFGn|5bMsBD^-i24 z`WN@#s9(q&^m>Jqwg+XI^rdC2)IdA)6yLLWd22Xv0vL5Dz zI0vu5`Q+tqg7eU<$H$^q>a`ja&)e-UgI{Rkf$yU5frF(cW%gvsV7zn zsZb`t4{^aS4zbV)-l^i{8FRGiaKvk*{-~eCWt?}N7EG%}K+@aSk+omx{ z-qjw5E+wUZjT$>lC~M}sf;lGTkl%%tGfYK-)7QGs_$Q7x=hkh4hmw5uX;7Zhv0^{! z;`QyknZ^J_c`#gugt`h&M+teRsu&?57 z>^T3?OxRys`e5#F)ITm@!{w7m;3UQ1auDlv-?oLyoV}EeIs+;n(GZA10e_WZXQ7U! zY=w9^8Q3r&e!0XMXNN8|%vx;fZke^Yv9~LJGa|!Zq$1aShJCgeE=M-hE>~QTXlj;9 z_5IcBXDX}9ASh`(0xC#LRc?3_K*zNLZOx3dOM(v2<$8`BmU2z<3r`09F*DSRmi4HL z6YrvXjoNuj=DS9A7T;sX%-_bTI^=H}%)hh?Esdo;0Bct2ESZ4BbbCMCze2U&G*=%o_hM?>@DOM zQNn1>A>afq-tiYls2h$glO6-TzwW&4K)Iq7!WknRgx3aM&Mguei1jt){F5(1^1N?- zGC4&Ja*2cGd>Z1N>|u*lHOz5i;Hqaj$?l6th$_rBKnDi&gy>!D{$X=fQ`d%er_v&L z^_N)~xRi9l=Zgv$kS@0{qmsRtv*Ts8eIV80eJCeiRW z^RvH7!8InygT(eH6Gw2hBFC4Oy@7i|VMol7gV5exBA4##3FfCsz=?pP?-ulTVnyJ$ zw%uI7Kl`=A{$Ig@Q!~R%g{|DOy+S9wh0m7)6b{w?1PxJt>q43udNdOpv%!WI6j;fe ztYbS|;}pq2^Uh9=R17#PfFK;;6F+WL_=p`k6EoQ}bUd3s+N_q)6^u9u?&k;wRHJNX zm{UVZruLqCP4OjSo=s4pkz)UCyp%3;!EG ztGq59N96|oDZxOd7J%-^AehGufH*=i^5!@cMT{Y& zSwZY$INH?!nQ?{i@}@2Wb1^r^buKSp%ga$%&=<(2? zb=?E)bWO`3QX_5|6%0&Dzi^qlflfN?LTD6OS>(^rodKsO zM8q3eqGouB$dN-Xi9hd=^!b-kGC1=t?3$mJirxyr{#8^-Z*iMaK-3+-?= z8GZR{9IH72(rMS-`QJT7V&=r%-FBN$A?%R9|2f-TUqN8aXlpY{!P&)3CDfbOez%oN*rL0C0vUj2l(n3!`4NH zI>07m3xXZERg*pN$ETq$NiMC1xw9RCfC`k$L)G93Z zedVxYRdwZzvV;cv>o);pV;hjg-Ll9bW?MXW)De`@!Q5*0GNsT5Uj~-G&g*l8){OQR zId_=bsYDY3$wHf4`stC|&q2v!zI1&5qk~R`9FQD08V*(_F?oL#AA~KLMr(WyD2`g2 zGJ}||5X69Q%R?)PO-Rbzc!(VhTJG2`2$DoLFQ?ki_E6ptXM0ZGO3*)`9Oy5Bo(qA~ zmHqEFk^(ZVPau0nE0v=ejCO?iNXZE-Uu z$BIYdYP-Haty_alilS-NWP4H$+Tp?SLH?sBz2?x%O;hfObm{EwDgH6S4V>?nDoDzE zAdDX|!WB3eJN?ufTN2K?s~5=&uF?1mEMp+_obBaioKj#xirm%L01!5tWpJ?oz$>Mv zdN=a6G^2Uv66207r4*{C{QcT>C33Aexh8!@{RyHTE3=Qwh?rbK`%m`cZ&n5)(ho=I z*`CvrbXK@yUt5Ot0`n413c!wbdU*0jF~#};atK;Zd}vW{m#3OcuYqQE`C0?;Rm4&Z zG zPFK?wq@eFJ01XWv2&H6dZ7*OepBzbd-iWfC%8*0ke+Hyi8el@!X4>eKl-3n8>JAa> zEtn76?tsfX(0U0HpGjiIfO$W8PE{u(37$uP=ez60UZD@7gn)>v&ZA@QP=In=Wquys zZ|W?~Uk+zq8}ypHxSz)vk_)Q8%9S}lBcJ7mB>iYG(=1u%Ov&_JyVhQMI1*L%FDXlj z8%VTHZr&q<08yUkddK3j&el}gXl7ROkJ2u#5*kw4E|OQQ3FNj^<#W4EQdav*PS49f zS$m`=k8~0_%hS~|{04YVPXLdLvl^ed5%aYL7?U?!-%D9~jGdQ>DVLt1%;jxB)BR;2 zj{o6g|FRzNT1Je=sa8Bhzysm-snkVa0X4igw2pp|mF;t7OkX(~?A8xGzkQ+SfN%EEXpt~0 z&1h_xd247KUvR&z5qlhos1KBk{A%>!P(W^Zcj+%Qq!LQ^Pgigm;KGV|n0KxzrNY;w z{}>HSDX9g?_vQh}VRF697>+&g|CfRfPv8cNO?Ljy>oUaTbc&|`tz8ocVBmuAwzpZL z(qML{wC^hoT&|i)bhq#if?l@8WoK z#~|D zbZ((~Ojw!22ctV^$t&atz@Y}}@9C{+~`=;myj__jJJD{d9 zeV#T7WsK~)o-+jD{m_(Yb!+*e`uaA1Zvs`x2Z{*H3wI*_H=f zKj$nM^@O`y=kh($s1nSd+>HJsCevBtPLdW<#WLmR&k~?lf^u>grWAVK+?aW?oKo9o z?+cLF+$qnPJ~dRY*}M&{Au&ok_69pKKkd1Y;Ra<{0)j$~WcG}rXJe}k@2iD(=r_vj z&xu47Pd)ahKQnkAu{E2da_+*eT))}g2{GKYQdc;j2R6Otj1&l;+bA-I6Rs8=VhrpE zr{^J#$bw5mQNw%k0O_SKV##+kKSx?62i(c!4Pq^5Y#BDXS}8eNUnUhK&!0;kRHfr7 z*+!Sam0&%rk060VeS~|5{;V(hWa>bmWF{hYZ<;H^$VsbZv>3P#0zW=9jbPt}ain9( z#FD_ZvqLucj!$|FG0hEm1j2fq<*@^WOpKo>^6lcWg&74V2e!Y)f9u7=zBzg+3$fL|@ue?ldnl7$EWR!B zS6NOjGhyt|~Fyq@k@v=FP zM-+-LI$J$EP13&{v!(8GJl)Xds}&@1(%JZMkUCMj{Lg!sL#Bn-N)0#gykiMrGocY= z3&3myE$Jz700w&Gly1V*h<& zS|Gp>1pJ{yiSd}1XRk}AR^~QQ&>QuAL0YDlEeV?S`er}W+W$uk0*EhGI{9>Dfj+(G zZXAK?$^r`;hQ|$xS6D|GjK|Mr&bILvX+}#zM;*UktOd9j+_S8snL?Wb?MA^2Ey0#FW(!IC`35+1$i6_ z>6cI%%mM44{1jYL#(b#;a;LM{ex2EFl-ARo5=hwA^>z<33BQ93knx3A3=YIdThg-tqE)|;yI4@5*H=dOs-Cl}~4+SxbK{q@6mX=MQ zaX%T+>nS>?S1ap2#*GeiNJtXA)vR+3)uTp-^x4s$|9s0M4$aVtvY-+qWEV_2@Y2stcaM&kNq1;lsS){cSeI`=uU9dda(BtJ(V9dl5UB z+#{g9e!$>LOW=rPAb&t*%c@6a!iDoAS7!c_muj_z+ zpI96wFlCi{x$A-AmV?JE3oz!98{w(0STF0JKiV=(ZJ;^hAT->sT)S`v-vy`T4b$6( zw^Ei&;04{w`p6&0L84JM=G5O8hyc9Y#cCC3gI*)BI=mC9h*GJ%l#Q6<=zaej zfaO6>**Ma;8t_A-kziSKz_IGJ0q?)oX&(vh^37eBbF_$ z1o|$2e^&MV)w%h-?eD6<#>a->{U>1y7KCs(e{^wRC6u?%^Xq zhB!={ucF@7&Cn7cfA6hyi&v8pJD9+&Q~DZK0g&$$*C#fhZ9)CS4tL6WOpyE#_W1Hd zT-yrYn53N6yI}`rO;V>5aOrZnnUacR{SWWbWA%&(JC}ks8Yt|aSa;aUbdaI60OEhAnL}2fy ztZS@z1o-Ka55EmRHORC%>M})M8>gf(j+z`9JF>c-mdvPwi!CVK263^(-mC%q}3`r0XE+-K%neNoi3R_1Sc(t1I9)k+?8G~NI5Z&mJ_ z>9SNqow_{h-zNP`9$=JQ``>R=^gy}f(m38|>gF2QpaO`PFAl25S1?9>Ez z(gtF(Ej&tIP2u1gf>rZFKc+}dSYRui2ZBR_$}JJbtiJ=L zT$4Nxk^JvrX)2HDjXvEO+WLmvb|xU=pVAvH3KC**AW*gAD2H#oEg&Ln=qTS9>|+9VSZ~ehy?R zcdYMnR;1>bU8%HMefQ;i18JQ$jj?Y+A`rO7Ir+9IyVY3&FR}nwL&@Sx_(|S#=Ywv@f{~>6}p_W5k$+|OsMeF)V z)*H8SVc3t}8{ZM&vg6lZx7!mvF^A>?%!&iJo6WfjL`E^0XuOCpmiz;LL8>jIETj}^ zZlg=Cw{0lw@lVZnxG?@D1eG~{)VJC*QZ4H<0lj#IvD)Oa|G1@d{o7ST&Z4A`Bunc@ z|3Y#a2`_5jWAreaH+^sc$p_pkJH&O5&@zzm^Y3e^SaVpl44qz?EFWxcs|{5nrZikg zcd~NJ9Sp8*>NZE|t8T!*yV$|!q?Ufdhhf8+`8@SoBn#D4zx*I4Ez#DeUOR_I2z$@_CI;Si z?aZD^W37++)UQbl4j=6scUv~$*lE)EE&GnZK>^}&0A`EV0NZ5mJrcy{Z;i<l!+gzhUq(JM+n6wBHN%AOXMv~1o; zfMjlw>OQt4_-iDTo4Xh^T+kU(T}GLN-I$;r>3LpeRO#FaF$(vs=DqyCzs}%F?;Ch& zQERKQ!6l215==tmnuW}vVJgY}vA;eCYDBIL&-IjzFh1Pq5>nl8^K2Ez4>k2|IJU zZRaUGH1TtD+)p%_!iTJ8-R;xx%bTg4I8H?bqYs5lXVVjnuMnlW6iq;rdPK}(QNa0O z5zksvWp9wStAszsHu4p0|0qC)>%b&T+>--`4$aE~T^@dWzL1wu z*>!i1Uvre@sI%%G>hN={VhuK!c(*tXg?RHTa<&jRtI;@-oT%>jgo8O{3L7n|t=NU& zl-|A_yIp;QG~KlNcBe}jyo1|~1cuvqPh`Mku~_iDK2Db3YLlyWBbOv(df}BaM{&_m z(4OW9Ld5U4z&(gF-QU+wQ0j&Jy9$WZz94d$Q;D8mgy~7lc($in6dgVN_)<{w0Pl9J z9L;a?+@^y;shpGl{MPNnl-5zVzR?Z$-R)baM``FL*t+{;%Z;8z6sqPN;zsTq>MJZG z)vN1$uIyB1#Z=A97z1)u`9@z}$H9bv*64Mwmcn&+j}!2%>2vn0{yOXBsR1`^KQ_du zt}v4W)Vh;+$A3E;*)UX|QbF^Q&Gmeo5DD)LXgF)%ATX8@Kxiw|_%+?Pm$It#dRpZA z{s-ByP;Ln$nfdbY>CmbWzZN3#0FHiu=<=V_zm zz+aOJ79Tv#G*In=v-VmU#|Pd9O!|7ruiB-&8j(aNKP-i(LR_IrXpzKn#2+CJCF8YT z3*X+^1d|Yxbr+&|e#|nb41)1T*Cos=4uzyz5rQgc9lSk}IY%53#-HycO_!9g8mZ^p zzHmH+XL~GAM~uDbC!&Iy?hejKjkF9)SKcjY*tU+CNpzn2NxlG{AMP%%>dsA5YWdX9p9mJ=WP8S zXrNk}y(5DRMP_J>c zXZbhMDUu<@yH`f~ZnUqLsdg@Qm#<$-kum0za!uWrm-;JxPmE_kU|)UVY;8jGpijt+ z_q>{gl{^0Lyx$Thn#gEgCGuApYp&_*(2grh8Ry0;w!OM~O}*pXFf6(!2G23@>RrAR ztgeZV6e3)p82`BbGXefjOY1cBcV=3v@%T)EN+9Wa$uLF!EkV`KOenBn(k*HDvTmo@ zQL>l2P36>|ImBH^=+%Av8N7pZpvyn)GsNZZsGiR(S7W{tkjf|(M@YyCNTK1~!9Ul~ zDl0)}#xjTpNoL|B8aEJ(jpV8|4SXCbJBtMiMOkv7^f;LL(F}aO`bXvG5b_C@VGw0C z*?T~KnEJ)!Ge3fxR`(Qq<>Un-2=v#=v$`m&Iy>CiD zM&##;U8#sbm8irrsCTNSZ{+VbNaRgR%2Vko#&tg9N-V)JG1ES$LR#g!U0LHbrw|6j zSqBku+eUTtZOd1tMweSRCDx1v9Vi_UkgM}w=f-CnP}&5(9TBT0cBJOZxtY9#>}GC? zQR-4-m!9nf@_Jd^E7e+I*627Ug&@=6)IgOB%HFd?@uO+xeSEuhLjw`Fs*SZ@P1qM| z1bM7VD5U(IFB+?eX}z=Fqg|~t?B-odkDOL>L_0_{^Z(I6K|20= zpBJU-;J-5iFVll)1Zy_pUChb%uq;H36DLnz)6DqHnH$ zpd#Ya&(*gaGbN-77D?hm+FnuY%c_|guh6oH{Ma(#bj2@&qq`R(@{y@01yff73uTms z#@F8cTJ8Nfm4x~h=q|q=Xo5|iT&TAlsGGR)7*h_t%AjVdC-(5F^z5j9icVee$~`(2 zkj&Y##_2ncTIwz~iQ67FE<`BqpX#E?HD`0OCa0rQAhw;`p}EZEsnP?N${CFk$qkh) zquroxjB?%KI7~^Cor6DeyLLK(5-Cwsa`T3=rND<94*1vgv1*Vr3Q~;ZSz|=kv^QeN zG=KEnT{j}%2OAH6%$l5{G&D>QIcZ;riU@XevahOl!8~kFa7xDB7wq%@qwqkOn&ST^ z&)+#>Y%fk}i#OPDSV9itmumS8byMTzq;2i|i5Pn^4eQZ4YUJC{*%2k45Yk&4LU9P; zId4{nST#q{p}n)9g)R(sZ1LY^IQ<2_;i27BsC}^8Ze$7eb1V99zb7jD?GzQ!_jFLW zHtq+$vJ!8Ad97OpPWjG1O`ZJaS!qqNb|OsT3w9M=WyMy}I$8;(wVfZQDvK?doBHp& z$~f0=H!vLbJ;w5Orlm$8BKx6+oa-(EPYZj#%YStYQU00zAN=wAs;02RIxf6QOpfs` zIrkA-EH{7NMPr>i78xe_RgWGRft_`Uw%_S(Ir9iu_ zv3O`Jg$Rz{7*liOV6Iru9%IfqQwN!SO)K(yYh-0cPSAt~Mt|nlDb0-IVXj&kE9(uP z&B{CVpmgjRrn~^{_?Y_bQz1zqsC$n6%sVZt?{~N6SYz*z{l@a;T(i{;K2i36wk)un zJK(Jcu1=~#>+5qm8!Ho+?Sd#}W*F5?;pl8h+CJaqE~B{?5nfS8KDFn!Foa zs8)M~)R!p>On}fcQs8*cf>@NPwF14m*{WQ4D`6*Xg~Rvrdf?)S`CX?R9EO8cb)!z0 z)h5_@{nCc+nuzCeF>=#*H6vvN2A$~kDfV-lh_($o<*E!SbjLNnia+ZfB zEB~lUz1H>a9M3f5t04c=ha8vjdKNp;crn^8cC}29B*qd#(EKg8uFHv5Ij;3a-`6Hw zmYeJ5>!6=)F?$r;uwG6aI;z1Zc|E*lQ24<*qWHKvd zZ|rZSw;3PaGrR09()KwQsG*%r=XmIpw;% zSg%bDZaSnZCz}NY`$*6ITD-UUAOL65mg8>mtN2!J`v5FOUbLcZpwARGDPE$$V_fhw zpD?1IFwH%5*PF3#7p1D~)xwCMmUKw%DLdD#?nJOMrU%M~dI?J!`FEtenEG$_x?vqx zoTp;7_tZNN%8w_={o&YogXVH(yN(`Pf89huj))27b(;Lr39*ftls%{NNT$$ZH!{4X zP|rKedrEca*Yxbug|pQGX9hAKXAIz>j!T@JI_F`|Iu>Bkv@uABS04ir}Whyf|d`g+c%A z_$J41E^%yw{>K9`je@6ZL%4t*S+~JOmU-dW_zRtKtF`dUh7msUR^69YB8JLaqj)nu z!h7bOi!ged{Jm~tKLLZ_xp|eu?HDcU%elRL#79@kk8@hbLkTW4M$y;LM2FwbCRq9o zHB_8yuyNbG-nRwm?_ptE1+tWivq%l<6N9w>+@M`|#b>Cih=vKk zi7Ppo6?Jn%@+Qw(8C6;vLxsvGJA6@H@1<91@yJQgrpo6VndRCtmT}Hcsk6=#MPk9j zkMaFRn`e`D1>*hg=JAcZBxlI2^9f2s(& z?gt~Sm?p2Ln7yma+d;wOXE84v0+#_S;7si=`>W{R`~Te-gKA!f56(<|6Pd~Wco+%%d{)W`0=yT4={&Ej)IH!`K z=+)F3OPtKB;6~(1WpdU(KR#`TT1GYhISy^cFD_rcp)?>%`e4{0HjoAGzw za3GL=m`Wj4s_PWA2F#DSnMK#watZ&xp-oy;F@3)*Szf2Ko-C*e;ggJUp2uF6Y>l}w zKzrj=dF!;5c#N9z!{U5+sfq33>oZc>K=;7A^XBB~+*q$}6-XB@YxgX<+@!x8`0`wD z)rmaY)fB(xbtml(cO`kLdjLKJ9}PH-Y@Ihls<*G(z6{A}H_}ShjR8Dh}b%PI1R|ISt4>gz! zoM>OK2(DKImy5{qy;G^0#-y!Qgc_ml$cb?Z8gQuPaZT|j;Psq0_ttPs#r3h^CP8;k z4uo;ZG9@S3KxU(&^qsDkwU5Vw*Xalodm5vJ z2f^~!I!oNlAEo`V;#1R|=T`pLoH!f^I+AzmpV7E*%P?uT6JFcJh^q3-O=IN}`z_+e zsa7-pOx)z5bbbMS4kM<>s#+ED`G=mde5}*`1ylW0k*!4kq5`-RKkAvKFAjHfxb`}9 zL}mQJW`Mg$ZGw#sl?mJYxC-kF0KHL1YQ$hV4E}AcZ1LNI@Tx@I%WW|wW(!E|qsQ)# zl$$x@Co-u|>g6w}aIMkE{wLd@PrXMHt%J_yEwnX_n27uNa59&}&=WK7P71W*U8%JxGgAdlyEucD6_pJ>J10X}_x!mK;VlufJB? zLd%IOSEuu@0@iPC@By7=n+yq9uPADKf9{o3IRZ8mc+su2vSs>$#kGe2L)~}(Q@#Iz zpY}v56rqx2r>x8-MYiMUSV`8g_sZcW5gl%3*?Sz0*>P+#60)7cvG+JO*$&^A>bRfB z_xl%o-;c-r;dZ><@7L?O_lxcRqR$Ebt~0W8iIYd@D}_9_<~*s72IgX5>7uW7Na1U1 zUg7HN{lbS6RtP^(JUQzU#nokqNhWp`-tN0?-7wyFR4i$8Ts{+xr#rliaXYkTw_+3) zyA;alo1a%CUF%#D#%$dLA$muu)^Tp?9=q{wnEBz=CklHe5(;KtC$u_C2}qLf6+Q3Z zwNB|@_afB`k`@?b9xR5ai0X$QOWF#7Gq-)X_08+~BF&ld@Rr`uqjs+lr+{4N8}ngq z$S-X+C6fH6OFMb;`Q4#>CjRBtG}WB7*Y--=uJFQoLO(Nbp?uD<6n|t^(NRI_ zfRmf_4VKUQ@YhRi-@jPX3$$(LUYq~i&MKYSj7H>M&gP)c%IWJaU*2@hF*@7Fw?Wx2 zG{=$^O3GgYbq9R1&Pg7419M(Mha7VEpNVf)IcB0ac|;>8AEM+HX$%l0a1a+IAbsXS zoxbe&=|tS!eM=QXEwxTpo^G|s+v*-m&Y}G#p05Wr3Jf5}=$zKjy=Qe^J+$ALEnc=< zVn%BNJ6_v~#FTk45n1M*CV&}%5D3F9B~ndn^X-&-=XSo9P3+|rgsf~lDUq`OzL!Ln z!CE-2hRC^wt&#G&$hwhAt}=@a*0Y;mzTa4{P?ZQXan@W++7 zgR{BF5oEDVzb4`(4;6zJxQy`56Q(JNi@Rb)E9XlhC;y%8AbGq-wP0Y1B@d@mq5gzT zsjW;MosfRq#$Hcxhix)p=Yr4^E5U#DG$xoM!|oOt?E1fBR9bunlV&cHs-oD0(yC%pYDlGZvV3dy2Gj!!0CgdPI-^o*BmvZ?AYS=^Fzi(ll4m3h-ZX z$M}nkL;5YsOd))+lj)`yjXeXa-c*P2K=igQ)2o~*I8Nm0R^RPcoM#%cx00}gHK~`( zp!=dfFJ=*>U6MG&%u~w)v@(|*XHrWsvFdx(a*p16HeZ1ZTiWil8)OIdTeSlu?kf(D z?tU*f;!R84CEUCgwPCj{y6It0S`geRjE;DN7glOy{aP?mYtj7?m$9I)v)Tb)!T8@T zNr8V&ZEiE>(Q29Ja4)!&yW)s7cl2o+4xd8;cO(P}#fNSga>e8fCRHO zNprEe5c@eCk$v)0e}aX~w`iA98j~R=p4XWo$i*kq?v(>f-M_rnzE>uc+NmjWucYW8 zFTNS0`6LyYA~bx}+n0(lD@<_7Z&k{8U2r4JYlREd)7<_@@8bwhfTmqxVAXZWCs~l+ zQ7BOu_GK4CONvA9&#s5AABf^{{Do2i8!qkztVFvL&8&q)*YTg}vMzmMST;q^Czaz(Qu3Q#@s<{!4_SNloBUuYHZMCiuHQL%z|!mvuHGt^s?L$zib}!&wfWDgHT#@w3a6&l{$|ONOCQ?vPdPuskPE zo)5e4R;w*H1y(&CV_;3CLQ{RJ>d1m3)}k&6qPBV_GXZLRBf>%`-H=-gDp6LfTCK7oD`Z zzI`uVZf)y~iw?2Wg|MFHnN0Yq!Bj2_b8ndcN@!%gyd-R9r@PJEvu0{R=A?S_SRsSK zPTdvzIyh67rE98VSWPuRv*Q#?M~_vWe{sUy&r%!DIB|Mjd)#mAqWL?DGHJH51(!zh zb~{D*`BMV4=H?QH>fk@?R{ZO<_mznHa?iS&T*WkXO9wJKYwK6$gOz{uI)7ZqipiQo zFx_wk5w2j5M79bLy?fjBt`|vIbNDh}qc=6RXTNIC3+t}nAdXU}M(vm}Z?Xa}Vo_Ck zBmAqSjSmAixu9S4Tg7bxLhZq;CP#Ot(vB=Gn%%LNwPq2F@8)1Dx{lf3V`BApS1;>0 znaz0EuU5^G-!04PpvJ#WpU8w!Po82CXs8zcSF%K}sEq3h?o;&mhs$@~D(uOS0}G1} zMQy#M-a}^?e;w!ObPvp+Wk%xXlSlax!15Exy~(iZ_N*i?)g@TWN~70djnLdq)zv(o z|Aomw4?27aHWtN(m1Ek&HZ7t8`mQnWJ(^Kn=e9gHxj0*5M3#n4V%CB+?V~oN8FviI zD<<}@;(~aZ-dQkNP-^bMl}yB%^h?{VdQ+1l-b*czrr|jFER&UkkJ@+L)?KBNEs4lI z%$C#`i4)|ZD-f0p8D5k?=Y>`Gow7A)@B zvX6O;l4(s!<@T|edGnI*nLTK? z{gunaGO@)oYau@OYNaQqU07OWkd5AGqxD3_~UmWsE=nnh}m4dAOvwDrt=z zv}aFjOEt1wG1ax2hGx8Ol9dX4`A1VX+)xc|W&; z^sHS^p(M@z=}9;#RoC3BO(l4^B@6P@9&V;T11+%9Z#glWxGv>Zl5D8<)s?`f=9qo6 ze4cdqSgdWQut>Fi?mH@Ws}i{6f?A9Fn&pG-RpE=>Sth2r96WAj9k_sL?=vy%7cg@6 zoJ1@4CW~Iow}L%=%$5w5gb{1mdT;OTZz4}i9ZWf-LpVZvF>ToD%v$?3-r7EyXvzH%J<`GFeLheM(? z81XT&pRpejT@oz<1Z7>_b^`5pJc?Y4C#Z%!oac89zR8bB?tR<+e&$$qHx4-x)kTL- zSaa`*xaG#G+QqzLZdhQ?+`5e2yX(lilFl*Y>1FoQ)Mabj2^nONUhonmdEV;aXpb@8RhlJH2=ffr;!RiQf86t zuN?nq7K<@X=AGIXdYNnPKXh}N+P(^H7>ljB0SRD=DscZ^9Gc3FGFkV?Y5LT>Y#v-4 z#!KkwTlr^YFQH1H*LbJ&9?M;L6$I|+ZN6x;IWpI?YqwT^7?N}AZR$dM&fLiDwbJ(N z7p#JOW9+kHXotajGwfT>D*S1oC#rUeZN3ecjZaqsbXh2AEY6nap9cb z_woI7mhao4TFtx`{N&OI2s6aUzc+T{orD>m#ExQ8wO|q@@OvB8BIJK7<|Z@Oi`I89 z?_TdsF+DWBqG~oU>(>a3$Oz#=P~g)DlZammHxIDha%i7?!S05)u~ToKTz;qME_Fpu zX6ucBTs7m?!*|~sk4j76bj;k;4F19f13a(IcM6rFR$3MJ5vZPmB3I$u5N?ngjio=S zyNxy1Sa&ZT8Pwum3}c1uRqL*NPgD9}0XGbX>7_XPXpj?MSn&Z%T@IVpca5n;VEJ9U zm1gD#;!$bSuNF=Y7MpYm^PNA!iO!1&n^1-F_;`MFlq2_V^Ea`{qi*((>WP?4UzG## zN;vRB7G4!MM}~g3Tehtfk4|%4%DFs-Sd}#QQqJCK`;sE;RuJf7jb8U6^h+2#Wq$C1 zg`I!lm`tg{OocpX+I|GK;*;ERLU8M=Ost9{&7;`K^E)|hjtc5VCm4$?^jrVP;89jSKvuro8cW?*tRCSk3c+6E;lxm8fb}r zMAojI3wU~o0Vr)ZCyCQ4n%Jb=Y|i{f=8^LuGJ-ovdNHQrGvf?>*q&?$A)~7O`;Z}@ zy-_!Jn4)*Yg{<14u~8mJ^ULN}CtA|Odx9(I z2u*P3H%k99)3vP7s!V=nZ!+i9y}fl;Sd51ol+(;q^0&52G41z`Kz=qKzgV7yc+l@u z6gtJUjrN|n>nGA%Fs(4tH=MBOUP9f;@535;+m%|QiaU4-Tq3Z3 zC!~xAR9r#^CO2JdKw<|@=EV+r#YYi__S(~1h)UFjJTW>(xakws18?CX_b&!aw`TV^ zu^Tma^Tv+2+srCj@nD$P2$Mng}8f(}!crBcGiAT`dC|>feQOgd)}00?l^3pB}Yv z;21!MDS&-fonjhL*j`C!oKxFc?NLhlz&>mFy}aY@uncetz~g(P0znlMoQ)Xc^w>BB z%Jg`f`5qup=gYFPLWktP^k(!uaPoa}@lD|KS#{GsX2NsrrpWQye%h4Z;l=$IT-B?+ z!01MJFQrsYdf}D2&^(mz)m*i-36C8K7u*z^Ymu*MnOA8tj&zPuJtAihiWL4{Q2{w8 z>HWZCXND1}JuRZ1<>F-Azx)a@kml?!o*7zos#i>vwwpVf)&(f9MGMsxCzJC!2>2x8 zzvb-sx3++VKZj=JmBj&fab@X=&kvs5s$ znoCX2rx|`u`6dD*F|1I^n9{h$KJL3$Y;;-$>ayyq7(1If*__H8` z?+!jzldUOsZwrcg^WqB*+En7eb2>YH?MPh43pcMrjg{q*)F*I-;+d!T<6j3hA-^5K z6gw0iDjt`6+r1fhsJd@Jg11CRhuixCSE>$*eH_L+lfAiUe|YN5@9YD>0Z++tQadPw zvH{6;i%4WW#(Q83{HGoy?41^&CgijJ2) zUX+G)J;o}}+_oQ2pBV3QJSzJPjb*`Y7zMF8XSvXxi ztL`rpBU^fyXrb%qpx`Xv@(jlIyS*1I$w}Ms0~84wyp!~dPg~D*3T`ZC=yUT~N$~Jj z@IbY7m||X?f?YrOb7wTW;kwVG*jN=Kkw>v+=>=|1PuOtUP2I2cOhDXy zv2XN!+cV)A!@)m{;EB}CBZ!DcD#iT1?;h-OC`jGEffe6v2ZZAn5zPAKPp|I1q$+8X zbm5GM3)jl5zca8=*`|{#SgW`MK}o^(8rkx z7?cs;y~60ygXE0~(z8uHCxm~467Lwb@WT}|HnI&ULYRdphdrag*fz!uk~kN{)fpZA zeN*HHCa!fVm-b8Ln3ujAVHO&A*P6W%8udT)1gXdzd4{Smv5Vz!gtH1>&kDlWoUl*m z04qkC8~Gb9$I|4 z^z3dx2!%$y5xypIVh{j!|FK&M6@NLs@*}umKHEl(mp&^fYiaji-RJ3tT!fgPl_u1{ zLudDu!OiZ_UkBLBUxF%flT!f9AYx9QbG4*r_YSMP?10y5X`_x6P2 zRqGKpR=A?Bs-vax2~CgEFt2e6!ONOsGK+HDq6?LA&Lgh*{Ax~W@E#wD*FsU z#R+{({)ibjAt{U-==W=3A7iI9IuI@~;#nV-3!6MA$Y{IYmu3O@MQPM?d$g`GU2*SO zW66BoCr0{othG8Ti;h1lW%c>6=5gJXo9wQA4=@*f5Ynsct`xENFf=N!1Qc-t!`A5s zZvql3Pk)l|=BiZ(9IFkgS!nrF2pD0Tk^(;tD5H~*;_s3w@Hy_71yC3QGHY8OL2VN4 z6=Z$%L*^AI3zh8kPW1$N3mEsn2zBno^Zf`S;)oLBM>ZUy^Q`32fgaQ-ZTJ1I*SUCs z(W5@4FwaM``eb>Y5bKdS5L+(`0{fLyFvAxBdquS#ZC$#?yxvAJP&5igI6+1%SmdT& zI{C*-o~#k;xg%5eS7dtql!f|Pv;T2CNm2yztbn7ZsH$^rj zQ(K=^sl;#UH)pBdN8rBJMReK(m%bCP8S%qu1{T3)qV76F>Mz`H@%){m-k&LiPuMqW zl0>%X3>|xSGz4RY8sVa7!~iqFk3p>$1b%IOG_?sYk=_|*wezMN2x)7HpuaG#Y#4=w zy1@)udd5(F13f1~G{rU(g`;p2s%ChXR4V_wFm;gfn@C(XOiahjg&Ldah_($oh! zZr)|AkgoMPAxZ1=#+w zVos3y9l471PaHzKZ%^0V7{ny1KyOy_+aLXEu2P2)e88VF^nJFFXxSaXO^tRAstdmS zmzF$3zh!SF>o-QrmYY}5`}B!1YGGeimnU8g1DPf{s=`Ow<*&1g=L-~0n(>t=CDX!2 zwf{<(m&X>lxvs2!kLg+rj(Ed+{?R|V5@_~un)Dz$A1uC{SL%c`0uyl;-PsBv(&gNZwL<)5Ca&4@mn#f^E#VtpIdrulU=3aoFhR=*HTcJ z6i$aNo3NCk2i^5uKGA=T@Aoy>fTkJ4^`MTp{Z>o5@u$8TXgQfLk}A`00+TyebU_Zs zr%;eLvU5AmA*4$in`Umk@Cx0M`4`3a*_Jc7z&)hwC<()9JAGv&F}licw0HYlvc8kL zT{=|Xxo4c(Cij&Bsay#IlZ(+xkC%gganeS8`74<`Wz-o#Xo^bOvLdXG_ic@whA6`B z{PjED)$(a88ca2`X13ggCk3#BCMzP>^TG}0bt~mAk(xk^^rMC#iGKEjg}AzGiL}8g#Rk8!l`bT$GtutNx>~)Vq zZ(Ebw=!sCG;WibubXH%9W3Z4f~3J^i_{N&T_`*fq|mJ z43@N~I#ZB#cJQR861g|)`=1yF@YJHYecXN700w8csQuzwJ}V5TwU?-)x@!gqydWcq z7^r#wE?>^RHwG1rYw#}#jabP5uJOQp)t|Hhctby+0BX}&7nBs;np9v95A{o7!qGCd z&}UAUXmuYl<1~-=f9=7%EPjkr7?>*3%e{#^f2>xGpsdGR{OD%@;+~^_S2c7;^!Bfn=+uvP-Mug4fj*~v^`p?H#LrCA4A&z{jR6{ z#V7h01(T~OK~UiKvfvbk%#oGT^Sl?b-H!O3@%Lej;myqb+GQ+FB3e#o`lkvJ?XSB2tv~+s&;siaooUD46mg++u2_+pgf$XFZ3R$|?|*Dt*nS zoxn*x;9iNRjy+xQuc>+EF5?%khWEe|QwRXmhoU1eK6%ptgmR#-m9 z_hPuPKYYhe{3AVol>3efX7^_D@mcHf#SsKC6FX>R_td=W+m!qKxDCo34_t?D6c!)b z1loEoZ+*B{#UXz^}(39mu8#1N7C;N4xm*-!dYo$qIRvlXl(3b6sR*wFk zMqn87y<#h!#~1&ys&4^8x5#PVDD=xKf%3vd1g*ck6~}kye~KAnvQis70^im_^jl)S zp?KS}251oE3iY}sKcS-9wDhFvwMi8xUvCPY+QRy?+p-ZG@(uG;9mX#OHrUTxu-j%M zBj1PTqzs`3S%r_`iffM>7>HzbMl7@zFQ~2@clpG8Z-kpHBTByfr_C1d&SU63i_sX_ zSYWo9oA6KHrH5Ik0t!O2J6%%9O#&r{{Z73pZ|bFR-M3#gk&0zOZemN?yo6uIWyrx) zolWU3dGoyU-y#$6x&(lo%(%yeOKV@{G%o0MwK9YfE$mE5 zIy|N#$b}Pl_t*%HlG-0=dW-Fj(TeQlB&~06Dai9($`Cel7%`NO?XW^eN|w0NLrc$PRi=(s=_EzX7rS^sffH%E)z(F2H2g z1%Qs(+Q0ISuaN1G0A^F;%(EF^kQw@n8ojiQj+GwSG{mt8<%UEM(kICzWOhW?3s!q( zPU`6?E28MtP0M2p6ruRIddw^g#DEg2R5s~wCwT%pxtMC&+yhJBX{9rSmY((z%I%o2 z9iu@<1w2Rs%?Wk?JoUT)S#2rZ@&cGP-rWh-u$%ds`EDsS-`4rmM)x+{U2>{(U+WF99) zOu?6)xh~@KxyQKD&*EB6e$`^TCm7v(gs;^Y{_dCD-(1e9!SfeSP|3%?f-;B|soEgR zWWG&$vG9%pD_x`TIn~e7=#dY}atUQgs$|4~$p^b$AwTMvbBk6I&+@B>}PaS(Dpd`K9 z=>3_o+Ume}-pxzGLYRWSdmAP_aTBX@zdD_!-pE)d8V)Sd?9uS!1~Ef-D00%|s;A6F zXPebhJ;aG6L+!`?kRj=C^=N0&}3^{53GtF9C)}xEn01uy@>0?j^`NgU4n#N%! za;X-_o<^-c?rkl_;(};j_4pwp@OoXhhQ&S2pd6Uk8yukGj?w@31c3c_6ngF#qJkCz zF6v@B!JPKbpwhT}MEEe1KZVF4pFaTCtjmF9$A#*k>;2JifpP1tOa)iPm`08>#mxcr z#w(1Qd5UC*&kqu5p|%A}L+LH)L5|#-zlV?Pf2ne|AvjDCSRjaRm^l3nI#fj(NG{*8 zy3IrP*P@2JR1E$2UMf4DAO6pK6<)+FC||rwr&L78bLikNq-uj1chsn)^&j19z0{s< zwx|>$eihn(I*ek|LvkSF0?|8Wjd9#BaBsz+yr#=gH`!|*t(cef6gL%eMol99f=AXc zzkq*Yz$P?#ur+rOHo=^cTXS%rW6Ku0i}ia3Zs*%i=mhTMwOaxA;-_WrKj-8rwg9B? zQmuYtoYF2xiu6nRP?BB z_vsfM5Dev@oNQ#DUuUkg@~)@WH(Lr%L-?K>h)$Dji8dRfq4k?c6|RLzu%8GS4F~7xcx6D!Ci+lVzj*Fr#V1t&|IQ(14iHF zujq$B!oTrzl8Xa&l~7WKcK6QFl`qTg*H5o@aZ!~B@rWO6YSLh(5pNV^k^WA{5ERP_qIou1AAp_dRCGUE#Vmd9PJ<~*%0hBFI9u~PDuQBgKqsJ(P%L!tqSliOpJrtfRjVkrux%7fc|)QQdy9I*{GT z=<>^x&mW=tMMrG)7?6ohhtE+Ri1w3lZ7*MOI`p9d`dFu3UYudmgx-+n^fhyRNd!Pu}ZyC^m`Ux%-I%E`B)l zj3jB#7mni$vv1VAm@I&DR{(9t^E$%Fk2n9qX@4&!FA1m1RLFs8Gc4?GpHG*aL_aZH zfALFVx3uAcCGCNWy}tu0{x(cNBz`@vCkt9y%R7>=$#oVGJW2`!qEqa+k54HOYr79Y z(IuE-Tv^o@PJ}YX(QS?Fi!VU3t%D%^A@qQ4`G0n6Fz$;(JCwLe#|89${*kM^A08Ci z%DkzoZu1mbi(%{e-@i3n0yJ}K<^Ll;zsrpg z9|tt|;@z|1S?US>yaqt3jl|t_?5>%d)s3w9$CVO3*gqS0ShzYO6nN0;D?LH(q{7tv1W z(eJn42bA1J)n&s8QT>>uaKWWKDtBs))?5DrkRy}+oW$e_1;V+0q*nyN`)l!MP#H+_e$gZ4aQ>>-F5u1$xC6~hxII2z3jEfPGochp<9l;>`tfD{busl zOvIZFB-JDI_eHGoZWJ2^2f6zR5nXxo6*?O0v*CH#ylA+x>5qq#eb;8} z`K~~hF2=7kP{Pssa4)=~tGc97+Y2gLI$VXa)euf?%8r7Mj$2~0j0{ILdwDU^zHJg?GS2Enbg89HD_XWs< zn25IZUcT^0Y(iSk{iO!*|MGwOC-#5Ix$*z`Ki?M=#DvSL9)eJL`#AhQ>p80a^)!c) z^E&hAAj*3Z70y3HfB!o~D8vm$l#J*$eX<{A!5o2*=qV8YIP&l5IuN|Lsi$V6oUDSQ zhNLM`SXmBztT8TsTd+utNY>b9cRCGGwxV#>uMn9kjVah1+pV{cAorOmg6)$!Z_kaX zKBU5I&iknm8?8f-PKqILPCr>?##6DvGV%ib35%zKkT~RlFj{F0doW4;4%6zE$y*%Z zlnRVeO7f5N!1SkBTq->NOdV8WoNx$2d+^IUJqJu{uy|;{g#-Jf;vvX?agEUB$D(vw zO*wR1X?`62Vvwtp(Cz)QC3m_&Zl@pc_`3_>doRGD&awYJaGX>qhsC3+pIU^|(bAbC zrvNZ~&;AuX$}OksLZx3_wx5{Gp%a_i-v>qakhIwi+UzEx!Pox9Lp*_Hx?kr4fl$R; zSFPQM>NefJKp)uaNe#J=p?GLAD)sPfJIC%1>W1uMHIP%KtV4lr{8v*Sm_c%< z;-Pt!U9;Su}G!OmHZ?8gRc;3gnfdXqlh0zgwE&0J;V@2b9#T7+wBrI4wlTIux z;~0Q)PWNBZsccYV%%8ePE>;-31x)oHfE?-R{*t5SryW0Vuc{ZwL;bXj{GrlR1OW4d zat4i@<-#W|(;}I4#n#VjgDsgs4(#BiAgOajeLl{xm8e6Y*Qwu!Xd^{`T@B^nb!{%C zD|pDNGW-slPkUcV>_46z=3Kw@73S5qESQ>9o|QO2Di3_E&nZzFONH$VCbmA_ZQc(6 zH57syWq&UN#p^N3yS_IaHM#AV3aO?b5N!#{8^5UM4XaP-2!CR8YJFugxKGSyC>yz5 zGV+Wrz#G$Q1!vKTu?8SJM#1`LHFo1RJ4f72M=q!PwGTGw0L*Sv3`x&pw_@@xx!R_J zXkGNFMgws4+Z0>Q(>r~FTxG*wB4X~1>;g0~3uxk?lEhlTue#vca1D3FnE8RO-WueG)Wq5L!??RC$`h$~jLPM(HI} z2Rm!1=>pP$MSG-D?jXQ^M#zlS=g zjAMpqT%uqidB_LT>SMuW51at*%TC838We8!WLHznaMqs20kW?q&{ILUDM8`N^W0~- zJZkPt{nFBa-2}WRD0c8VSbg`!fS-JkKR!vn#=ZggVPyDAx0SY>QOd)b-KWVZdZP28 z9DQKjEy_AW_4=NR0kf70v&!>v3chO@^A{n42YFgUn1rF4D8M?om~Pw#5E;t*ua=La z=W;RgXr8Ciil@;$I~U&12{E}yAwaC!mAnsEg2jb4BmBI$P{j@qliy?3_Q_KS%KJ_& zejR=`x}UY+VR#=WB+ZVpj#im5cgkfMx_#1b=p2MZ@z?JQs>{<$POkM%yxZsVVz_-O zBu+*_&?7-JpD8AKWEtl(20Fr=&61igRXCUXm z&BcG%u5D85c(izCJu|2^OT5RmkJIZPDd18J`OW2qnAXi|u6^b@2c@iYNWN_{y;7qH z;v-9i4WiTpkjDpgNbX!wIg+P19D8=(5l%}^6AoRacn}bh z2D=&H03G^AlhkO@TNNb5L-&tTw%=Ja^2|S;!|@jRy@D@aAP^~OLKJXq!TuldeSeO! zP|$DWUn;Md?)3UDUN62tz&mNQl!eDtf1~t0Kx^+~>WVSIJb9F~qKP1w6p#;?m5U4* zC7IUgFeHpZnD^Px^g#5@D>u|7%|UBftT(u4(G*i|-sk z3d%KtmTRUprlPs7s4XRFo$zF*DA1g$jdF$IAIx9VTfgXp$-?pggYa-sj!u^@VG7hM zubFo#zdC1cXgbcs5ejcq+5+3n#6MbtokCW*cl_%)^o+Q$kW?qgN+_TQsH zekMfVrik!(C$9CZ@ivhEI{cqLsEqQf=3?op;g$nJESVON>3Fh z4#9Z6npxXx6s1=JU{}=HXA}?prwpu#4Hvl1a$P8RI2nj`uEHGABvR-k=V>P0R*qro z7aS%F{rIQ;UmE%46AIx~zS@`DkAXFaY$P=RwB}S%`0C{;^*cZ#I{|&> zV}9KS2<}QhilG7&fkb+h%04;3kN?)l8Wht2!jmiqCL+vQ`p4UyP`?tQXOsG$GJx=u zjd1$MW9YV4bLd?AFh@*GD1@R(A6lv>F>knzc;$nA$Pm!T4*{?xWP@ z0jiO`QMYkjBt#ona^UbNt0k-KYvTwYN*{#22e90t_}-v|uMr4*YCtSbS~^W&i=;pE z$^f7f;sq_4&Zi8X)QS)Mt&G#OD2MYsTY(6UTR8zRJDVr*TX1($%2*(epSx70SSJm( zjwym>Gv{{9ku;Hmg;xjR@pe8SNcP2vClKKEGGvvKVSuPW6}8SryKqOHcCUG5@}B~M zv}s&Y-_1ddKCQ4&i*E#S`zj?a0+d4NbD(bnun#9`fI(F*e(Y-10jM}mbEu0VF57P@ z0QSg!_@6i7xupVXBl=oq*Y+*w)|<8)P^Z)Pe^E#!Zs4L)x-}1==xQ0e5MX+H9#m!B zXGV{KtW>^iuy~00OSO1%9{A#cMo`B2J)(c4RGLuV1>7P5TtF?}5qqaZn@aoR=WUNa z)EhUSw1qF$0lg1W> zkJ4ysRt8G30EFsVm}=uq`Pgk%m4$6{LD{^P=&JEWRX?1!cd8tp_F?)1UZc7}Oe~lK znG%JusZs@A*e$}W;&A(hVb`HKnEEpx`ASNz5E7T`d`ieleOm!c!INaokq{FaQXD>i z6gR2vt5=^9bShlYKB!?OmmZwjFwB(r;0it zV(v!?)xtMsT?2vi;=@|1mG(zhU3rDE%>TBm>3qdc=tYRM!;vr-FJ!q@C290pUJ{X>%lsP??jwbsm{6cZ1kk(7cLt}R^mB6)z= zV45lO3*yi7{b8bROZjY~5d=+ZX+zu8yoF-MLdc-{AClEfAHfXY`T)ui(ux;UdWG4G z`#7Tn@GQE#=|QIgle0=fNw|a{{9^c*-H-PuO!U%F9;4ceCl%?r(`1awfD#n9`D^F; zE-ndk?*uiNa*tq0F0mya+O0Ur@98ReC{&y?QmfVJnk;4o6x0G$>O-dzHSVZz^*iQ{ zVX4c7WDjd@ta)BlHmI2Gi4_o`sL-n+Bv`K_NCS~sHR?dg!7ct_MT}-{$SVa6;GNn8 zVAIwg)J9mauV(?*>G0>@*Dvg!%^IHhj2D(RssS4CB-dZCM9(^;YNUN$l{(QdiWJIT zGsD{iGjGvRc{~fv;czW>&Nx4pb)2$Q&z0mY^V6~|6n?vDc2xJvdFC+A6KIzfe`3;X zdgOH{zJ7HQFDdQBKNGofEo*OQcsr6%zv8B^GuB@V!+%>bc;1tavemXiIa+$ z8|C4ksi;;>I5=rL%NmPrOI2qq*!tKk{&fkYeFH(Lwu`xVtHJ~?0*YZNiFSzRiyNS5 za=u9ENFaJeBeGdQ=$uRKV(B}q@HX^JT**M9b0mg705O(s*AuIj0n+ZBr31-$H3Bkx zHPGPC(64>47%|AhC#?W0Z|BS@br<)qacSQJiRS1_jTcCzceR5+!>`-{Bn(XID&dDp8%W+BU%Bww{`Co$Ru(OSjmGU-<o2z|GpF2?(t2X?Z&iJcdc8X9I3sM_2Hw5KgKPQhKeZP2AgW`ihUVb~T zBTQF36JyQwiy7HSU#r!hetfLRg)R3c_C4xnXsJw0!Kc;^Fw-n=y1h^)_EdOMRou2k z6H~Q8rZPn^RMzenE~c(Ab*}&0weE>ME&?P2^c@!-+k0*dxd0 zN(T_6pgD>chNxb@MfZJaiGGug`&E7VbnB$az}V>nXB0A|DujXdI*{D%m(iffJ^6|M zGI{OOjaqv)V5^K4lYYyJxsT;O_F$gfsD^)h**lE-ig3fIL?luflp(YR;vq}S16zgxE(1G{5f zXY>4n5YdCKPg~2QfhtgDlwylP__PpMDzAC>`|hl&y{ibg$fI7X{w4VaR{LPVJP=Q0 z(~kZQqVjX3wp52jh7k8IlJhpP?8KS6mcg&L3**m6YpCBrT62YorM560xWgbBwIqzS zgmy8*S3ego6vzyvf5sv=4a>G;L52%GCbX4=eu6{3*OQcl^uY81`+*^X?LRsuZ!{Mj z$r4QjWZ102YdT_>y~<^=bI4-*tMHzii_JPy>-_^z)CR+o2^o013hYDNU|PzmLu>}i zp26I<>6vi;vD!XoszI1(jo%I}kPOV5RCG$kt2@`YQ_L!wk-UNMvt^ru@LuN`sIcrd zNl&aK_S!*80Thgn@FMzOxt9a>+#Uc#IDL=K0l55fiCI!UPQ|>%h<}zt0BuPbV>+fq zLZxTlPTzgS**JBiHke*a#Okcttn!Mh8I!C5#q5KG-ACNF=p_%V_d32|7D;zWTwn*O zlVOvJ@xkW^!Vw@O5I6iluhPkeQ-d+l# z-g~dOQv_1SE~>Thiz4wh6b%58=ftNH=75+#&Z1Jsix{}UKdmU_Ia@-gx-#Wbf$F*) z6G7k{U?eb@lnC!gx7?Xgi|vTt%ZhKA>0X!~;z#_tETY0lb>m>_%|7e!9OKV=joWXX zNz@G9$@4D2M~Q27H5ib}`FCc;=*-sqQ%egnz)Vok>N3H+?$+#^{B=#-T*mPwn5sio z2(7EWpgP>WDe@F#u?7sp>5t>^Uk-JoiNxqhOvvqj06g+&xT=jZ(H$hK`gG}zLxGdD zYBnTbv4M<44{xKN_q2LHj=WQX-Imp{`*nFvgoIWCqeB%Zo%Zr&Dn$6m&5s00f4L3S(){eHy`{jaw+b_l*_0f`|-L1EiTQlAE$Qx$y zJzIY1&)zGSq;3)XcO1%h4$~PIr=y4Oo$0DOS729J76veelW9CnpSVdGk03r#LPdTDgGy2nA)p^q+Vv9x%K zqLp1LqfDJb)(=pNK1aGtrzA(mM5MI>xoU7fwbmt_FA^TYzh0CF?7Ro9<_h5~?gUIc z;XwS{Iw^YtrN3A=ieyVV>KMG;XVjAL9X68KZod@a43@n>ShKQrI8L}Htwcn?e5p{ z?K>+1TrYavZvP9nV4{f;*x+E?4WgR*?7uKh)5u@M)_LILpA%3p1AVusck^yPgb8MF zGjf{)FF7o4JM$J*%Uwv%2IH0+^v<#bW?PYcyWiHO$~DUP^*6FmmP|;^K`T0-QBPmr zbdDNdM~Ij+DrO&t{_qUsI?n)_z)LEvPI>4wm`IqTf7X?a zXr{XxDQub~kyRZVs;9z}E;M+Zf0zIifVpygh4`Ut|ZWbE;S^z1-UL=8_`T!p_09oS8be^Z?_o=d3guLrH}S zWLD_98@^bfp2Z1$$QksE3R`SQfzDCm?KpCfA{p~WdSeXlfYT~fZZxXx%}fJBMr;e; zrBOU22uT*LXVHsaky@30#TFPTQZHYuwwgtTM{e}FfQib*q4#&w(8pY2n!IA9;tYxl zX0%melpV7(Xereeko!77n@9OIYvK23SNn`z?DM*!(R#=y)p`Xw^rIH=y)xqyAJtd* z92M8PIgr=D=m{om9SNffRuxKq2GSY-I$L3Qs=VdZQ~;QQ^ddJz9Gd!m??Li4ZZWH+ zu046CQ_LmK?$<-7mQ_ul~5rFX;rJ-}t=K zkxpoqO+)5ww#ZSQ7Oho*{pp~)Mwm_d@W-%~yC+(|@t#}A0lvWq-g^45?$4?%p}`a| zR^kY&oxdji{|flkAN(2C+C@h|f@zk8?)Z%J`PvlF->eU7?D|sF0m;Z(MQTSAnH`_Ug2tDB0%MrZg8<)$_Ih29ey2O^F@F1!5oI;lpF)V+WhYrLD< z@=pL0k2`fpow4Po`9geh3-ZMyz1CI+Fy(^$rQB++MQ7oZ$AvITPY|TlT0%)-2DG=h z0diRu6-5Qg&#gRB;BGOuJDM=b$Be1uDnh4e5prs4Z zSydwkwiY8CboS__mY?Wck6V3w!Uq-al7C)pRER6$4ZF4&tdY(S_X3pj?Y^}z60I$c zsm7d~%VglYoW1S^=F^jGwV%DCgo+_3z5ye*Er)^21rG-;E+kxFo>wP}i9=jfi^#+6 zMLk(|PfW+6=%+RF8>0;r_~M0Q=3KhnDzY|1^HKOha|(x4Hne_)TXboD@7eoTLCF$6 zdALsuU))b84B4vEIc;D(X*EWZ5#;D_l`tzK4YOSaX|DVGL7W$#W^-MLADUgGBbWsa zUgk$@h1D!rp{9~ZnRheivQKD?MvH@4+C`5vUJryV_{ewEM0S?8;fd~(JMUliN5my- zF3;ZdX`112rB-hjP9F1PZCh)ZLMs(d<5fx(34Q+z?N#AlN~Wxt^-XHUs0%SVagV0B7Y@@P#aa;q)HEFA&hh?nxLVT1u97v98@)j>@&ZS~YIx`^BLfAXpK9y8| zY(?Zb-a*jqRA?#{7(W|(d44u|FoKK6#-Io;{motpb8tudOsU6j0$uaW(RCVovOz&-cUL8(#tdo)xsZLTM zx(FTjItN9R>$I6gB+E5-3MB~#}E^YtT7A8ExB$EGolMNm(Wnd-tX!)=l%U{ z^ZWhw{XXC4`8=P`=W)7eDUQ%4S;s5A%TDZAPIZ#yfYZiE6jBUygCb=lAHW)$pS4uno#Xs!`TIkY;Vt#&a$f+8w3M9Hz-KM1)L~8p}YThTd}D( zFCn{5bw@rcir~>P*^6$g?B5xC1AXHCp<4`9?<8M(%LYbavu?Yu@%^z7#ve|qsqvOn zF>Veio{^;}x;Fj`dnhsQGi;e6?;*nx#*fvb?1_lFEw#Ao7K};mCw`W;G(N7}?y+Q+ zMI@*fJ>!Gl?GbM?s!16e;C|Cgd}9wd|48;FgP(Q_9Fzoxx{ZJIMe3LxO6Bzoz2KV& zf@kaQR~&zO?f7zEn9gqzAjuvMqu#V!Z4f{%>~nE$Q|yU~{kGF_dKoz3;T)#y>8BVt zWkzrWD-fI0+W~lI{DQ0MlNf1}Q79H{yXy0ky;QwG8tj`}Lk=<9pc5AsFFUEjyZCWt zY2?AVUH?lyG~fN;EbI&EznfS$6S#*n#-o}NYHI)UWkfYO%HhvPl{f{v5e?dWxdp!u zGWLW)Opkug%GKp^g=nn;g39FA8Ot{X2+HNwRJMC6`Yrs%dmn}CW{tw8JmmJ(^#eI* z65drf`UU~Iw<%cvI%02}Q;U=#JLG2itflXfju0|MxL+|6sd2ge?18xy#55fR;3~wS zwEc{Sy!WHTUI-70H4WW z^-o=+Z|XM}kkRn>EMCtSiH?t_VT}M2Boey)Xd|*)Q`nk!>QmL1vk>du7tSlsi@P|G zcW!(8iOVkppn!OzP>85R1O^#`(Lf&Ma#5z^UUvEEbo7QwL`l}M`D@gm(=8YEzQXjr zs4FaOahRpZF5P&*8Gex|riQ(2up~ON$y@+mZ0g&cR2)2O5Q=xPzsh>L1G_DQqo^4N zryO9po2opS$oC&Vx+tgZXKV0q9Wwu%Z#0!=D^60WduJTK;}zf)38qTrXx({u`N$~e zcw@rSaGqI6|2YJG5g}&fL;Sbf5_%%Y5mPXr&UkvYJ0g3K zm1Gy~c_b*jPU$tGC*Vm#$Bky)x}w(fu?pzr_v%%>h|`h*)LcZks=C^PhUO$hrK*lLB;s0;Obk@~yiR+cUwZb@B6y(q1^_weAPWK* z0yF9P=)mjPhAl})AbQ0V0`dV66O%o*4(`omprceD`| z$o*@ZH~X(_^2tyR@dgNF@o-9yO;$u_Kgq}tqDNdB_8*@OTVK_wBh&|0asZ{M{LM%F z^Jm?Yx0{Oq6xNzexP@4Bl^KpXWv@IVi>{jg0%D1pOgteQvk>L8LIpmm2tQ_H(Bv~* zFhO5V%$k5?fyB~>-E%!#YNrF}p3p63bVBh*Ua^@+wIMXxamfNirB_>}TAzB{Fu;Gx)rW?N!C?-|LFalzH~Zr+6Meuv{r6dyuL$kKSh=0W*Tn$Re89}<8mMVtv<%W zc(EJ0QV0-awQ$9m&V}D~$CUqd2k>qMGU|%*W5LcciAF2lTWAi}9Arrf*&F3k3CFgQ zT<}imoTJUwgyqCgE|`7e@+ZpPmqFYsU{-V{iuu}*UnORAa@TQy6e(w{2I0f@u@1^B zljuN{e7^26??jmW2$1aeX4y@nK+Q@k`H@4< zK$-G>pSGVtUL`9Q-5G2spAudq`n(ElqWe)A2cs20kvBFhd{zE?r_Cx43$iF4bbmx>9pAo^CFWQ{e)RzezPIBj5wt!drpnj1lD_KB0;_O0TCp}* zu&^b4;5_QJ&UvQ`TlH!%AD}pcVXjGQCdNE4!{Na%*@fc%y-D636`y@q8`~&a zuG0dIRBL{fUGRr9c7X+6d}j%uxOCHST$J+|%s_2`{i%T%ApQNZB5{9x(E%}Xeh!vq zh-OcP4iRpcGXrwrq*7c9f6pR@0*2X{s1PPJVJNIuUbTN{Ef6a&58EDa@}_s?0iJf4 znsf3VaYW+3whU`iBxX{DuKYniyT_s^^U7fk=o1N&ACF{uDi#dm!s$u=grDTj-b#Ax z1V$3=h`Y$zrL?y9xpsx@V*en{lOKVn^1x1L$sOv&=mNU&_bXu^W>!$|s+UGhKc7wYa0(2f^C_b1l;xlFM z?$D*TxKSaxQ^}>tQjPV2J8%Ma#;b}Y6|}D9Jy3UMYr0e;uhdwvqs-VwlPJN^LFK%bl(VcR{CQ$^198423$ad z^N*-R%K6Q~Nj z;?-cF``g@l}ZbVxxK~Dj_1G{ zy+Z5=WgA5%KtUF>sNzuO`Y~_0QP-~`c^k%kK{fgxrhE}E#s7V6#|MJmXCYeHPGu10 z<{Kurizb+Vzd8zX90`*O{K4sk>!5Y~&)v(G}C^%>3rprKR^;Ko{~ z%1*SqI7{vVOX96QsGXFg5;4bC_@8x=PmB58{f|(vZ$!Wn@HaSUpm?E7tW<*>qxGm+ zA|t0^L-oKBvrWF04$9kur;$cw9>~8%T7$lYROPG-O33rMHduoLTtru@6mP{K#l( z|AA!g;x2-JkCIEqyKcW1b<78$6RB6L%U_hE0vg=JkX~sTc&{Q32tmroO*xZIQSIYd zo8CpSYR-;-KoN3aDt?MmI|bL1jiapvfsGoZ`!GOO2!d~38r`B_S9DjtTt*Qi&X-<( z{G4_jVC;e(;pUD0xw`6ES4a1ZH3>V|#!o||2kXY}?Qd_sbJ42*OKkuA_R!;%DY;0S z2Y?q1lXhzZ{s-LI2b3|>wS?XDJ4V+vx?+AX!Iwk&(6cT2p8auBLiS{@7F){N3+|^h zprkwYZOE1#>>FU_;;eyi&I7q$08H9;*>{~e89Smf>2rLeIA*Ckm6?kWOp$0mud?sX z2d8q7uj=_d-#2E`tpMEi*{A@W1X6jR&Q*cN6{9B}N$dw5hj0d)H8r4XUy_?$%K2H} z7i>-L*BH=I2SA)Dip?h-&TmO4RmTifpMK6N#RDdrbMDCbg#~*EvY8!}B4!jqAhtgW z$4-1BAo6G=lBsq!tg>dg8y03?B}p|gz11^8Ee|QsF)cSMKqujjoX&iWq_5J@A&}i4 z8kp55CUrqBI1Mm-vMpf%*QEDlDARa^yCeaSznXKvjK+1hvx1H5Vdo7hk>1xDGnQO) z>z=PIW-xdall*k72B7wM9+U@7iBDHA1d2!cT!2ipYRS;uC4c_O!M?+E|C7vWf}{qF zru4HUFvfU(N_?KZbIuo~UW^m;AIYC1uA9AJ3fcs*LM!R$^Xbp1nHv{fmL@Ln0$&Hc zn&|$!sH6ncHd{0`6~yoI{^>#yEY1P6d4@R=mN&UIrC>Pv+&3#2>gC+XY);9ndW+I8 zy(ee3Z7jfSJ&X5`$Z6aoPN8G^{@0-HFzSC+UQgRw}#z4&xCqHk5*lg?x32M|x)JA~*t(zyc;=cGfFG$!D ze0~G38W0kaiI?H9vtQ9F7zZo;<+7054~T^cz8`_GR^0?bCWpVbwVMS4p!2CCF{WTQeb zg|98SIVk&9IY(Go$Zs1x1MHLZzO*WYw{RQGq(wtjMVB+)soa#NRO$8Z32Os~f&^wc zYUri3l;s;sc;<{_wvoU=zWuKfB7!%u^XTk6Y_UIz&u9b?|IE#IN+indAwRf#P+?}@8-XLC;*gTOq1TK{q z)qQkq_7=iVOz4N4v&(#F+TO-81wMA~56-4qbDP ze&6@r|KYCRti_sI%-QFhy`Se(JN&(h904vBE(Qh$!8>_rbqoybKn#rguO8h4KC!OR zCIy}_-PGmYU{sFN>;P}>TfbI*je$`Ui+5xC0C@0KBp@kTRD)*by-3j zU0{`dbGq(SI{O?ly@0$EKBmOrb{NbtWY_DPQ(}jNNd;SRqm10N8^XW8{SG|1{4t2+04i;Yw4aHn((cl( zNSbj@c;9y0s4n~PFQAFr=(qee!FNPK*{Rikka&#bYmqA=96oaV-M@dX$%?WIE04V> zkoK`~ZHijr^6N?*x;>)?{;yh~#*|Gc%Yj7zn-R*kcH62qa=|pjHiC(11AP0e)TctT zq5-+UdTuw}V3r;2p;RXJXn6jlH&+02>lw$5~(4A=cGK^1Es9T4*qCxJ%ZQnsZ%Gc zT$+j;33By-?p*j}M9sSBF#>CaTPB3mr@uEvLkCzt1E)?FuKY-%Pu5}}RDgwF#wLX3 zoSt~MIyAZ0-EuWx_=n)x(Q`SWyYhO_G99Mz(vZY>3|@OGne}hHcX={z9MwCF?V5Jy z-nW6)@fMviUJ45{T%+Y8Pg7}3qQ9dlN{!7Q2jRwt4Uaz_nh*Z_Q;oj58RNBbEHQuK zsgw*O268O9vg+Mo@|n$-^+e^vRD>JSbTf=#;VPR*`qhn>P<4mRP-jOpdN-dgs9DNXC-#=RDaTe|E39F}NjZem|k-)q(+ z_eR>GHk2g>{&$MM?442~VdI*EDi2O_CF_PT`M$T8DuxkI>nsYz4Nb3E%H&2%OHcf$ z!7ey&sy*zoybcj%s@=jb+AcI*K)G$8y-*U2$vi>I0 zMWOJj;%Tn-TJxJX*=N;nXfDIaca@uV-D`IR8wo62f7wG(9Pn{a?tQ9;mnvhdr2$bz z@|m&4U1~G~cOvi82LokAK9cw-WQH<#jf*FQR#Lm|^Yi*K7t#4igGYk$Lt&1n8SxXb zM6~&z0KHQmTff@dCS1#H@&&(i?jA+8fLe#^=2w^y-T$VeCiA^X$`(jrbJs!ehqJERcg^&y;C+ z?1l$HP?c=()XZMNoph;~igi@UbkOhyaiFaBP9a>m-?tbJ3*|Q6+d~J#nyd32X zu((^@Vap$SS#wF%V4^`CFNdBMU>w>qAG&b;6HgpGYdyLuw0Fs(i?Y%?=7V!59nkO8 z=71e1QV0$kkx)4dDh!M~Mxwx+-tFbuJ#*3f3R5@t7fxP(yg94hSEhx!Vo&))Ugi4) z(|ER2;*XK(JakT~$mYLkzMogay#9D3-h{cgx$=u&ao6Ib z+Dmg-HIen4JFVZJDc!nT9|1a~LXXIm@1MOB6NAs%?MjESAq`uJd|n-n6OCt%&`UEo zx8J|D`$ApheqM2?sK^uQ_-u+H3w^Sf59JQGUdBS(=VUUJLEY5g_ZDAb*cZoB3DDn8 zYuzkPKnvHD;b*pDlh0{+5@IOi^FWu@mzMqsv=s9mrSJ=otzU*Cg*IbZh|@PLeFh)b zrY{9d9mLde^Ij@FB%N_7h?13O1jP!-kNRzf6D-5vJYS-~eklHO7Uz96)5RPX>J@YN zgZM}Gn@!7~7NVJyyIetwltu*RiaA^u9Og z{fm_ulo2IIA3tPt)gnX?EtmQDL*x2XCl!IzoKs>ytiY-+W#=elpB{6wH#vNnIJa7k z<)b%FMji_9sp#}Vbsgrk6G0{#Sf0-pR<_^PcvPB5dNKAx6hmoA)rGOD@GurIJi=IFtM}a$UaKHYa;&tg8X-#^++x->$<}!Z58>mHfWVk9F>m z6h&61{OsO#s!M7Nl+AOGQwID}FIPZu)Vt7j%HVWY$FseWeNyc+-;6vLL!ssxE}88< zX7p!nM~*J_jf;8%bx6B*>yg$18wCp}CuC?U9&UlAaD)iCNiJU8W$lZZ`F~udU|1E) z_&=!N|BM#s{@u=tXFV)ER0zebDx=}EU@M!ZWAwW*S;+QKv@PcF+tsPD$Na7ZPMP1m z?Om;VmgI17q$o0_r4#d+H zW`(iY!;|=2#nnRx$j~U)=#AZu@5~hp@#)fDIhAwT_Ax5t|8^Fm(OT-j19aW~wKJTX zls`uF0Jow;tjZ;o=1P*X)3NfkRkfCO2e)1flTGdr(Y?t&rAYTEn>QyL#>>u*uCe5M zVbK<&c_v|JTZ2~tHIAfY_a;jO*5QTM*sU_g>v|$x3(A@E`Ay=n1TXp0#-D+x1arLS zpVjW&r(rALpG2%xH4?z+Uz%j^c>M9c&9Mmco<(18>vUB%XNYpXog10t;+v6}ATxG@ zWHwmooa$Gw8F#3N;lnU(P>(JBT#tV>Z49b9wtY^U8vqZLX)pBpGGP3JSipp+Qy`S0 zKE~O(tzaeZlSA_F_%hfA_LjR7M%g3n!k;xatj=iEU=N4wpSsjNk4hU;3gN|41DQ<)$q zhBUK^N-W1;DKs{bfPe-&(e!t^*GC0NYfaSRu+y6@ifjMkuUlzz37jKSQC6s{>0D-a zHakPX`4oKNEjrBYzGwf9d-xfK#9cMvgzIoLi@7cinu2AGGdE z@d%W{vGx|~ne2o|G}3-;lc#r0HnwG>#f>7~bc_9Mdq0mN`2Q`1_1eMNOiZlQW=yR_ ztJ9{CS4@-7snHUlA19g zgVRLUO1LQXX@@ujs^F5dR6jp7?Mknq7ZC$uSan$#ydVF%5r4TRV6!SjHfJCWIW&M7Zj3! z_yu3KH%Y2W20nlDR(QOD?i+K`B$6zIm_8NDB(r7B!>y;nk><^S^{@FSzkUez zPpg?6S4;>hGoQ(RW*}LVeeqiuoKJJ{#gRwaL7r)U=M$IcnE{na19@ZRg3V)!zUZMJ zg01{(G&qNMK6YSVjq^#gavEK0k<19qvXa-%0xLT;aG6ehEnYqOos!86Nv?qN;F9;Sfnr(=|=U zmdyiovO5NMv<8&9ze(veoF&%y%LQKhif}X$I{@cW0;5CV{pA;dJ>e(YixLx+)|DZT z?Fcr(-9om$-yOHos}!0Rh9IF{bXHQ$d-+sfQ~)%Fh!n&uzDPG=5Hf?K6qE*YRBex! zNP`d?E|wt@hMWWOQX|m(-pcZzp317xTdtblFVEEJ!6D`-cn1%W) zi5e@>Nd(?|>ACxMb(Y{Ya#*4KBzIFI$*{>bmd>CmLhuFyEkAU6YDu#B!Hbm_-hP246ED6?J1Avh8j5vJnAGk z={j`Y&80H?NjU7mEP5e$9crqL(JO3i+{bC8wxWtc0VQ$C>aU?O*APFeNe@F8c!>92Zfs`sO(0J`)EFwNcI&>)6&BA+Kf7zvcJapclQj2l$ ziq*#FY_{o2A)#!Yf+RWFgpZ;uknrIa1;o-LsnpgXKcH6has3=lBmJsk^v9%zp5>Y3 zZ<5wjBQ!mqbgsQ6(xC7(-IB^LX6T2>#;>Lhy!|xA$+9^+q`%1^NW*G$W+mz#bgm>s zv|iG%0ZNw==_(%lm$Gs4F$ERz1Ke*r4}bXse3OCi8Ivdc%;Bp?spLW<9>+ZE-fF2> zpJkaWlGWnKX94XUegd}+g#MPb*v(_bBEK;ONn28)?nTHsXeI{m%jEhA)?P(JucH3k zFtdKsKWW)3H=eSVgV1L3BsE%ZFkjK+P6}$JTh*di7pr8%0dmr?t+24>@z>E99m2oS z&w1frwfy0sbKG{IV`|XxHH+(fqc#8fkKd(Z$f`s^=Y-^{>2GT*hLoMkXSYp7l~}rb zCh}Q)%HsDUUW4Dac0R|_u?_?2jARHaTwiW#@7QO^<_55YcCFV8)m{1-F0ef7>Kh#eXxEJ7|rM-@A+aTksmxV-r8 z!mJ+CTzLeE;UrR?X;rR#px*ok7%*Pand`U_N))Vom>23SQM44gb4GK9`)Ny#v1}$qd?v{nV=-W;@32l8 zxK$f^4w|y)B6h30R$s{_oBrRPF{&i0_XtYSik0-;R?8a_y5B7i?~RFSM-eRaQX>b4z$A zB22(iS5>oQI1h9@KM6>7H)2|Z>9&qUFO>n(r8*nQ9^M26N2S|)! zmmBDv@7VRYu8BS6Xrx|;vFu^eMU7x;F`>dtSgc{x^7RoJy6y4)+Pcp&`Y(DE6T~GI-9J{es!1E5t6ji0dV%bV><5yzQHgD*KS>aMJ|! zH%ZBRgf)ryRJSF`Ec%^kH-kXELk)ZWidr2si%j3nm5y%KCD_>Y+FHWM4*?9W1iKoe!NFH%k?-5MnaYiJAyhl5y{pOb zZ7hoc0yzc^`o$Blk$mO-xNLf5u3{@u{7jzNXI>ynea*Qu{Dq^cMkC{rf4ZkPV`$-d zS&Lm1YY+6qi)%P)VYK??gU&m*lGEaMz$p8|9&9p1CWoKh_fwa=^`HoQUe z@*yDoT>ZdLIEq`l${y$~iwh4}TkS+)$pR4zKiyGBKZSGi zEKLEu@5RJ45drT6gV6WP4N`vo6_@n~UegXq0F0V=Y2a%(Kpb8=eK_%($uHYVdwUS6 ze>k%gZT+qqT=qm1MB7;5AAGTAxyd2uA$w6PFYSXUwb}2luN}K!f}+_L&@v0&@eb&` z{bpT4-?wubst3vQx|QPrPZ1t3X-_1-Fx@?b->()x{1$TQ*zaVdJU(d;6KO>_z^)^G zszNsTtKLrVSd_u(#%E8wijlU8u^{RoAHCCa{aNJ+Z+(9Ar+ z7Z_S>;^`3oO;bcT67$&mM)q!T<19Gx-CN^N2f2e^odFnNzgk3{$Mu@=#roqN`A)M) z5mHl}nBLX70b&v263<}T7|O)C?2=Q_H`!MoKX@=iesP+{(8ERHh#o`~@e2FhT zi#7QiSh+c>!@o`&JCr)@aNKS5Caw~}84UFaAHd`%cPg!&AK?6>cx}iCzVSW|M?iWI z$3V8~6aD@r?9Q9M1NQ!-^==^2Vv_^h+SJa%SbMHvYk;PV;nvYVZQVEQHP5fTUgtXt zl&GiCJNB%-8Y@LhJ4hcUlZfrF3Bc9>y^u>P6&ujRWANM;3?p{keSA`FABa260DYE> zRfv;l!aZOhBGx;a{JpW++o9WS*tdxo6a8GZl+0?TRbrw;GAzZ!M~cmgJj&Re++y5N z{91|JxRuqxpB~Ym_eJKmziqYj2u$2__%MU`%(;EA0-ztZw^#XObKSLIaElrH5y>lu zD9Hk``$gsY?2Z%Ti}+@FueCcxk*DD0yK)VzG1)vd(VW~?i?Q~PeqEWxA2b`4+#%Ar z(I3k17%e0IanO)(nkhzNJYI05G`1tPrR{|Z&S4XBp=?fZ-L{c{GnCRC8!kBctGs5y zBJwh`7rWk9dM>pgYBUDVa&^n%NHqHW7Tc%yLT0^r}LTR)##w4(D$7)4LRm^9oBPOCZUqZJPidGtDyYS5dHjh zQd@DYvRM{;FsC`BT%mePgQ{6o&9lAozBQ%v#|Xk5X~nx!wBEx?z~Iu){d(PrP)1rE z&n;J=aH1P5z)gujpj;bRWDQxmlCuXYsmAIoz~=(PcXH$;2oyRMTo#oGcr0TMsiGNsEL znOBP0!ZoHlm+AYh(oOn>7pf8SY5cC4juTc_@?2Y%z=}(|R)q5x`b0})@!kbS0a`ad zV1C{(!*j@O6255knQqFd{AX9b`{Lx`X|h)ET^M{XV@JC|z0u@XjZqpUvxBe6lqI3; zRb3Wm%Y7%!vjDa8W>uYrHyq**_4n8Qi1-r>S@J?GH&n(#RAYZ$Qd__W1n#BL0}hbU zv9;6$2dEThD&C25_3P%VVnX|ctHMgK3YksPE&ze*grb0`cqIo#-EN7#D@y z3tTw6OZCKwAvm1sd63+1nDpgv@~S6MjNeIUyVTXmCI5V+@-gJ+roGTkdwvVm)?j?D zZKJ;eF?gM__VR6MB1<9!ED4_v^MGgMKIc+R&LF@;+Q(yd$lob)`{z0W6fm#7rSjxv zG=0hPv9)GJ(s-(!%CTmuQo*fly~(cXOf9}lp9x3M)f-7F_qso82I9N({cPZuu#<~= zv}NgI)U_3_&U0QC?5>@T+Ycy`g7p@WA;mueXL)k!2~%E0)7c;3x=BIy9p$jJuML!_ z)cYpyB@MO86U7uH^z_G*5pMPVg_V_q3yWR68jzfS~coc=rr#M7q!jM-h4T^VH9x;aL98rPIe34 zLkCCsC_^(xB3r7rR7x~t59GPTX=#&MNg4*kGI#p=Z&rzVbr0~N+K{ee2&aI`X(u*sQbAB$j&c1^Z1%QP0=^;UJ z94d^ls4qV|LzzlX7p=13kzR+yC6H~BFu;;f#0%0YOvbGcIDY3>;99Hq`q5^0wAY-f z=O;3?VcEA6a7*-7!xHL;;7T&g`hJGxro9CUd-+3~U(r38>-MXxA<>bUJqIyQ{ha+8 zu=9yA4j}MRhHxvXiTsC`DT&oQC&w<#0<9gna3e#rrbr)DRjNUuxLgWgOG?&Emxk=WE8Y zIY4e@D;JGgWaB@6P|uO1y~?3#tDpgmTTdFH zx=IVq&Q&eJ$}B_ zUoI?kvxP5PpRs;Vu3KToJZ#_M}evAkm0^$`1;i$^DkOa=%@@0Iw&C!^0%y>;5006ugP0;uMj= z5Z!yhk0H^kyj|_R8)(%Uy<99NJx28GCDxr|s*cZWz~N!R9$upa(|j4`_HKmg;{gW^ zIg8LamA7O_Ac=>U1>8)4bxyDDBeX@9q`IbQD)9pY#wG>oeBM6_!fR4y~_t(1BOMIR;>)kUz7JzL!J6MaDSGq-ShzmHFN zAVay;?;}`B5&@gCHa81BNQ#sA@0Lmx=zMXiMK0VMQx5=;kqt=LJ@v?TJ=P{Drtjd) z7>7n~F}I>rb!VyhWi`LUrrZ%Ct5sZIfTVM>;XGA{y*2o7A8yg7*f98^RX&#H z^7tlrKFiI0wP48T%tnY`e$SWaoxyX14D#htvd^={>}joh5{ zPG9i1eU5b&gkExq{*nlww1E!gK&?QJu=rd$5Mqbzx-mDJMTFz@o~Su_RAPPDLaV3z z*u(6Ietgt!AOG|S;YQKu$I?lRdTci5@U@&b9PPpk^lc{m`E{TF;pZ0q-m*K%y^9wi z>#4KFVI!mF=VUEf&}<%cdD;InTe-+W8ob1d@vh({eLWY^?#`oSnW zS#MCz9P?koDXBp|_vCgQ@^td%{<7<2;yO^>+U1hNt7-0n20#}t?P6h{>T-gvT~fj5 zf)63D`sq{d>>b2pP$GX7f`{+bekUdzEfOm7=LP8zPvN_j#Ap_h{dqz8vEstPM-XqV zJif@SKIsO5SFrQ3(8Qg2PDw6Ii`4eF`IY<@p5=brmU0OUqVD19-0!*)Dg94+@&&LB zdg%DOFojJ@3JO6*r|GV6?bgv2nRs1rJwW>V=+{NT?E|MVR!ExJkv`x9G@{r+Uk_8Q z1^cBU!JYHv_;`W1d6bjJm^OTQ@r*)@Q?G&emr1$7v!s%gVosa$WvTpnkaDBHv`~i$ zo+FWu@go@Rux2_luO&5^JbzvXdG>Z^RmjQ^%p|{X6efesH&bEE`HwnpasZ$th2457%H@9z8S~_uXy-Vnns*$XYZW^i)gaBmj!SyM5PxFsJiOh!1_I zg5k;q`b~uYC!}6o=%qou$@=@9d&*AL78B$F6@W>6pK9Oqh1`gN=Uui#ho(@wj$(?M zi}{*wcU1gUh~@&f&av8I6eJ)Tggee3&=WoK(*tfy_wQsZhofx=C)}2^D8UW6lITW} zZXms*PAgNOs5G>8IJDsp(G>?`5S@~wUS6;ZFI&)DqlOYKbkM;UN{0x#q=>zFqxuCr zV-LW`jG}rAD_yg@yC8du)qp)h6*2C~D#+d2w-d{f(=WlRTKbqp=L*W*pd*3>6gwc^ zFZc(6Jp7bQB8DW+s_w-FtO$p-My#;l=k#26U|Dwy6&Dn9?5e~yTHAj27GitW00$>R zD^f=?n&gq>jg*G%8!=Tm-~1ZYf*6BWN~t^T{74N?7pEtB>cf{;B+r1T5fF)duEFGK z&s|pB&+qQi@I*N_^$WkFSl_g%$O%`tH(4D=(tP!Szl3!v z^)@N29-@-a<(c$%(~zy_{67wSkD?Q zVg`4a7)z04w>p}1Ef_c*CGl1T8>%6AKue>(JYxhaO|1D5uy$UFTV zuTD>6H&K&@@4lA(0x9ur0z*D4Y33{VhD;=}HeqfzrVH1$3#fOLki3_Y#-~)#uf>dc zYA?Nk(#xT?(S1}w$<%(zrZ|%52vHlIko1Y&Z+YWkQWW4_FUjG}i-G&YO-yeru(Hna zM_BC01~*(q4btwIRQW!1rOLi(s0{E5M=W4nil_zRlBR$NmU4Y_YW5x@(NLpwGp5G) z9vtuUrzj;wHOPZJ^K~C0U7`PG+dwoRUITec38kr%i@xZm_Du@csP^k<1pRJ{x?6N4 z!+lEXl)EmPF-{d}ft%JnbuMhRzzCX{FP@nbHF7|^7Z4GB{1Gl+m6CO)gmpf**WN>H zri73Iodf`ET{%Fg%H<$xrI>xDkH0CXMS0@t^Eu?uCiJ&OWeQPM!%+}xqh2p>Pbhdy zqgAS7T0BF{5So$83ugCG*Z_tCENb-X$}F zimGH^|4!?)qaD+(5ckpbYzNhys`~-eCwN+9vpnGoOkg%^IKI(Z{`TFO%~}zmZ9_Cu z*Qf&HsQ4G>kDmUzii)wzJmDpN#4;SBC0qSxcny!5ZBL8}kGJI|4V1|nEhI4*gy)*=YNi z{lf#piUq2Keg;@obTqbptxm;txbu8Sq-ODp9Ly zMj}SLQ=yS%eH>7|LoXNh#3xH2&mCLjspvhG6m-UXmS+QM3|`otTy_Z@FSwbR3!#Ls z_gLo3f^ble8pFFxae_GpqSUY}XF71t{S{==gAQSJK~c+On^j_d(#jt zg^l1DAfdwgvm`^xhGLXP9eYqJYIF=T7K*;=vQBkK(uM(|CK=fx>R(17y~$sxIZkp8 z`W>0HKBn@)=*3{Fosa%M!aU7VBtY-IK?q6v=2P+gmJLT>zE=jv-R^h){M(g|4Vy06 zJSvsBO~`|_{$(afPsZgl7a+o#T%~fbXY?edKhGeCQQ6w=#pE~QiMpPfD@3%tD1faa zy+4}uW{`KBaj65u^UH$>!lBNIajmAs_QM(KdMB#^RKfZoP#>Wlo%Iq1K>2r6odX~4 zP;~polFy#(47vr`?l@`g$q=q`CPJ7eIll@Wp3sawZJveH_@YP(tr8urmj|=?z;%wQ z{OdCpC3nm~;-TWGo4SE{e8cIT(zf7FU-Fan9|y({$V3?Zx?r)oxTv9ug%9u_7fdUe z60iKZHZ`l^_Utd|EAPs)=kp}80Di9`lPcj>CzKsJ)do!BB4H?CXlT#(4)cQZoqDpy z!9>c|rN7Mb0ewC;nYSo*?u;{AP4~Z^vDu?6k3QTSklFo13b)KFCdh{{3mk?BZ(Gcl0g1JexxPC#AK$Fr_Fl|>vTvi*eWlxTkF(ELLy@# zaTawFTB^rZ$q`=jpzw8iuBj+KEhsNQE3fc*84G#wr~7%3fb#Cms8MQ(Qg$c_yusq; zm&x+i%~uDShG>S>X0xA5dYec9|Uyq3EfQU+9^^8+R z=K+%+pho8zMy*t2ju#f!Dcg%G>W|kU3vmR7GK6hq9;iCKx$@_c^EXb5=m@VqFWN;| z3q5}NRj2|R5WFMD)#=+L0k$;Z>j}O+Ey4p57!C9FMM6A*>)T?0M45sKkV#uejGsTl zZxTM2=>2wSLjSjlqF$`)Oz2TLo{k$I*~*`C*+a_!v)V_u&ql5I2kqZ}KDm<}k(CR5 zPMs|&nwfUS@Mq44EJm)7kA7y&z)?(QIh^tu>qq@=!=mbufGeb5qddwoqndX)Q~JPj zE=|YbC&V1XBpH0k*!iAH)x>AK?b0+QPJ)6uCC6kaCQ@)g zQeuntvY5>4$^laIJCUlLuKjguCnq4(*G>UgVs*79^pWhA;YOI_D58oDgJ5JycPwx`#n{a_ajUemZu$wOa0ZS=~MwHNofhat5ZgUe`rNq`8Rs4=BKFf z1X||WPTZD{YY%9N?V3U_DMT1UI|~g+376aR80iMHZMvK!n|;Hp$pJ+AZVT$6f}LN? zpHDy4-J;k7X;dyG8xyW2wUH8e+G6y@sRl_pLtSvd+ek3_b?qbyVv>p1*|I3dVaq6@ zv9PD>I`X-P@AjuK~PIO4tJq@W(c-vcg z_R`4r4Pc->tQxV$Up%%}s$mdqp~(+GEyfhdP6WNzCO5GTdy#Q$=hC?i;5-1;b>z+} z5GF!!-jm0uZZ+K-Tc9ywElTL#rat}Mh++gB@BQnjliSy<9^O1p`psH+D~7Yj+hgzS z;Ib^4qTg`JaH9B`3cXNU(WtqfvdcoHl0%KDLt?EAQ2$PcHchz-RLYTxlC9~s5q)xwiGsr@ zDBRcX)w@O`?g1kP1Mb=M@cseYNKkW zpe7+Sl9LiPxb1i4C`gS`yWdOU66yp7tQ!|uM$S_<`&amiPv}!uOdwHVi#hS$FI(iX z=KdnEoQhN149iuoFHX*BY15ymoks8Ci!VM$Epq^X?}Bqar@N+vBT(%Zs+~D2j+aS0-ZGr0{G}O}bV!Kxe(H#Zj(8 zY3ZC?ck0Ib?_6j5H>=lYrB>+ne(UQcM$TN04Ew$cl9}6{AX*+@vj(!3{U`e(>$#3K$pAg{5XU{~(sF63SoZKw zr(9-aV2fNP$nCX~`$%_{qVF`_xYbG$8IQ@fEX>VyX^`PxCK3nOjx?tuc$LLIGOttU zJq%cGS~qhyZCE9sQul$8lvw$^ zDLO=S3lYslh7-d<`Z)ATbK%HYk5b`3n(#Uv#1$>-Yw+bh3v2|XxTWYW;;X{cmBDuE zCUS$Nj2Z%5?NSmB;|$c3qsg(_ElKfvNu6=uudQwU9xlX33b{*TO~%tfUYWzN1(aPc z`5rXiHq;^`rbln*)9{U%B)a~rh#;SWfPEtz69QS^=s&aYOU}0+A28OV-Bv<0aLEF5 z#teBGZ;3^|_qB~Z76H=8K_ZoOiodF00nI zV%xoK{Q>mm^Cg~3a>8 z#FCY1>qF}vz`>*6DI0#~Q7}Ps@t+h&Q`8E2(Y0uJ812U68#Jh6O@1YWcqRRfBct#r zo4I=xR`hO8YyWJD64Y&6toNdKI}{D#Bcr`T!I2CY5}7S#(%9~zroV|OAyTOyR5E#oK9k;j9~1J*z)anwNh;DQD{Z1Zf$ybDcEMcL z$;>X}tz`_(SatFBz{-O>dm(v%{H?Idr4|Y0d>xw72o>}dnR_Ob!#U{k8ycX3T9>(Y zr}eRw;H!ujG$q((;mx-Xr~rhZ+whF{3pdQRAjOdeG0a;s#Dxs`@C+kD1H1lc`xk*e zmngI%(e18m!!9Z!H=>(>}`_w>QeE#*mLcS;C4P)(J5B* zno!q73>{+&T*D0sTxo-2RCmj2djVfcK^0+Kea5BN&i$VXK@?sxYX~|jw0O!wBG>D- zhnD$7>9H{WfL{nOm+LHhulca=(=S^T`2-iSAegV#0Ew)0^L=e<)9ZgyAgOfd#*yddU@RgkOho?- zeA|{lv~u$&MBrhCL3H{Z7(pZhmeSC_r#vJ+Kx4s(z3ZNQyS=<}Dm6OkW0s1)`eMqs zV&aL7JVKw5pT8g0w9gF${)uJ-J1O5>r(E6ZXWRTS*8$7T&in3@JWet?);@Jwy!{m9 zsvBC%Zk^qw;(4NPB@l`MeywC3s#P&fyi%b$rI1Gu+fYaAB(Uz=doP{it%I&=`&Vkq z3oA;9Jo=4E@|P|YjeGV=CND@kO|D>$vRU6G0zi9(cf5d~9v6B!&wXk464=^w2P|Q; z6*R@xk5mh@0mJhHsk-k0#r*^|&+q3+T-w*y*(n|5*pIK5e6DoPoUh~$L$pfxsQxL+ zeQBiH;X`59;~=7h-Ru)xIWnZ_V1&w}pDKhPoSyCuT1`<4GiY2lBrSA1vq+w%>rl-& zDRUQ%B4Wb+Ti8xTb+7KKX|7WG6%fPZAHniXB?FtRvyQo$B(q^6PAZ{ zHY`HZf4=c(dH3)+U{-Tz2PAxH9o=pv9eC;evc|x3CHja z`X3>4gRqK)eTVA{#(r_Y+iy`^*_CkuV^};n~oQiP`KloRJhNOUQ=9Az=|F1$6*60LWP6w~1 z$_QOnJE^U@hxJ8L2eW%eM@ZDPv9J!1YKcR*>50_aOb6x!?_i|49Uh%qxW@FkrC+|$ zuLIS;u@hDV)R;f?4ztFE-kk!?P_*^3if_y};V&dft&UD3u&jPq!e(`9Myo04aH`uv z^wI>_eKLe=<%a7%+#fJ^IryFN-zJ!!X696i$jfA_fYI(_Tc7pCfawD-)4l=0@^5HW zlx4$(z@IjRvO2`@Y@ohIEqWh+<)x0*06uLm*apAVBhm`3RWUhg6X3_k#7A*CRr$pv zTAh+9{rux$aUzcu73!)Uq}60E9Q-XL638Q_Qk@>DSh`!BQiEO1)Rvl~RyaaCD<}^T zWR=D|20T-1Fg~I{ZuLt4{$j%2tfg&<)?LO$$%)Ufd$tQ>V^H5l);XQcSHu!t9S3i< zgoI3($F}Cr5@dW%2`Y36ia8JTTfvn;=CknpHXx_i-ZV|6Z!rKG@@RC58xwQeJ3Z53 zB3VBHBxIJWM`hy9hq3&f{@ZQ?KuHC%)b=%4i-hNIu|)o$E=5PbyL-m=xvsv zEhG`yfq-Dr>mgGs_}*8&HK2qkq9w5`>OD-J+Rf&Jd z#w>AEW%st>#6+UJOzPpCe)L*KypkI7aZZ>`Ks$eAXSjn9!#KJ>&56H^p+`GbMO^W!qQ#M9WPaJ ziE%0o;S6h?+}K{?~O>%0Tpk{wiuX`>w3X)p(tyGC3-9q)^GOtnMqECCzXeED>o-H7O#RZ{Du$)ETL z=^TF15Kz&tn*s%~Jj3X4aZ>7U0#p}wjva42=~4SJ$)r(%t{tXR!&3L5T0TfCO_8LUcl;;{QX{Sq4NEwQCz&N(4lt6$GTEJ48~t80`vlJaJXx4C$!2j z;kM<{>XK7wP_S2^cI**cm62XEo-sJKXb6-y8JR~0XK1l-BrS|s+Oa+4iRJd?Y`PmX za5R)5MHQIBl)IAPLgoNrGr^ds|GhlLMqT1knQ`xoT>$=tIWxn52R;L}jSPDy$%;?r z*-%Vj4Na^_qz(#+$XDUH4vUR9smmcq!y7nt!)#uXbxy&UGDR4rF14S1%ixOBT3Zy* zA$WT{ti`R^@a{Nb)$QGpl!3}iPTET~-erN<^j+yZ-d{k{h^&h9NJZMPr4&@2Tsq9h zuOBVW^Vp3tSrvhCRx!wxw~V#EAQm%i?bS9GoZDPGi- zj$^8Vi_IC-CLxF#)TAzAf`&br4yh+N0zzw{+t>BWQ@y|RsEg!c@R-_vKPiqCdw8%X z)9V&8O_6cDKJat3?_&SWvS!8M0%iH|zU6W;TcZxIW`>i|m@`GeU55C-pvkfID0xuE ziA?lgG4%QOBQ{j)S)MqalGKwzg$7wVs`coDtO!9OqW-D5Gmq-jgXT5NvO|hmLX-r2 zjqmbU?K>odTOkLGY!obY!kdI&Mhd$W4Rn9*`W{XZ*E#uH7%1J3&)WBf?+oghq};LV zNNn!EGlgZp_=Lb!o`MjG|1}uD9qw6SmC6Sg9LIPprOl*0%l9jFe+9%?EEYeegGMpl z?bFDN@M|Fa!J$*LOMdiZvbb{WJhB%k7)VNdsY0@iuSR~jqO`Y{+3QwvTd#Qrt4<-oJM{aP)+O)eNMM%l=(Hk5~%#g9=X$SH$ zNv2B1_Y8d1A309B|NPHzh+B=6#h;K186wt%#$wOWGLGi^0boZ0=iuP+*k7oodj>1$ z?9Yt0n%cmXaqGh)OW)~qKc8m8tvg&RQfcz(MlU|?Cz{F8;*S9`{4(br{)y3ep7f># zobUYtsBEj&bi?Zq`~HcAEU1IEg|v~-?UVcGMRCQDRpeHz69v-~Uq2TO${3>JU|cYJ z;T@a~oFTy!FLsx@6JF==mUX^GoOp1G^L@N2%y=ZWvC${9d1ApS${`9S&8y`WA zhP7y%hbWd$U&&E+)W0;|;Iyl5*@k@DNOfWy zuv~tC$|f~zUgR)#z(s-{X638@6w4xgeC)FQNBO-nU&v4P-RnnBsZfDQo_c$ZFzzjKyA5cB#=WGd*VZHl|DF^NB2M zy2qAM@E#^T>AxNJn;q`JwKxz!g?Kw$L8s#23!;FWa?i!6`J%(%xHE0L?GFWqMf1*R zd-gFk=bcAjARsSrTjOYwlRs+8Lg@BdZf?ScAQ9>#Ijs0%^E(*7TSe?xcL+Iuw0QKg> z{{0Buj-3DfdGS8`&3hFkHN2+y&qJVJ!>94|J7U!|B@e*H1Dg;pV8ZiOvVamxF%ZGs()i>-$n_& z2M!6>Osok_5#lK_ z<|OuYI#5jKnKY(5*VxAK&^K309m@e8K;||U{Ld%55VqvBUrXb{B$}8XFUB4`_4gBb zl!dh1eXz-j5^bYjy>ZUO;8gy3Il@#R8E`;S`vtzI&r=y5SnG%xPt!C|%TnSZF6U1+ zIZ<|mZ?H-L!~+IcyOPNBA}=gSx8Fe_+{VsGF}9sGSPT%o<>MV8Xj}gmyGhUYV}zIL zT8~4woV3RywC=@}?LKnAF|As*H(GE#Oi-{)f4>!sPQ2gZ&*UOk zhzA^fK(tga^E%D(+zKUFG>i${zghLh&>#G7E2@PdeB*PUU()sJdcZwLgOwH93 zM?dmGL6Sb?#(y)I%HwuNDbrsyE^=no>J}S6@EE^%by>lYT+GV|xk|FW1HaG+CMIa=|7OnUM*HzN z_KxF+S|789PRC+f6HDd9v<^y&g zioE_V0^L-w4UlW=ky^a+lyK*}fN4G;dV@3P4u=@~z%*~x)}TN#E1_&ePYf|`I`ehi zN+rHG-gFB6Sz@-i!`jf@FB<>eekf-7s*;<=h-9m^P-%y8NAK7%%2EZ;vv&-1`aw!V ze#v47kOlyE5HQ#Bw|&izeu$AyH~P7%W7c*^ymu0)5sO3<$lc^07ME|5FTwloFg%FZ z^8>O_)Mx%+v^yvplFutU`ljobZRQeRUc8DQ1&8)V`MW4HyA-R;Tn!r{l=^?mA7$X= z+W@2r(1{*foGx_C!SmRq8N>;D`}|Os*`d`=gc(ge=fqmsKt@Pw6fhRL#miGi_$AFK zBPAueY^CGpFdw3gCIYR6R zI#*!Pcua?5L7z{aPf^i{HXE=rMuSUl;$Hu)Q?{?qz!$#9wZndnDa7p`G}cn_F~JI4 zHUzubl94?%@P~_5rJE#Q0>Vxi9cdK36m53P+Fz^1M2F$EH*Z5P5%uDY1`x|LdpB6GyH16r#cT&Sa*K!ynAJrmD(&P))6Zgue49e(FISm^wEb05LXjAdMB-@PDC1 zCrQ{V?`4pL)F&fr~Ou6jf)oIi@Mkl)vaHt*_Gr%%6 z%9%qL?!Z8Y2ifo;_(I#skpF}Mc^0s7Ubu0Zxp5ZD7~;Hmxwq3)i`Ae-dST)+OJ+0+ zJ;%b6&m46{RW1<)C^*cYfq>CFP6h5Ft#~i2UafI7g}hbg6XG#hBniF*J3W4_=^;*PD{E69W-(d;Yt)#NRWXo~sy5_{#deU5Wc{e2dZeYXmpVp~O ze69!}+W@T)%R1p+g47on+H|gh_6G(=JzZ8YQYFKrP&B9ZU@Ve`1+I6%2Eb^l&ZQ$4 zs%`%9f3RNcf+~Ec{|oB{MVE+$DV(!cV!Is3$xwv531nZNAH2W5G9c5xs?z9X`W4T) zPF3JNd`SV0qu|+Xjzi5JgcAHKP69+wps%`Ky7W>Tu2S7PqM5?ZA~rwO#`9!iH=9m) zK!%AHYdRhN+7{QaIA=iI6|U2UVKMMlKc#QzoZao^*PfZzaz~%5gv#qS6?2Ru_`AYN zeGNw`;{&(=i?7O^kA2A{Un>HWg8!)R^M#^Qz2$|F`STUKr(eVqZI+$@ ze;#lavdXT#PPf}38aO9%1&%hUmO`zKIm_ii$Rd9G+u{WJt*{GoiniqtnP#y>ol%E_ zc5#F5qxF903Odx4)%|wZpr;kK<}ORnJNyygbWBwvKbokPTnV%y`hpMW0N{s!%fpO& zl;SMzF?Gg(D7Q#&y8l#pI(7L_QYfObCF9sa*xFL$rmBsRJPxs!58*ndax|LkfFbE~ zpbb_lvYP;c7*5Xd`a9>?(GU3?HUY+QyVpan804a5wnta@C&%MaSnTsv*B3h!P?4uu zpvj(ekq{dW3gYXKqtBXy8aM|Nk4N9CEvFG3qOrOaM2`TIx7c=6>ABIyI|9xSUx(Ab zf1cRm4dlhQH{eX?AcvJ60gGVtVaS0*g`856!TaFaftJ>aipW}+8M!@6qE4dXkwcf@ zK2FwxP|*1-)Z*at2|Tw@&~ zT-pCxIyNY`g7=#FuYh=l`N+0tZEJdsI}1!lpE*1mvU^99K4RIMpE!=YyO&OaviV?Eh6iDF+$w^13>k%7^2cC(NS&C)J)MOOdt!MrmGVymh?svl2HTH$NBwbzXiXhUyS=9Ar{zc zyS@>gp@zvYO$Kl{Jnb(>uAMJ#2yZ?8(sI|zv&ncb`ptg7wV3>Fy)8k7F1>P0&g zP&D^zpLF(N51A0)|}1`iMYWAFlm!-=%7sK)kSVT za#x9en_PCRgU0%S0Iq@ia1cG2cu8W4Lt}qrvB&GLX0X95VNp{UsaZFXUZwT)*p*un zN!;4V3rKT&dyT!;D?PTmed?)-SVBb0)1z+5g_q(<&Vf%PM%5~G_l4*GmgDBGylvF6 zc$b+oznqxyOWyr{ut(IF6XRrz*aR=eRDTE)i@?@v8%9jc%r||x_;maJPuMIFd<(FC zREd2|m4cWt7#FbTMo9)Ftca0a3^+hhR9j3LvO*`1cK61kTYu(fHCc+Wp$jJ5J~EByU6b#rw$Uj5^$j{H%|PTOaCXSLj?PCDsPh3K7Xlt3Lz!o-*!S<*6m;aSfv!)Jrzvy0W40*TD}avswK@#DYvn zIs7(w?zEyJn=D9ydg$#a0A9vfQ>Tn>OZvo`TsDPx9InF(S^GvUTB@x_I86qsmybBs zVU_~r>5%GJx4l+{|lj}O~kC+49(41DqoAIGnwz&URc|bBz z#Lk`FQ8TZC$r%0}#Bk7vX`1>Nd zd(HJCbh>F|&E$FUpq+uPOm)Y!ISlyjFPp~fdLvx3uCd_H_y-EA4+&)D^Ht3qPJo=9 z*zpx-cb+xibrjLep|4&GkkD}Gu{-iz#y%mVCL-i|Le>0-b$34U2x34$7oF`{*EnOg z%Dr3(X|ZF=7O5qmI-A7EN6&1m0VCp)sj9 z(6)ro{<@`~*U*h`;5BL1X1u9Y?itK54)DRfp7i7l%%g7akZyT}Zdni0(7-1?&vm=o zCyANUappAsB7J=g(|s+~3(K7OQ7cU2=di^AdA8OV!-2 zF6|ec67&YOuM>Lv*CbWw(BIODp%Av=s*&GgaSV|a51Qt!6TdZutjcT+|E(&Gvy>OV zi)mdlm8Zc}aIJg%T2nJ$Fv2L7{@xybe&t3pF;|od2f*Aj--DE+nL^KzI z;f8t^@aW7h3|uN9FDtXpjd0fbtWXnDN(w0#I~Q93t}1IKhKEwgGBMTiGL|h-9}6Ae zj%fe%gsfF)+_cKBrljii@LvtS0&PM&w;?F0xAd23~YR^J!zKB&1)RTBA- z#xvJI0`>$}#+{VO0!k5ip)10vM!TXK>oWis-37xguA;n<9Cq^Y>ki z7(ZxNne_hXxR^gnLs%HEQSTBs(~BRBkyK~$<%yY^T<-e$mpN;Fe z7;$LL^00qSmgbn=`^LPupmW*BCIVQdR;m0CjKS6Xt45zykNIUQxlnnmJ@s-2A z8_4SS3^CiHv)bL;8&U^HaJ+dA%9H?7?rs#-K+e*v49xNZdo!)u|6e&{n=qL|eB_LI z%Hb|_qZj|%0Y%{vC|2R(!_Pg-H|q3_s4d81;z>Q^Z#Lsb$_jB@)@9d4S4cE%)W~NK z%%6+0w{VzDq-~pbaVo{9aou2x+_25d7f^7KfO5 z=+maiUdQ5R&OR2(z!5n+h~{?~Bkid=N@3%zc}AJe!|Zb6s+;hON6|C9(7j;Dy5DgG zwEHNFbd_dBX2a?XS13twgDMdf-$DgV*i*lzFHwcp_ExV&e+QCO4LpbhS?n8Y3rRo7}3FZ3i1N8+`b`8e=lx zMP-*m-Y%OhTBDMcYz{1&j?}JrSTA6iGu1pV31s zfFxR3({B_4P`suh0L2p$Wj2WTN@O@o7&n&I(CU3#H%<0YB%XBjK zk8GG#43N;tpAhA7pUMexO*-7^JmxN^@s#sNB&K$&bokuf1-TcxB%G`RP%Sv;x~Ft| zjQw^nT66>xqX=Cri00u#jeRWmii$wc)HeU)!YL|H_A!=tIr%6HG#>~RQ&QCf;gi8C zSjCE;1WN9WQqtLEPK|c8R_*_7*Z5g@t@t0V-d=1iKglguZ>^#6PwoxecHX>ff9xK> za%1SyMYytbRl88!Dsko`2skGTbhRLLmt4UWe3T1f*WWqKqrR}ro;dIdq^QZ;90+X2 z#N?(W@H?ur#P`s`wa?84ZT`SL!-c-PQ%#Ls!u@yyvom@D#WiA&??JrL6k<=up9{O+ zzV~~^l2U-z^SRxQFC3$osg|*H-&fKp^{kK&Qd_qo-p>r(JdaH)&*Uwh*g$uu?isVI z>F3EcDMU=I}~DOjqI+-gMiNH z8(MavEZ_=A(qBvcan)TVr8BiV-DFHo-=Ky^FJ-}<{+zW~Q}cIwJeR3Z1_ys8|lsBW9u{U-JTg>Ei;7ro~%EiSOP(M1oy?&u_xtwKUUx&&NICQQx?%=<1;RkX5RmZ2+sl>-& z%g&iMO^05RR*Llh+t6`ofx^=~Ni8qi)jHya=3^87wW+O*WMXDVdxe?oUz=Uj(k|y% zoo4#uqX{JNFnRB6&p=v~`r;>hDDy{FDyr;z=wh6lO`M%0Kp zqYGfJE;9FS8Mmip&U!U<(5lZ0bhNghjd5ar(5F^ZXTY8mk#zRElo?o??M`?}E9Hw8 zn;I|Jky5zGeyi2NQ(;9<0Kot5>{ArrH=Antr?p{}{6*ZdQK0DLmMK z5wnzWacIAQdspy^ED3;vLbdlTswB=&m-Q-r2Z3E}KhRBXS9YsB=-J=er$c5#}*vVsD>(Ef_DWnR(ojNXS+>(7{17svd}P^h=d($ z*CxIWtGC0|)F2nI#xk+slgi=w;JpBzWak>^YHjsi6kPC=>W5Fjzi`$2VH?KU`llQ9 zTBI9|e(3D1^wH}96GXYUsu|7jd|2C#|C=Zv_r$--SOldik0k>1gU7|f>$~uv$*579X%VhwV+&bZosVA&SsTW8 zH-R@#Cz7LfMxYks_SieDY}2y&!#t!qXkNKNVU6XrWZYNnaZAw`mcxEIE2eH69t5?6 zRe``gg)w7}0B+i>!}js^mpw#9-*<_}-O?b9T<8T;Q(nvGzzpnT-9zjKfspENBGADg zH;A$`%DIR(S1_+;EyB2ijA^>IVqBY{h_$qn^iFd6CC+jFz(PUvd|rz{^{y`)f?20T zl=`TPsZ1Iy>;=(0BGK33L>OYwjkzE4b&&d(n+Z7(vA2T(0fm82Tumy^*Buh>r1I6C z+u!NN@)5U>z=2ANWJRWtkldL-fOx%B?6@A&c^F-f4e;W5bfB>6@CpoQ`$up{kg6p zjhO9BPh}D_S4T&VOb6m5szTmhq&<(F%+$HvO<3)NWSVe;rkD&)KYRh`R}Fl|w)rt*A7RhT~9(kTpmdsHVDaLBHD;SsJI5khFa<{M%qMQq=q7O>jerog0n z_yeYpNmgzcwka_3jfirzeg+^re%+r!84$i13Iq7IlS_O%NA-6vwRYqU#7^kc|G+ej zXy1jnR-B@Le4!@n{XfssJoZfwmFiemZV&`}Kz`Zze*3>8_RXcwxMeq;{*a@$e>>Dx zNo_%zhpdzKYit-{7(0<+XX|U_KLwC(6ocy(K07UQj`pe$ixJ&ohij21?uaTAt#b~B zj4)4YX&;-I_cMoAtKC3km15^`L27r zM&g6OkU9j@=K;_4n~}-yI{NcHl8bEO(>SY9>oCk~T6T0T9~|VMFk@7^8xM<>gjV$Y zLfL}wHaqUJUFlU)l}<(1u+6sT8cvpSa3M6Q5URofqh6j_I}1O!1drd;BV6~X;<7-u zcaJu|qW<6&;rJdlU_z5F_oQ79?!83vB*Sn+g}9l?r1xzTirbUFe^|d=vI8g0gqk0m zRk*d!Zyd5#Od7@a`dZp<5>lp(7R)(raI8kB`JmKI4LRVON7|lusNtDWE}eL7oaK(3 zNG<&jeJ_9PZr>bZ5F|5(JgHkPgDLoQ7frX`c~uOs7D$-0cf1WdDK!H!onNPe4XB|o z3$Zu%*PCXa>`QP^2N)FLuEM6Gf4pP*h+dYK09b8RI%fHtZT@;Cn;+iRs@>~jh7tAw zjlWfI*=9O>skoy@+rkP~Ri|wX&=R@EGDMsk#ng_GYN2$fF(e4QlraIYynhh!O0QAN zWlEjv;s-J<35Y}!8}mE=xO+~L{letkawVJed!tfQw&Onz@1aNff%-hGuHvL+Fj7b!)ZB?7VkuC{pvx0w0;A1IFQ55f+#Dn(Y$pjmltF>p zVQ5pk3T`svB4Paz^&HJD^`g!E2mCqbkB&Z8RqeC8^J*P(8rKv=|-c-4hyY{tJNm-Vd@0 zHXw;nT{a8VQHfJ3_(btl9}#Y{mJeG3SRW&U9G%<2_*(@_Q~$qs?i@G~(^~mF zX}_t%du3K$TT2895aA+#p#kymhl2g6tllFEoQ*yrC*WJ+rl=l2vV>>txQqkRYB2at zM6R(PeQr6q*RHmw4qVJV%v!0E_%5;NkG~iN1g-j7&k_a+$dUBuI5^x&lc)zGO7B~B zXS*pccLQ9F35HkDG*cKwmCjn15d08HdJk##-7~86kyV}Z5B^z_#sf|X#GpNn^&7lp zCmR7y_J^DIGncfxJ1w}f-k{~zFeA?!oFq8MXl4FZSG^QS3xPDQ>0=2c6zs0fSh{lT zM~tQzB7`hOR$lWBTRv+V^-@&;H1h|311d#f6Wvuw4rxz9Y7rtLXT^JC$GzHLEB6;x zgZ)6r1fX+JJ_hoX9F*u5?K)|jl52Co_RW6c(wlDdPbu|fp0!pBKM`uqRTTN{JNr7j z*^pAj3`J)iBBxrfJvBFNVoPcYgzceKW3fj= zp=ZcLfq*|JPqr~HfA|dUD+?GYbmjakPtAmVurSAG9{tg-)G;JmFdn))?}PSiYoP0$ z9CVcNEW9zp$u)<6BxSXM__da1@;tK>?@{UxenSLn{wQ*Bb)vdsq|>lFft_A93GE~I zq?cHV_!cN-SHF?=^6IGGHo{nn>3|Zc!qM?kiE30KBfx?fcZ)S z;p&WIGg8Rz3)i2np7we{6)Aep4k^*BsUA)_`&gc(LK@jBsm$)g$;oWnyavHSCi^M? z))-(LOgpiyVG>`U?|AJ|u8ge-Gyvun4FKN^QrYhZmwb#}(gK6)H&a5#lO z4X~q#pCCaP5b&uI4KkZD)Y+QbdP7>tBEt}%)V=hF-}{8!5lOrTqg#8swaU*@3#1U} z6^8VmL(ra)jnWItsaQ}dA2@BArZ|Zf3MmOV_F1`sjDG14uq&_!y_x39UnBU#S5uFBK>+!Hv_0nw|- zJ;50MO2U5%fX3NTXI|&G{;qa#n-iWr(+8mD;OvYX)0>|Jz#e)*5Qr zbJGZ1i?nC-;>mOfR-rHc)2w+pqn(5^XJ~c#$^VHt_sb6h246wQjX)}1in#SC!3f{h zBiVmi(b$^ejcYO>Na9cI#*bu(F|^{hoW9#9cAa84vjUloEZ$-+J2Vhgp8R+!wiQ05 z=Dhu61y+r$c)%v^SHFvKxx1&0^%V>SFtsyMs74DMWiI{8mM93SFX>Z7l)ed4XZsx`bFtI8f&AXi+pq>mmdO%SVpOVVy z%{NpBu#FTavQg7yS}EBi--Q}3Gw#NZG4L|(JQng*HRYtaNi%8>>ii1pXq#$Z-OsF1 z;()4qD(=n8DZK1zoeTyZ=}D78jU=8#fz3#z+twLX{~dz5-YO+8Rb-V~RvSi;uodX% z*311qx2oeCN=g6jD7VWDY`y+2QCr;!a|lRo3b@0;_|F{Jbzg*eaPQe~ua@J62Cv{7 z9E|$~NkH1Flnj}56Loeat5-&+xr-{b*o7WS2Ob$tVh>H06-dn$lk|i}*Z#9k zk_oYD!VT%O~q2aicyxekk; zegjr=oUW&zIk#b3MUneSy7hm3*!QQ(;Zm104`jPr>bo?iT(hLNDt%k+)`MeOE~4c$ zYR0}W;>ei@(5FRJ=~#+c+wC|J#d+*zfK)PucbmeoPpKwYlt z#l9X`&|!b_rM7J1h~BzH<-$9m(27gO$yz$hPvTl{PebZX7WG7qlF_B-2(16>w?u~9 zOYk9z_|*h`B$xDsEhQ;OJF}4WeaEsr%hgV^6O`UohlMqCdLLCMgK&#hJ+T`49m3aJ zmt!?OnXD%XJ^bSKnSB!sX!+y2F|K&^M9%C>iEc)cvjk7E_1chbwqedFJ*e{09o3kw<}$)2wYoNow5Q3q=1;)XQ( zb}vY;6H$hH7M{O5yi%=JUb{*YIolvx0u;FOQ^lCM%YY-m)T>eBW6bI58>**I=4J}Y zv3ST9paB8-4r&E8&gRaA(L0Qq3s?v-5ZH2G)3VOFrZ~FjI5D5Od8Nt(&#aI50kc~I z?vZZfOH68f8}GRB$=qokeiggyrdl;IICw^;-d4}N7NmN$fu)*f0O_N!zob z&{<=bs-(4F#94M2w85h7t%$(#*;bhjjPAm#JS6z5B2SLX zKg>$s0$V&6cGI5Glk>(DBC6D)>@!7(*TP%BuZ;TzEWuf7E0<4{*?=AG3QN36{g`y~v{UGMSlp>Dm*<#ZjgTkoa<7ea#plK$+t;<#KQnls zcMp4QNF3hYK+x%uF;G*yEFj019(7r9F)?jW*Xn)yIJkaHuNdZwC^RS>`!P8&Uqqr<-*uXvavgQVapIR6W8i8`U`)^$5ulwkyg`yi}=n z3-<_2!+P*7#5e**7D>4eHh<9U4_icRf5fKNl-<}#zS>ohk}1_0(Ix;!oy%nN>JObR zRhZHafF{PeF+K~%i&EJh-V2@1cO<39#U2b`n8I9a^#Jd#Qx9;xEJ0$AP&RxxmuvUN zWZx-?Ig?&6!{?OJ!+Tpk{KVKlyN)gWKDPH~eoEJJPMD4*x>VN7=ztNSOSnI9cs=eq z_;x?Ukx#94>{P81=v`GclgSeV>4^ZIATeJ7>1OY6xU|ZDwE7~rf?p|zvy5EeQ(!FC zbSe=8=~*$rG;Ca_1428*UFFGT%E5)OXL#wkgJ;{ApOgQ+Our{eT`{*;$O~SW(RQwcCf-U6i$fb}cJ8<$Ap%R5 z)rnFs$|}dtXe_Y==Z|;;tJo#`*_)bp8DOWXotCw%wo)zwq&pvd=-+0iHS)~#+o$&! zbS!Ppe+dP$2~1Z>#V^Dd?+11%cpDHHg*88Fpj(XhtXMe3d82*0vAka~E7siZ{g|H` zWOa7DPPQi+wumN*=WN#5KgQCg0D~Do%KQ)U&mj9h#6PfGA{!JJppP0~xe8G73cN-z z^|gYzQz+Cf^RB80O zr><-8N3i~ToM~zbC(}^q4)mN)F}722=EOj#ZK;|W_s~hQiz_US}CVW^9m=d3o&b> z-34-p8Zp-x_Lz|HWvT<#0?`!Mux_aqL<#%f9))J5Uk7HSd)}FcNbesXjiZz*J6xx7 zvB^dse3x1@?!qY&R8VT88~H!{zscC=2V?f$8;#P}d#0W(k7=U2f`GK1HM$*Cy}8NVU(`Veu$OLAh_lQ3OS^K9#6-jFq- zr2NDG_*B06v(*`MWz5jG>K?DiZzJHKVTTKcU+*}vY@sXzTxjjU#eG-x3NWy0PpV2v z-{N9G(|g^r1&I3{u^j47-ynRjx1x&*mR%<0+fMO1v1TJhOMExU&r%YHgxjg+Aov+- zSvO#~7Ii8t+Mm}))@;GKAi}j^2VY{vZ*O;J+2aJ*r<{~W*R;*mohOd|Pw+mKSs5`; z&H8T=LP_ft)MA$^T&pl9#cxcC<`*6Wjm=d`TmojUV(lB5O+ts%fr9UCrCCej)~Yr| z{V`ps>Ef_8Yn7Qa&;U_D_~P&;Zn?MMEMlYoH&}$`MB*NCA@>XBv?i0tMg|5zioB|uVk#_j}+oC3Zh3=gC; zTFlUDF%A^&k28nG9}b*41wOgHWeaL7Bl=n{x|fZxs?5Kd0k$AAvU&c|W-vF|!~e1c zRVxVi#}`|G!WizoK>X@z?XYaQ=xq6UZGRnP@2AqRdG(bcg0V2K8PHdG^p6dD7JFhM zhY6q2w~jS{b`cI)xi5{|E2rUt?piA>slZxoSGBp%?3pU4qtg(A4ClW|YXyRi&lf_9 zqdx&8hEH;xXD)BYn&EXROo+U2#$ZdkPJpov*4OF5ya`pi($CPuvzjFYoZZR(0IoC3 z+wXm1S^^8cfNXYN{HITGV6$5=u;Ps>AR1)&v^p51=%@UZET?!BXNLIFrsf)pk|3OZ>uSI9B9z@hQ&v zPt~VqlHo9-<0tHEhqO{L^hr+}#2j_W-92}74Wob8vt*;2SdUBzcBuD1)>wo?@rfFB z)MSFDl@di$ls)8ThXT3*dE4&<5z`jciEQ^SFRZsCn!X zY+L7&H+u0NRXLVDWBy9ejQ@k&ujghi`42bHq%wL_I-OOC*oh|DZRo4fB-HQP3xrG; zs3mjLio~rW^3?)i5&^9A{+=ob=oEWxXqi!Y2J=Z6%CzsRq_GS`IRqV51H59L zCL!{5jkyj#@hLg-YX@}n82z11QCS;O$4bO59$gjwl}rDAbUH5!Z z+-i}nH*!!W206xnOV~0;trFBD$~HXp)Sn=5XHn+l%f>mZHof<&vBo|}Yu%eWwEo;d zzBXa**LfBQR@9;)2h^-a?L26aZZCh(BqOkAIWDzTNWy9{Deaojf7k0%Oj{UrC6N!_ zzy4io3k=HVz69u>db=;SzmIm6N8E{~V9u(;Uyc4gx=#2YshTlp>z}vq%Uv@r1`WJl zfdpt(0t^P)l|v8K*!8*+=pq8KgwDTBzf)m7`E} z_EWQ5!zPM91rX&x2$8Hjki1MJ%OY1k0AOL%^GDZC#UJhts@M{C8o_3L2D2PNCHL3~ zxt!aNld_`~*@uRZ_|)UeJutW5tliPF1;DPqqL-dO2{>p=+lF@W@ZQN2RN<(%85w!9 zyzXgwhtd9%TnMzzHi?$>GJ#)2HTD=-A7tD}>t#pfqcvB25wtg(jB*hOpYL~W-8eDZ zR0Sb7Rxt(fGOd3Yzi(L5G(msZ1}W5SYD&c4aS^pXYEr?YZ#0Et-t#2 zIqZ#y6R;g#M~k~kd~CsHxb4}i(muK?)w&O``q9ZlA;44-y$JW3E?5rOj_qAu<6P6s zDvK+4%qG!_&Z_zpu*9CYIlN2gkMhmOBPfQW5_D=ePz!d6O6M>%3|Z=qpqj~EP0v7; zebL#F+8~jr!b!7|MPsSCpS%BK0pqgPH6t)K=1qTWauEYW$m>x3J`G%w0k1D#114(}#S(X!j~nQ|#L&k2DM9&$-+98MDSA&p8_X*Ct&M zA>kO%-z53kz8=+{)u10V=Ye?A3h2VDn3S?{A~sjny+m5k9VU6J|3p6bnLbn~N+TvJ zmwR50By(O7KP=!KHCEj^Si9=Mj~3c0XLd{>zA$c)d6vT(h^{iKTTOhCPJCANht*g3 zrhOyDB+>~>4H&>98g3YM)S)uKiVaD1XGvNXXp&@7%9C>WpglOQsnV`x=VNxgBE_~> zY5GeQwPMUMAk6hO2gs9WhD029Wi51S&scu?{pg@2(r!5+M!(rLYvBQbeL;6l>aKLq zyPVPVxUu2~{3Y7OV*4__RoA^NZgpEk3h}oZfq2}|==};}@k_~pgZpM~iSCU*;yx)3 za>FwwqNO0`+3|;+6Pn!@O>t;d@z&58GS+NEeQV>NxSJr#YfY|4Gn8>K-rBQ)s;k&N zA^FuZ->wQ`g_YUnAkC&dxszQm*L22u|GUfvP~#_I%y+5DvsVm^?~t0g8=Dy}$ZkXy zGxbDuPhE(ZxrAG-L=Z)!X&D`7X)@XeGf3uS^jchfsx25*fOjF8_c+JhYl*LV_~!l! zWlUF1q$v5s?OhQ9Idc~gEmg&0fAV!`zia0;(2GZ`VIV?fN&1ws2fp-a$D=+GHDMQ{PJWM`UX7)s^HpIi7Ph8=Om181jz}H^3j?+z^ zm}8wm0W{d%WTDxuOcu-zjWrRjpx?{pz!;Iw4)3A3j{B=5zW8(0XeOspxRW^XOL6nd zGwo7s5I+WTj4L)k-0A*(C*h>BEB=AA1G`T5WQ95vI{og_HGO^GMtR?+6{xISH0J&l zhoQtnP7{f37`jr>pGn@}3wi_WwKLq9%8u6pY2%eNguO%46L*#Fn}>{Ad+ zllVN^Ha5K|pw-Vl!FDeeDyEzJZnt`ExZ->0B?)u##1J=;=5&{j?`8ClOQWm6-e6Xyy%lJ&Wvryvy z@pRPzQ7&KGt5?0EfJ!NO6(yv*!K;*{2!iBFry$a`sE9}`E8VQJq;xkZu}Ci6ApNf0}DF>Xzv)Lfg8(`}{H>4{-MrNcbQ%BO3gJ zw!7K*0Nv)$r(b8}mvZ2zsPr>I9155d^3g@u?PAKA%;4X~kjU2~(uLK-&pdPUJTJN- zxWcOi!jo2sTRWE%vs?SW&919P1 z^Filq-kiAPe#h19&|*Tvvb; z5A(?OSpUi$7U(MOSMQ-e{W9tA#8-#6!f6+c4)zzUl-jz5V*6sg^(6llZ3OzKzaKM> zvuR!44qDcXcJcK-?^N@2gfC8>e=zx6vj@0-9P?eARVfi2(-Y^ZX>O6?6``~>92^Ah zK`i!J{`N;Y-#g#oNX%BMQFz}|zT#e!pf_UJbjCS?5r=tSv3r_2ul$Mk=N;uu#L?OG za^+7yTdw<%NIA9O$m3c%|H$u&(&mF)sr5;!iR~v6f86SO&^|f(vb#=9xN62fAuU1< zW%kgYJ#=e4J`!_OOHAb(w(l}=2Y+eI{*f83jrJ&yHTo3f_V}ucJNcCGN%)P7=KsG* zStop3$u%#Yx9rh4X#S94={+j+#v1iJB$#ufH!0|L`o)O{8N>T;;%5(5jG4>*=8^rL zA2Zi@+gdb0kIaK6fl6t=l6Z|6s zPI4h473FW0{k~}F*6FM@CQ*4x)H*N0yt)rhI4(CxYV!Jm=$arURA34bJnLUn46aaZ zKGH#YtYKN0HHG_?N^SaP*_X$apFIj7E)Ha7-FFQQXO(*zHm{e^Cl_NzAvmeu4 ze|e`%%5l?isV?zYSfM+mfbk6?>nsDDt-MJ0R`h+lLrO%gkoCQ4a48@-MX={2X|p#H zQs`K1ULm+7PH(Cvr+L#GD#T#AgiwLT^52$2xl1$4y^ws)X2AU}ycVoo z9sTpEQDeBi+5FDy&6Z}t?IJcE=Hu}2SrO@)w--UxdS_UHe^#0FbAM#yb%sdL-RIlI zMBX@k&{TU?rpDZG*plpF?!~&LCGDB*ISZL>#v=y~QO8GxluPet2&|anuh)#S0v+k% zOYC~4V+uii>tLsrrH0NQd)IHM_{sVrI-aj1LBSh>dwRDU^aE_Xoi$eMXdpu+9aMB7 z8V-fvK!TvjW>=?~x3>8KMxA{yqFbNLWmRKiAWDZrCCHBc38;|C_YNqN9jg$iw1KkvH06Tb90@y3_i zM_n-&6Rtgp7wG?`P9Ohif80s*#2jjOG5R`tx~;gQLG1S6e|~+d8ZT6?N#2M_McBSC z8u>JyKem$RiF@DiR6JZKA9%a9+Dw|8)=*`o5p|Db1l%*o>qaI;`!BZ|_!!6#ER9T> zjv*tLS64@D^M}3-W!#v4V+;!b8B+3RT}-fVG8&?FBj$J9b-O@E-Xvsj$l7#)gr9_p zo_qv9T|!Q?H(Y8*TVjV*eH1ZS`U`FKCN>S5BN;q&^hX84W$qY?Ww$*iFj*c?xMa*j zYwAdaT$1&vHxU5kSHDfjvlA*&MmQ#yN}he}s7V}`}-ML|VDYFzO@PuP~`X=N*f zwVT_$vrv;=O0504w{K=DnQENlVbyhH6npbi^z>da32*5A%MDiG@+#s9{QD1X^le~j z{j0vv3=br~rH%fl!YrJ4y8(FYXk0=-(9CWypY0PAGFLTeS$E-ppyh;GvjRNqW zP$9Tb-Ezp@wcl)Z&J;rc_g0HP##~bZ?JRT~nwWV$GsN}zxXB4jk)ww^Ua#GkXs=H( zJ#JNovvH75<+(`ID7*hvT`APnK8(L+>tArGSM}!t^O#%C@tjMp)ScVc^_?h7d1W_= z*UnMW{q&tQK=5)wQYWY`T(pplG2ojk3X}OVoAf$PK8W_{ z)lRrZAGN*G)#twJfnpaHW?|}8+bzC~Rk1hOz@6~8aM{L@Zw-gM&^JBCFwrsZZY7G@ zuPI?mi(W77jXM9gI(^Q5=38x_8O73$<@CYqgviviaGjL$ed4u*3J>Pbm6<9&1-*iw ztxk&AE&uvk7}JiJ4AeC5EwAB>@Sg5J{e6F)x)g<8f_P9RX4xv{JIb4P z8^o_i!eb-o6{Y^_znrz~@3MBJ&^UK)?9k z&gU;F#s=bxT>buTOEcqrA$Qk~y^hHqbQZ6iE7Oe2F7z&kP6CpfYGkN0r~0Q-jpfk| zkE0uHzS7-UZ|+3Yx`O5?`d2Zc$=^nN(}hNU2dB_~9FC;Ey>IX$Z;8EqiIUmn0*}TL z8+647v>2!_<@;Pc{x^NpUn|}d{L4dK_kZq@chL+@zL;md$)E{kGM>z_cZ>s#z`=1r z9$z^(dGj_-?XacehRu!8D#L`s!&FVi-3JMpvDNuWlyrgueyzb9iHFj@K_=ZD!X$n$ zTX{+j*h)}p(7}4{l}+_qCE-gl`)?_dLVL&kqkHJa+yz{yDtzrwfY|u#OfXNM70v<8 z8LdXxqH4Q8i+ugM4;qzKE$|rJbPZRS)aZ>>dQpPWGTIov`26>ayolO8w|`ia+0O9_ zZaVy7NXI!ab&WW3&X&wCZA=_O=%Fghf4d(16mc@y+>G88TsB4XE&OhZ75{r8W8MpJ zYw9)f5(y2wvt)bG-HH)ELrfW6*P7<%MelgbcJZ5UW!0@ch*k$DJ{{ET$qxv+ znKc_it;pT`;I_94;t33n4KvrqMJnwb8vcm@#caL4 z1x795rJ&J@yPpo1ET3+XLSheK*kasQyikLtpq!F?4{bH=>>}%NY@BMxRV#42O7UPR z(Oj1GDPQ-pZHX7Qrk|r2)=FRVd>{I(kY6=ASpwVuqIzY>f%DyaWrbFwiRR0$SwFre zxj~(6C6Y8Ax|q}5n&iHexh3qIq%oZYseal;4kFe5W8eA~OXCx87ml?yds26b{rsU@ z`M~5HxV=gpb7*WQXS$eciCufez?l|cz-RMEH{Tx=u}U14fCIFEAB;{YJ^-D&D~{i> zz7@qdF$_Y$}I^d(eAX|tF55t=&{TtlRnkyk}8xOP%{%_y#m zS6?yB$Xx`HWaMph*9`gQx4+10W!d7!?&~t?rjG|p(q8WRM)|UR*o)nzCjaby%{9os z+GUuUW}l&2@C(Jr<_>CsM`OQ1nM?Hzbf7oIswEcHOK<{CiC)TPw7(J z@VAKk^t0haV@mYZo%2}7Zqcko>HJ$%>o1{Z`ex?d|MmVeUXM35(zz!&cxR&E^S7A& zA{{k1d&-VIjyd!Fgd=`EQI~`baJvlk^2*1X46#fs!yhK8-Pl*~>Ek@@j_GmAg^mgF z(~tR`wue=*%kSkTsf@@V`$l3i|tTNyNhZA6xUj zm5$9FTtvd8-nKuorltt44BGd+X~5NVdVy$g%g6QE$s@O#$F>9d;I`qVRzAD2>q|5Y z!*#z-&tO1PQu>+xT~=Kd7W-_bT?w36?H{@AX*;o>sY3oY9 z@>mR$m9yA>kvB2%%0SLa;c+{)PGXZILNV=xpnXdh)Jxk4ys}=*-9G5x#|?Q z4|r4T8piWl&al+WYKMRP3L0F?hd1gTXkBB8Zl4;Dc~f8UiJzqgc2e*>-I*IS6%z8T z1$7Wi{W*jXVhX(lCiAZpuR%-Cy353G6I-9mS8-wk7&v1@JE2Bzc7YjmMLZw3^mT!Y zIX@T97x(S?e$fX2i{0ViVigpN8m)&(8i+Zu?uYx(dXVj}BG{!*&Ao4kM9{Yywc`U3I_yN}Rj z&YDQ1x7%M!g2=}PlU55omTp0y_8dj2-0ki2$#(lng5HiTwqFg^(#s zbQacI>kpA1%Jvz+EY}T1|=%<>T_T>)Qnu(k~fOY2#nBw$C+oGVq8WTWCdF zxJ5sVa=^b07gCM(5@|Xtcb{FEiM(2Hc^Pq0pb`2-pNmy2H3#>tM#|_)?21TMOT$Tj ze&wTA29{MA2V-T8Jt~gqh8fk7IP8U6>%DgT;Kr181DBL5qN_*OLxQI5l(3GV7wY*A zH+Gexv12VS{>GQCphGwS3(0-1U0tTW&*u9K7Q`IIRtAy+HKi_Ovj55*?s=H~*xq#Q z$wa|lD-Vs|X-+94T>YMWbQa9T#mD?fv}!Y7%fZdTLj%qEc`KzP0l1%5 zvU|5Xz@#CTy%Xhc{#WfHTji&|bFSjI{X{SP%$B`bykMs-6q(GdR%8j} z=zxLn{hOI!cPV)Q^4MUs_}b1+SJik}CDQ7rpK|koxIR8vYa5TvucyAomCZ2c0QI*^t7!Uja=xsQ1j$< z2J~kUC)4>K=GEhFjMZG#i@!D!FK_6VrB4zIfc?N(vF_KgIo|bb3&RdYL7L`G#5iPJGKWz<|_IB zwxOK3!z-+?H=|D#;jYZ!ejUB8VkoqMS6e@xEQ0Cnf&=zWVxXtPZn=)Buj#-Nlxwkv zZeP{t*md0DwL9b(H0u8`gPO=PpZ_X+DDAoWjPg%7+v&9$=gy5@Be;{Ti7|)4E~j~! zS;xvY26#hH|L~S;cq=_(87pN**cX=I^a??t^t2c^QYZ^O^eq~B9!%mi zW4;laEpy+mf#a{!&T!|xTXuN&c}l1ppz!%x{&&1#zA2U3r`I@x7fX1T+ceOw9mp@f z5Y|`-HTvJ1RflsGusJUX`VNyU-P*XjTR;9Lj&=VhzAsk^TReDJ=d6R-&EO}^;L5nQ z_GX>8st$9MEaWcf#g}bUV6e;P*rjaQ+f&aPeqPohzV`PtKHnxq1BPaxR3zYjdgCPH z9-bcaJ$LRmGd`bM(nEp%yjJ#Auj z?p&R!HIKSX;q*-gN(GO{_@mi>h)+xx=!Nbei`@;QS;F?KeIq)v-k<&dFLHe`18d}t z&A409zM9?aFEY{tA4{OZCc!(+oPLg}pJgEu#5p{aZ)EBo>5mNvP+C*7sP|3b`j@!L z?sbm$>G>2e4cXGP-FmwU1@Y?toUZBH6rQ!yrK=TD@laaRY4~YHTB3CweLl%GPQPjK zL@PvXjBkp%8FAM}bH=TaM=$fH8DrSf(T1dzF50!2vH{C?I1n2EiyNT$;P4mmi;9}} zlKP}+7!F!dkG1?|Ar@D&f1NJGIrqpshVpsa&L7y?G_Si53;TG|mwwD+skfu|;+ut>gvF`l;zc_L}fM@bt?xa+*mVsDsB@my;G#(D!RJ8NuouVqwLXP|#88bV7CXp|{ zSrTmOQ!`Ul4-^QVdxkhkL(Pk){cq3l*O!nUVM+QuufAM~do)}DGd=40x@z&ITw}}r zP2yG$WVnfb(?p^CY|qyi_R!tFNCPtEK)$JMQ$uzx6uYZ-e91r~tw;lr5p>J+z{X`9 zra`447U^olL81zQBwcOhxx5vO>crhel602MAeI?BUktU*n~D_CkRNU@X6-Lif~Hx2KZH^UI4gw#_V z=na#hIz2*h?)#`c0*KO?Ceqh`+w*!x6#BQ@!_qO5V#AKXx;_y;T`n z{&WlYSJBI%Y80elUaVGv#ng2Q#`>IzSQ<%?P-?@P7?+I%;X@-y`g#=u)AJ-rLaABv zJZJ;EK-5m@>c5HKBW_!`gmGEyTgh7pRbwM9gXhm0+x==+2(URr?5t~xYiis?k>|gJ zPqC?sv_b%ziV9v4+i_z{ATH^x@@Uyc#ta|O<2h3CYXTWbOw(%?vl~Arik+I%GM>v> z!6e=6!wfx}+8uvY>c!J0xnY)+NB~aJlfx%r=U$%5=q)lcxX+1e5s#OaQz z=*!*jVW7;|tKNCxnt_)3L`HGCzb`xYCi*0)7K6;@-(}0BG}*Y{B<)zNZ5?AqE$}xs zbsT=v??_6J#M7BJ^9jWTzJEhnbs=d4NNITjOZ9y@gA^zx2*pD~(lmYg&^<(<&|Y7RNZ+)8-`d{-+;3VF4MVU7|a zvV}8Ac(Ia(X=`2;qPsB)hjO{e#K9GCU$Yyj304ghTWQ4os$zu2nG;fh?_K3nMtJ#? z##bH4m!HqzU{aq)^HkquAsM;XSAe|9##As)dOpN=-6whVy24Yt8_g2lU$5mQ?G5_` zgsG96C0Yshj$;a_ z<*q`NAo1NV+dA=mp7)2hK9x%$j~_MsqeohebqoDHDJ_427+I&uxQ|~-9ibNs;)&CC zFX~YgHVNyO(emOpu-;J^y+^dMFSAyo)9^2V3tS9B`td?Obd%ogo|;EDwfegA2eNqk z<%7AmJTHm!bC1uX>yA3L;-AI``mHO%N#jT6vE+{oKm+W>lz=t5Om3)1bWiKI>b-$? zhaCdFOf1aQvKdt&D(vWOZ)~;<18@>M%4O)&KagDA=wG0wT=qtW5Ax{CIC%w(;>-cY z+vV)x9HLo1l~1JYWbY+x5ZClAXRJbHbPP+_P?9!&l5?@Mh=;hF-=l%W^m@=isRSfU zj)mafKrzuu)O|H%9t$=u&DFzhI-4aaSy%Vy0ZMx%QRVFK+M^V^xK>n8G@AUz zk{QA~Mm6jYG!+3z{0I4kD5{ytg|snBL>p^;AM)Xb01=aEf1P;}3~cP#zV%al;I|{a zf!-oNN=uR+=*X#Nnm3WYrwS^SSO@@3+1krB3jlSP6uU`(DKU{*M3rit`u2|M!so{}YrQChauI0$j?Ps|BzL zs2Jkzv;9{YshB#l1=|VeGij$Yt;_j!s%vkHNAyEGkY{c>=NvuT2cm_&Wv(xW&*zw8 z$nbe~X=>|Q?2an`K51qJC624!1=92kl=2&%r&Cb-hv+6; zJ7+rec6%UKY1bk;9EBqE`KoVRqUvD#aQbe3DO0y!Zzv0 zxHiD2c{3?wUrZxO-@5%7n^sCcl!bJK=pa6ADmGA1k=7|JXdlNRN1ZDdx;o!)of$xy zMLAT;z&h>dWujjJizc#{pN2GrX9Ra(D`1z+=6~2U+|-wY1htb8up;}K;zsq0M%Ll2 zuqAsi6v+$T3g(t%0EiO!q8*zu^kOH!0@3_@=WrE!2Ee_`xMxvmBwv#&Nx&v@XM!C$ zJKEA*ophL0c^LUKNdLcY2f~nA^Nrzb86H2Y8ltCoS!+SaZj8Q!7;y~6U+uGBSmVzi zDM`i3P}=rtk^B6t>p7{n#EFf11Al`EDNiz=KenO2VwpvP(T1FBN{u&Sl*|d!d9Ipw z*2quyZG-e;T|0z&IYVxx;$rcm@i(9Xf#NQ4e|QEY0r*9&c5C_Ft;z7c;eL(iriw1& z^YgIYrt|NpAC4g4gLQvNkxU72gtuXI&-RRDX}hB$+;-eXO^GX8l!NaETM7aZOzO(> zezp%q+8E+Xx+4`xvB+XjTJ0S_t01Z~%=w)SqYIWa6`0Y*(4qj+PM^ktE!8_Vr)Vcj z`|4$4T=AAG2Aj66VmA#Gf*yneze(We^+kM2v~1jFaJgYAKD6K3lZ&WRzfIjboA+=w z4`u+$<~#31S|t{hMy8=GvyE6F-}wW$yT56Py8lZMV8pzvJ+FD2Xcm}>2;}lKNv(`B zhZ8vDZUOP?0OIAzLi+zm%lfk@M%xov5+ z5q#(4z7sXQE+`Lia~XCS>8d%H8f+p1xy%bAYC135n$ntUG)o9D==%<nVEY?^D}Qxe|-STa3Rca`i7m zFNJ;&A_Zk1OSnsVfZqY;AK0*fjH8>szY;O?%XqMl8Dq<^!!*23V!);U`8EJ|LONKB zp-#e(V8{EAO9f$PFMgYnKci8K27bg_8os$T(PC@T184NkJ? zb_mWN-1~IyJB5xE^O^@Rxc%0nWW+& z?8q4ne}XVwBSNZ|?CmvuCTApw(_rcosq5oz*DFY$#Dts)9?k(UiQ&MyeEwnvx~P@7 zc}3>HW?*a0HY&0k@A-XvMfA3BZR0Haaus%CIGA9tp#JN^MLfivD8sE*k+XkT?0C)mfJ8 z<31WvOjB(Pm0h^QuR;2KrX#?Q>Eo~+WS_Up-OiDB#YBhk@;ufK?AfWQ^>o$URp3p# z71;E9B*DR5({%q~*GA}=pFkQ*3*qesD1R0hhc8aS@cUhZI>zaoN! zz#VzKhgKZZLG)geQI^_&0<{Q$OkMi*iuC&EJj5Gxhk3EHFku{E%(@(Lxvsd&a6bY6 zdrO5XjXg|ip{=c^b9L7P1NY!GK>QZ_Gx%$m2)f>T^v%jO)Em2fk}Mmg7}WtTrAoo0 zntzZt&MX@Le01}og=)>W@h^^)xqa_3aT~?GS#Ao9uKsOWvZNYK zDSM!O-=mVTdj#qBAd$Uv$v$wno%#u7gWb9g5rnbH55xBpUNo|+94PJ%3BRjt&Umt1 zFW~WStSr4MLb-2uayDKrIYi{y21=Q{K{5q9Yq5v1sY_-Km^Z<}8YtY!NE`G;FLcSi zc>5s$-S|%1Y4^4VUFl!EF!RMn!7q+=xS_72`Nf}AlG~mRGsLp#~^KHps$^W$`###X;Lw&0%rY=yYI7IjY*+Y5TJ z9Gd|aqtRXLW7N7;T2?GkpYVs};5=t&Q=f{;|rus>!~ z9lnpt*)sh}RvMTAZ*72RXrr%=C^-v|1s;u4!~w(dWOoaMJ3B2!(E;rw{dRB_OLLc2 zQPN%?m6Tb;xH$7J6^8rGgb^BVs)}W5^WF{ZQ3UP+D}~&jr1*9oK}%Yw$CZqWO6K#^ zgY~^r@k_&jj|7&&({q+D%!Fsa$!k;9Wf}|fl2Egqlx=up46VX&`^aq{;-iW@uVg9( z)evxiHOel`QYYz$%Rpd{XW&ziu!L6M2vq^k6k$!&c)nH*m%%bC^<&L*#EG)TV3Ak@ zK;9Zsh?;~ria-#ut${!~8UMgW56j~lI|g@y1_Aquc~Q$VmAeuv@+OSLMIr~B00{|V zXZVu6?M$_;NG%@)l%0a0!419l{52qvxxHg_+KP9q`^4`AFk6$pGkxR}>MDqy=>5UI zh(Qp7t*xVkYVo~^;$<#@T6V}n2X+FWK3yjbLu&V7Kqrx$gck7Qc=_l}hRh&)ZOKEU zPt}i|e~Zoi@&Jm?(Y4U&5X&9v$f=@azNney`yOgWM0um`DZnLAW%vxB0s!SJZb{|> zlu!JqdGsVdUcZBGjEtZ$2yesr-(a9rYK-6$WG0#_2P8L$+-KK!`>5$P>|L7HQ%4WF z#g77B)ChzCbYaL|U(nMsz5z(SvL3rYW)|Y)DpXGc`wg)wC_o5Iv}|gSr!PKLUvORs zvTgiPO~BDl08a-)I`1PC2^l}0H2hR1eI+eH*ABzOqMCum(hXqtIJ;VQ)SZXmW?LiX zR(cIT-BqNhnBlu8g7y90Sl@^~qSY(n`G#&mU9df>E{%NFgwc+N$v{HvkL}j+VT4Oc zm`B~6IJw{;NU~sQt@%kI>Ukpzkm#@Re1d}d-{>H< zBDzq)a=z*-B;Ua0)_KZ1^p61aE@`*fMYo4P#i=57puwi;gds3m@O!s~}?8qKowG zX-7}Ef6=gWX z-63CRJhutm2%&uR9+d}TFY50Din?cYFcZD2 z*DB)Ax$m!vmyQ6Bz?{1qO-2a{F1-_vi7Q8Ak3bJBug>@JEQbzQZ@xAn6rzqHp$Qqj zfx+4wsGY328hMqx`U_qK=`*oDR$LZLV^ zs?|rA{JJ4e8cSMn`)R4af ztz2YbkqGITfAm!l_HE{bP3nhYCgD(_MnONaQovYzYrIu@xI>fq{a0tr0p0v+BlXph z1+M>P6ygeNZ^X2LtP$X~Xc+a`A&5tTqXb;l>Vf(3>xS=x96fEvz_c||DP&9=DiD{z za`iNdz%J?FCuNiPG%_BUzMwtQGv7vX23z5~xLdz&p=P(TVreSg5?!KdEVf@XU@_<{ zo>%a(v;*Mn<>pgH+|}a4t6K5xdhxO@m*;*$!s;PZv5ptfoTpL{$F`=hYf<6ulQ(r^ zC@V|an>k)TBw!}g4}jBDaJ^LHgYY8`^;){FY9~RWagEFL5)=)m9d-;KFYU`+3LW?+ zPIuTq6XY*t<*~@6Ryfh)D~t8WW& zodY6Qk`%024YJbQB&QT?5U_pRN?s<<{Zb7JecCa84QSiQ!J`)Gqw=cj!20YzR9Rkz zr;q){<(kiqzo?QlPGr^>)@ZT!7yG8U@k#G+n5gHk1@z@Cqd^EcZ=-_%Q9cCmCJ?x% zs@cLU8@GO}R9~*Vj|e@V(tN8;s!FhnH4jV<;#Fo4e+pbZ{tfI4WeLt;FyH{w7*)-pu+)vnrsi{?0CUJA?T>#2x>@&1S@q{OvwjSUcOW z%41(0ghroB*jbs@@Ps zo-UYCQy>RC`8aHRSBfKmix>6$Lap}=fz;EDx@W!EM>;fl$Tt7 ztA=ymmoru_Nikg;zW;ZHLZt~j%Ac=;vQaCfJBS#*{NgEr4kADRFi;S{`D0Q5E zPXoQ!5iFQ{1|V{;yNf-GN@+L)yXjl691P-v$LfoJM*!G0y1V!S|7QU!PkH>W4l_LJ zMBUr0`aEeJem)D=_rD{$3F{~H=|8zW*(2b=FT2Ci`p#)ND=KX!d?`1FGs6`UlG>Kf znep^fARN^I3AxaCGn6H%$aW=pCnN+ zALWbxW)SdyEttBRhp_vic|2vak!L8FM8vj5rN*Px1v|>$rn03gs3tC19e|v^Nca&y zSt+jLPe)p5M8gaFO2FT)4DBvn5iI3$_rF8oC+6-iVdbIz@Y<9U3L_V`d-5jFx~q-I zE5Ee1uS<3>;9^quqo_A%s6wtED*7%swKNUkFrytcfQ#1krv)*jhfIk;u1|w&pjj7F zIH8d~sDUMv-wnX^v%z%lXPYtDp5I+x2kF#^$8F{VIxq*^FR>=Kz!4#5jIfWzEc&C96YGC3?n?hpPgChPwN%34pa zc|4-!=a2`1)i!>Xd|ah=CVy{J()~n5B=V-{W70wb$sY*pFY!0*Vet>Q06?hetZwY!H7QG#s4Ok-0e1rl{qu-?XLB9P29i41<#2A*}@$g zJK!4_1I#1M)(PGqPDQ|i^B9KO=CO?|&3iFFE@f^_}= z7`8wFM>tO7lA2eOEE~Hx${;CZcuxRUbns z?|Sux;*%tSS~_@iIq!u@b&*^HQ*}(;tT9jwC(;X?(PMb%jPox zp9{z_UG5&4>yp!;>P-~m{RXt+L@S!*cHuQ|NB?zPhiCog{|R)+9(|6yCt*{^=&8T6 z_+ghJx8Gfu931W_p?fUc(RO!jk*iKS)-gNz(7G8K>0Gi*XSS&f?eZb|Ks9ht*D4w{ z&I9<9?x7ubeN)kWsEF0U!ZPbfZrf`27(S(sr8IoLI7$JVP{wZhO^_uiHWD~iG+p^? z-+zgwWTCTU@X*LlP}eCGB+Wq(u*^fI$`WdfP#5W)|94Gku}}PD{!wLe;cwXzjhg%t z{D8o>=!7vEp9X3G*|etvh{mG{@V3eD{;6VjA5hTZ_yp0cU^EJSz0Hcl{47Ve;N(E` zbQDb~%y=9Ou@5XNZk|cHA1&Dn)lcM=0|!8VyeV04|AxcOeTo z#M6e8gN+N#M`mb*^w{Mc=?iNvWwDBRaJc*NhE&}3l_LsS@Q{OT*@w46R?RuXm@kKpWce`Ei4hm^Z(ziIL}Ne# zm!?~XMWy84bG-*_n+U8;)$)Ssy zsP*ZiXb;jL(Hf*$nYMlo4wh_ws#>`u(L0RQjy%I#4}>Aznz-JYA>aqQkKs_dwnsIU z#jfU1R4tKc1Pm8!U&Ub(v0un=G_F5X=lo=e0=1*Al?*;N8>a#)LK?!2a=1a74Hb}c z#cu)75O-FZ)Sw*`M6F_z-_^16HK_$z?|%gNnw!ea1-^`Lfts<>M8um6e894heSInd z_SA0nPc&`#0TJ5X^3j)DcqnW;VqM2k6b?_vX|^2%>|03L<|aP zIw;|-%jaTcZj13vDE!sZt{U0^aeTik{g7Ozw}S}Y&0k|8ODI}u=~7IMO%uN zOZNKW$6{FED#O7YR47EHvaY|Z;`FO$94$u?@l$b#9U>tF@_3R_ucU7QMjP9{67E~$ zVn!2E?D@Ehdoc^yFPT&k9wso#FvDkd-?G(48#1r01RcofPI{UNn{# zL6rtm)upcQeC^(Z<8qaZ!#*njM3an0kGcW|BplulXzuRBZG`y$M~gvK4*{oBTMYHk z_1D7e#w1EH?gs77Yhi{4U>_Vs3sHH7s>(F z8l+8)#SZJPkO|qI_bz+)GFIWxwM=6%%K_$EnYrJzGSR>B*i(RL47Ao_uP(NI#OyZr z>C)Cc3AxI7ojXkUxMRG}Qv~Z>I+Vz#WX%KKU)>BiCb=bY;!}MXk2I`z^rl8VI;Krg zu1P|j_wQaLuq(SmNAWyE`tacd;Wx66Tn_tnKWP2byiM9rz+M)n{D)8~B3#~7bcrH;lWzJEQGUtv#pny=ZR2G}Ad#|84RepW zHqdY-P()U9`nDLX_ORT}j_Y50Bpt0Vt^}noz})~7XPyMYU~8)G&G5NrQ0WI7rF~8d zZ4UY1=JNwZf&+S!?qMUzF#BK)wfqD@1r-d5zg^M0KHaDEZo|cDqEfSvK1FM5R-%@V z#`!l%JT@ZTkoAd~sUw@pjTL%|Gq?C#6`3Dq@g1m)TSsp6GPspd!lUFTbo@7F7UuK9tr%0p(`oI)0QfnTW+sjM2eNM}9qnBD+IjDE$BUZ%JYn>`h zWTtj*XCwee6m*Sf=_){pVn>_V#uA5I-k#UrWTgQo2o|_}qsS`1>oP`+mEqMzrBhB& z;4x9Ax??T-^fjw@S9v%C91Fud&C613%cQPT>`kz4vQEG2cbNu8C+%rilhOarKpP}A z>p_MsT?u=I=Q~oU{}R3jqH+C)NhYb7OZ)hOt()gYJ@vfzzdv;0Ykv`-cfr7XNog=wQgg|OgQWT8h zl692}$EVyF`P#*e>Usq2+UMX6m)zURGSsdMJQJW_J41+2tW-a8+s*>HLBAwpksqP) zkg~ZKs9M*4yuQlgURGgGu@$l1{|R**_ZrA>sT{P9Ghs&daX%$-_fhJN5_9c)3C04Y z$t~p4 z!YXG)3`k#JDRC@Ax1uiO98@1ECk9w`VOLpG-=O;#D^1a%<)lR3(M zV6rUoW@y$bm9W9HO6y7nyj>Z}62G#!#H}dh|2wWQ4p9X`JTQPJtb$3`8(?y$NdMdx zUnq);(+{}uRX&(!cC6}1Zn&raPmpzh%bTXhv`DEqODs_=w;}tvCSvxOh$_8xKh#kK zcv3tQ=Uc}*GoRuo{Y(KIuV=>rpAH|h1EkLJQ(&X!e}7{TBJRgQZ$8ND=-}&|&yw0| zAtoYjSz*IXZaH-CH=ZibgDlRGgO23d`4y6I)Ty49>_o#`SMyIxBYVhV*fbkc@YfaX z9sTWQUoubwC%Cb~P^o=xsvAzS%5|!TAQur@o`l>{wwok?Ta`|@G_s}aL%9#ia-ujc_U7WYv#G7jX1#eB zC%zQ@>5G^7j0jWlvE0k&n^z(_f~U-VGaEZy3cU zfE~~rBP%^L$3*4)w)jv2CHvwt^gq}7mZ`85unqv)0)S-aTplz!c+1yP$>ajS=9_#i z$+Y45Wv^eY<6Xh#)q9s|z@c-{qq9W!(g;WaClay=!Mhm;_stGF8$ zu?ZJzJSXPSUV`Nc16S`+r7c8jj&WZd$?%SvGXvidP#J-`!jfJ^Jlaqc1*luU2Y@F9bs$)8`Pf3C zeD9c9I`3;B&fE7Ly1r*cFP-4ikeoUiVUGyjm)K&byMLB2asQZyaMJ}R7ToRe<@J$; zLR0vBoqZXK5SP}5LKfvwX!>SzrM(>QsxYBThwT(K-jEd%F!3wHYy6`3pM{Y_f&uzHBP0%L2SZ(!%su&G8+ zAdj-(YeRMFuen0IT8V0rGXP3BgP!4y{G=tT6eWni0YHFd{`QC&6zxRF~FxP!?lf*h%r2PK~19#UH=1<`O6W|pgAFlFR1kNL$ zhWSC@%`@=R6cFW8<)Qn4vwO85PQknGEa{1!B~l}A+d&yn5v z^m=NRac-PP3(7xk{RktpmErc_8(P7?i{2+r?uOopeeoYHhMNspV+30?svZJsQfm-= zqc8UWo-twUd!4wA#U;?P(}M|lGqTBkCYr{KzfJnD@3HpfE@YXf@iX`|L<+71=I+u= z+qwJOO^g3d0r-w<{)?Y1`QX6>pd^SHNVQB*#5)2iU{w&gXyx}+_pos&=YWnmU&cQ} z;zvFLwNjAT_j6{9cqqMp>Qq!=Sb*^Hk&W;rzIz^ZvP9-L{vjxH)C7k`PB|7y?;&5N zX-H-CHv@0jk*jZdI=0q%;lObOv=Dgh)p8_Jte$}4O;8Y7 zD{-;+wA63c?a#viJyl%s?E31Tgef{bLLkVNYZ-OuxtAm?ithzfE%CJhF0dp1XGt~_ zd{rCA$s&K|Xw;&iTrlavncE;|xBFo)p>tT43M3&WZkgLy=`rF=L%v!cEOSX|-2t(G zg#Uezyb9cz&xB~gcFo1*w!GAyW=Gp|K~=8xPDZ??&aN>;%9zV;>YXV%g@dL+}q&Kpvb<1T+b=E!#t;*PPS|q zvuDr&6vdPCS}ok4ui%&vFBhrd5#FT6?Z*xB0)vku-I*90XM8+ZRSwcAY?jM^Oov@(ZfjlTkSLRs| zgpZ{gDtS@SXHs{|3B(yDAeVzF0K6$wO8s#&4Sijuhec>x6Ri=b@Fm8Caap*q(-8C?X_u5~Cl~^UB0k zP%#{at$k)&xR=l^;;9w034^lBF=@6|kGg3a9c-nm)gcZx5;pVM1Im?Q(yTiccnrU%NGkSKv3w2pEk2^(mExru#&~%$#j4t6=E#Kw1Gv z&l?!L%YPal4E(~#$z=h#E6uI?Vu_~}o_h&z_i?_?H-QNx%!ECj(OhIOpZIg63)7n` zKe_u&b2-b1f~d6`psFny4i3dR`|BW{*8YeEH7jc;_2Pf(g`=cyc$agqs7|~YPF1b6 zV|#K(W};R$is`7kX&Ry?uqS`3jx&V-hpG z)M+_oy(EtTpw=saT?X`AmLE0y-CHU8AsL#PUc2=W%@hWZv-j(=B$OTe0$E2;z{h38 zM*Ki#5Im)X_4|S9hi#RHed6j&2+r>I-C&L5R z=Dru6CZ}81K%)L{+rpNd#<=oC_IpiX}CBP{jL#Cwcvg@TjActMNWna9U3kt>)T95vZxcC02`VZg0Nl`K? zWT#SO%g!u{GBYx>Gc%HzaVT#|LXy3*Q}zsTNXR_)%!us0ox|aKAE(df^L>2(fv=z5 zkGGuHc|FJdyzlG2uIt&7{;SgI5H-1V^xjr&ui)PT6k9)1oOiY|#I#vM-v`%g>Q>n7 zY5t&iOS>oe(?-3`Vh3=yr5OTxSHJHEzu1y=H!&j>9ZNYhgGN&j@MSqz-s1NKW!MoT z@Ccd;uy2Ebw*p*)B$1Z*hk6$iL75471oR|IRI_9>vDygNuQaooE0Vsh3%z4lbZ@p) zl?-Xa!NO0Q{Kk1-Iw)sVPXB8unn*J3pVilVlix(U4ZBG|Gf83 z+5v&QHCl5$9C--gGMznE=U{o=XU#p?5V5|~lbQ58OWOOGH@!TKgU z(nKq_h97+#?w2GlN?!;bXj*#NOp!P)SY!m< zSSQBsR&xf=6Q7jt?@Jlmi#2oMytH z^?6su*!1kb7rB6IBB_D!;_EDz@@E7)q!$vT?Nn$|13ZvI5S{76+i~cWbEr()bg~r# zpoP&935*5ichpj$)0L&MDZlJ7{PKM+o)zWS+GV6dzf~a< z)S+MVGbrK(?4Yv`N^X?cxX$V3+F;X({x;vfNv~Rg4;W zaD1*4M1yEFGWqAcFLj8{qcdSuMm$h+3>=vX88_<;;uC9vy@#HWx>%cpLzdL_=QTg* z7KB02DTWQ~@@U9?wfyfJQF1MUY}aW434^NH+3eAr>M8Z5m*My$q}FmSr?EojL1gFlEbHP-upQDtxPSG&;C!Tl=7siuWH^(EtpyOie%~>c zpO=p8WCa$Lbo5N88g>_SNWw0HwgEXt9_)Vkk9C=M-|4piHWsZI%g z8c7|0H|z{SGW9w4=ou49{OPcM+0U|tde$7JGxg<|6)Ahg_(|}VEl6Hq4|GW~ccEzM ziSR`U{7I~IK&V?Ku5d@Rk|9z~P4K?O959uRMWI z0P%l8U>k6UBt9TnHRhoj+CZ*u(VFVY1`SATsP%USz=JKh@!1vb%>r>_fDnaYXk)oa z>I3Y2P=!d-Lz5SzSm%Vy)s7bq?#oIvwLRw^rzY`b-8o2=4^`@W3JOA9q(lqlU9am! zMl~HC__><8L(tx#@g{b(aF@$z&Z}@gSpD&@=!(xX&ALd?ioEMzOr34U_jMZm3E~nz zzh}6$gW%aYQUqdgan+^;FD!5$ww5N1DQ9dzFS0Hjzu$468~P|F7<%yIqEMKbp*1s8 zB65=57;+>N6j0Uj!(Q*t;Mpy>&t=Zzr#d?@dvj}&T>bHI%4jFZs6qV~KKM<>78U22 z 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 literal 0 HcmV?d00001 diff --git a/img/uwuzucolorlogo.svg b/img/uwuzucolorlogo.svg new file mode 100644 index 0000000..e2f3880 --- /dev/null +++ b/img/uwuzucolorlogo.svg @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/uwuzulogo.svg b/img/uwuzulogo.svg new file mode 100644 index 0000000..e9cd4cb --- /dev/null +++ b/img/uwuzulogo.svg @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/index.php b/index.php new file mode 100644 index 0000000..4eb65e7 --- /dev/null +++ b/index.php @@ -0,0 +1,145 @@ + + + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + $stmt = $pdo->prepare("SELECT COUNT(userid) FROM account"); + $stmt->execute(); + $count2 = $stmt->fetchColumn(); + + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); +$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); + +$result = $mysqli->query("SELECT userid FROM account ORDER BY datetime"); + +/* 結果セットの行数を取得します */ +$count1 = $result->num_rows; + +$result2 = $mysqli->query("SELECT uniqid FROM ueuse ORDER BY datetime"); + +/* 結果セットの行数を取得します */ +$count2 = $result2->num_rows; + +?> + + + + + + + + + + +<?php echo file_get_contents($servernamefile);?> + + + + + + + + + +

+ + + + \ No newline at end of file diff --git a/js/back.js b/js/back.js new file mode 100644 index 0000000..8778eb1 --- /dev/null +++ b/js/back.js @@ -0,0 +1,6 @@ + +window.onload = function(){ +var ele = document.getElementsByTagName("body")[0]; +var n = Math.floor(Math.random() * 3); // 3枚の画像がある場合 +ele.style.backgroundImage = "url(img/titleimg/"+n+".png)"; +} diff --git a/login.php b/login.php new file mode 100644 index 0000000..99f46c1 --- /dev/null +++ b/login.php @@ -0,0 +1,205 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if( !empty($_POST['btn_submit']) ) { + + + //$row['userid'] = "daichimarukn"; + + $userid = $_POST['userid']; + $password = $_POST['password']; + + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT userid, password, loginid FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + + // ... (前略) + // IDの入力チェック + if( empty($userid) ) { + $error_message[] = 'ユーザーIDを入力してください。'; + } else { + + if( empty($password) ) { + $error_message[] = 'パスワードを入力してください。'; + } else { + + if($result->rowCount() > 0) { + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + if($row["userid"] == $userid){ + if(password_verify($password,$row["password"])){ + $_SESSION['admin_login'] = true; + + $_SESSION['userid'] = $userid; + $_SESSION['loginid'] = $row["loginid"]; + // リダイレクト先のURLへ転送する + $url = 'check.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; + } + else{ + $error_message[] = 'IDまたはパスワードが違います'; + } + }else{ + $error_message[] = 'IDまたはパスワードが違います'; + } + } + else { + $error_message[] = 'IDまたはパスワードが違います'; + } + } + + } + + // ... (後略) + + + +} + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +ログイン - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
+

ログイン

+ +

IDとパスワードを入力してください!

+ + +
    + +

    + +
+ + +
+ +
+ + +
+ + + +
+ + +
+ + +
+ +
+ 戻る +
+
+
+ + + + + + + \ No newline at end of file diff --git a/manifest/icon-512x512.png b/manifest/icon-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..1b19c276d418466e964e32c1b8beaa8c1d506384 GIT binary patch literal 5221 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 literal 0 HcmV?d00001 diff --git a/manifest/manifest.json b/manifest/manifest.json new file mode 100644 index 0000000..cd71091 --- /dev/null +++ b/manifest/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "uwuzu", + "name": "uwuzu", + "theme_color": "#FFC832", + "background_color": "#FFC832", + "display": "standalone", + "start_url": "../index.php", + "icons": [ + { + "src": "icon-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} \ No newline at end of file diff --git a/new.php b/new.php new file mode 100644 index 0000000..382078e --- /dev/null +++ b/new.php @@ -0,0 +1,498 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if( !empty($_POST['btn_submit']) ) { + + + //$row['userid'] = "daichimarukn"; + + // 空白除去 + $username = $_POST['username']; + $userid = $_POST['userid']; + + $password = $_POST['password']; + $chkpass = $_POST['chkpass']; + $mailadds = $_POST['mailadds']; + + $profile = $_POST['profile']; + + + //cookieに保存 + setcookie("username",$username,time()+60*60*24*14); + setcookie("userid",$userid,time()+60*60*24*14); + + setcookie("password",$password,time()+60*60*24*14); + setcookie("mailadds",$mailadds,time()+60*60*24*14); + + setcookie("profile",$profile,time()+60*60*24*14); + + if (!empty($_FILES['image']['name'])) { + $img = $_FILES['image']; + }else{ + $localFilePath = 'img/deficon/icon.png'; + $img = [ + 'name' => 'deficon.png', + 'type' => 'image/png', // 仮の Content-Type を指定(必要に応じて適切なものに変更してください) + 'tmp_name' => $localFilePath, + 'error' => 0, + 'size' => filesize($localFilePath) + ]; + } + + $localFilePathhead = 'img/defhead/head.png'; + $headimg = [ + 'name' => 'defhead.png', + 'type' => 'image/png', // 仮の Content-Type を指定(必要に応じて適切なものに変更してください) + 'tmp_name' => $localFilePathhead, + 'error' => 0, + 'size' => filesize($localFilePathhead) + ]; + + + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); + + $query->execute(array(':userid' => $userid)); + + $result = $query->fetch(); + + + // ユーザーネームの入力チェック + if( empty($username) ) { + $error_message[] = '表示名を入力してください。'; + } else { + // 文字数を確認 + if( 25 < mb_strlen($username, 'UTF-8') ) { + $error_message[] = 'ユーザーネームは25文字以内で入力してください。'; + } + } + + // IDの入力チェック + if( empty($userid) ) { + $error_message[] = 'ユーザーIDを入力してください。'; + } else { + + // 文字数を確認 + if( 20 < mb_strlen($userid, 'UTF-8') ) { + $error_message[] = 'IDは20文字以内で入力してください。'; + } + + if($userid === 'uwuzu_official'){ + $error_message[] = 'そのIDは登録禁止になっています。'; + } + + if($result > 0){ + $error_message[] = 'このID('.$userid.')は既に使用されています。他のIDを作成してください。'; //このE-mailは既に使用されています。 + } + + } + + // パスワードの入力チェック + if( empty($password) ) { + $error_message[] = 'パスワードを入力してください。'; + } else { + + $weakPasswords = array( + "password", + "123456", + "123456789", + "12345", + "12345678", + "123123", + "1234567890", + "1234567", + "1q2w3e", + "qwerty123", + "aa12345678", + "password1", + "1234", + "qwertyuiop", + "123321", + "12321", + "qwertyui", + "abcd1234", + "zaq12wsx", + "1q2w3e4r", + "qwer1234", + "sakura", + "asdf1234", + "asdfghjkl", + "asdfghjk", + "member", + "1qaz2wsx", + "doraemon", + "makoto", + "takeshi", + "machi1", + "machida", + "machida1", + "tokyo", + "arashi", + "dropbox", + "twitter", + "elonmusk", + "xcorp", + "1234qwer", + "japan", + "nippon", + "tukareta", + "tweet", + "discord", + "misskey", + "qwerty", + "123456789", + "abc123", + "password123", + "admin", + "letmein", + "iloveyou", + "111111", + "12345678910", + "user", + "root", + "system", + // 他にも弱いパスワードを追加できます + ); + + function isWeakPassword($passwords) { + global $weakPasswords; + return in_array($passwords, $weakPasswords); + } + + // テスト用のパスワード(実際にはユーザー入力などから取得することになります。 + + if (isWeakPassword($password)) { + $error_message[] = "パスワードが弱いです。セキュリティ上変更してください。"; + } else { + + } + + if ($chkpass == $password ){ + + }else{ + $error_message[] = '確認用パスワードが違います。'; + } + + if( 4 > mb_strlen($password, 'UTF-8') ) { + $error_message[] = 'パスワードは4文字以上である必要があります。'; + } + + // 文字数を確認 + if( 100 < mb_strlen($password, 'UTF-8') ) { + $error_message[] = 'パスワードは100文字以内で入力してください。'; + } + } + + if( empty($error_message) ) { + // トランザクション開始 + $pdo->beginTransaction(); + $datetime = date("Y-m-d H:i:s"); + + try { + + $role = "user"; + $admin = "none"; + $hashpassword = password_hash($password, PASSWORD_DEFAULT); + $loginid = sha1(uniqid(mt_rand(), true)); + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO account (username, userid, password, loginid, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime, admin) VALUES (:username, :userid, :password, :loginid, :mailadds, :profile, :iconname, :iconcontent, :icontype, :iconsize, :headname, :headcontent, :headtype, :headsize, :role, :datetime, :admin )"); + + $iconName = $img['name']; + $iconType = $img['type']; + $iconContent = file_get_contents($img['tmp_name']); + $iconSize = $img['size']; + + // アイコン画像のバインド + $stmt->bindValue(':iconname', $iconName, PDO::PARAM_STR); + $stmt->bindValue(':icontype', $iconType, PDO::PARAM_STR); + $stmt->bindValue(':iconcontent', $iconContent, PDO::PARAM_STR); + $stmt->bindValue(':iconsize', $iconSize, PDO::PARAM_INT); + + // ヘッダー画像関連の処理 + $headName = $headimg['name']; + $headType = $headimg['type']; + $headContent = file_get_contents($headimg['tmp_name']); + $headSize = $headimg['size']; + + // ヘッダー画像のバインド + $stmt->bindValue(':headname', $headName, PDO::PARAM_STR); + $stmt->bindValue(':headtype', $headType, PDO::PARAM_STR); + $stmt->bindValue(':headcontent', $headContent, PDO::PARAM_STR); + $stmt->bindValue(':headsize', $headSize, PDO::PARAM_INT); + + // 他の値をセット + $stmt->bindParam(':username', $username, PDO::PARAM_STR); + $stmt->bindParam(':userid', $userid, PDO::PARAM_STR); + $stmt->bindParam(':password', $hashpassword, PDO::PARAM_STR); + $stmt->bindParam(':loginid', $loginid, PDO::PARAM_STR); + $stmt->bindParam(':mailadds', $mailadds, PDO::PARAM_STR); + $stmt->bindParam(':profile', $profile, PDO::PARAM_STR); + $stmt->bindParam(':role', $role, PDO::PARAM_STR); + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + $stmt->bindParam(':admin', $admin, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + // リダイレクト先のURLへ転送する + $url = 'success.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; + } else { + $error_message[] = '登録に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +アカウント登録 - <?php echo file_get_contents($servernamefile);?> + + + + + + + +
+ + +
+

アカウント登録

+ +

アカウント登録です。

+

必須項目には「*」があります。 + + +

    + +

    + +
+ + +
+ +
+
+ +
+ +
+ + + + +
+

ユーザーネーム *

+
プロフィールページに掲載され公開されます。
※サービス管理者が確認できます。
+ +
+
+

ユーザーID *

+
後から変更はできません。
プロフィールページに掲載され公開されます。
※サービス管理者が確認できます。
+ +
+ +
+

パスワード *

+
ログイン時に必要となります。
※サービス管理者が確認できません。
+ +
+ +
+

パスワード再確認 *

+ +
+ +
+

メールアドレス

+
設定しておくとアカウント復旧に利用できます。
※サービス管理者が確認できます。
+ +
+ +
+

プロフィール

+
プロフィールページに掲載され公開されます。
※サービス管理者が確認できます。
+ +
+ + + +

登録を押すと利用規約とプライバシーポリシーに同意したこととなります。
未確認の場合は上のボタンよりお読みください。

+ + + +
+ +
+ 戻る +
+
+ +
+ + + + + + + + \ No newline at end of file diff --git a/nextpage/nextpage.php b/nextpage/nextpage.php new file mode 100644 index 0000000..9270139 --- /dev/null +++ b/nextpage/nextpage.php @@ -0,0 +1,124 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +$userid = $_GET['userid']; + +$itemsPerPage = 30; // 1ページあたりのユーズ数 +$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; +$offset = ($pageNumber - 1) * $itemsPerPage; + +$messages = array(); + +if (!empty($pdo)) { + + function customStripTags($html, $allowedTags) { + $allowedTagString = implode('|', $allowedTags); + $pattern = "/<(?!$allowedTagString)[^>]+>/"; + return preg_replace($pattern, '', $html); + } + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); + + // ユーズ内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + + $sql = "SELECT account, username, uniqid, rpuniqid, ueuse, datetime, photo1, photo2, video1, favorite, abi, abidate FROM ueuse WHERE rpuniqid = '' ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"; + $message_array = $pdo->query($sql); + + while ($row = $message_array->fetch(PDO::FETCH_ASSOC)) { + + $messages[] = $row; + } + + // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える + foreach ($messages as &$message) { + $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $message["account"]); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + if ($userData) { + $message['username'] = $userData['username']; + } + } + + // ユーズ内のHTMLコードに指定のタグを有効化する関数 + function replaceUnescapedHTMLTags($html) { + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ + return customStripTags($html, $allowedTags); + } + + if(!empty($messages)){ + foreach ($messages as $value) { + + $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $favIds = explode(',', $fav); + $value["favcnt"] = count($favIds)-1; + + $messageDisplay = new MessageDisplay($value, $userid); // $userid をコンストラクタに渡す + $messageDisplay->display(); + } + }else{ + echo '

ユーズがありません

'; + } + + $pdo = null; + +} + +?> diff --git a/nextpage/notification.php b/nextpage/notification.php new file mode 100644 index 0000000..c5b710e --- /dev/null +++ b/nextpage/notification.php @@ -0,0 +1,63 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +$userid = $_GET['userid']; + +$itemsPerPage = 30; // 1ページあたりの投稿数 +$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; +$offset = ($pageNumber - 1) * $itemsPerPage; + +$messages = array(); + +if (!empty($pdo)) { + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $messageQuery = $dbh->prepare("SELECT title,msg,url,datetime,userchk FROM notification WHERE touserid = :userid ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"); + $messageQuery->bindValue(':userid', $userid); + $messageQuery->execute(); + $message_array = $messageQuery->fetchAll(); + + if (!empty($message_array)) { + foreach ($message_array as $value) { + $messageDisplay = new MessageDisplay($value); // userid を渡さない + $messageDisplay->display(); + } + } else { + echo '

通知はありません

'; + } + + + $pdo = null; + +} + +?> diff --git a/nextpage/notificationview.php b/nextpage/notificationview.php new file mode 100644 index 0000000..8a94294 --- /dev/null +++ b/nextpage/notificationview.php @@ -0,0 +1,32 @@ +value = $value; + } + + public function display() { + echo '
'; + echo '
'; + + echo '
'; + $day = date("Ymd", strtotime(htmlspecialchars($this->value['datetime']))); + if ($day == date("Ymd")) { + echo date("今日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); + } else { + echo date("Y年m月d日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); + } + echo '
'; + + echo '
'; + + // 投稿内のHTMLコードを表示する部分 + echo '

' . htmlspecialchars($this->value['title']) . '

'; + echo '

' . htmlspecialchars($this->value['msg']) . '

'; + echo ' 続きをみる'; + + echo '
'; + } +} +?> diff --git a/nextpage/searchpage.php b/nextpage/searchpage.php new file mode 100644 index 0000000..c14d434 --- /dev/null +++ b/nextpage/searchpage.php @@ -0,0 +1,131 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + + +$keyword = isset($_GET['keyword']) ? $_GET['keyword'] : ''; +$userid = $_GET['userid']; + +$messages = array(); + +if (!empty($pdo)) { + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $messageQuery = $dbh->prepare("SELECT account,username,ueuse,uniqid,rpuniqid,datetime,photo1,photo2,video1,favorite, abi, abidate FROM ueuse WHERE ueuse LIKE :keyword OR abi LIKE :keyword ORDER BY datetime DESC"); + $messageQuery->bindValue(':keyword', '%' . $keyword . '%', PDO::PARAM_STR); + $messageQuery->execute(); + $message_array = $messageQuery->fetchAll(); + + function customStripTags($html, $allowedTags) { + $allowedTagString = implode('|', $allowedTags); + $pattern = "/<(?!$allowedTagString)[^>]+>/"; + return preg_replace($pattern, '', $html); + } + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); + + // ユーズ内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + + + + $messages = array(); + foreach ($message_array as $row) { + $messages[] = $row; + } + // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える + foreach ($messages as &$message) { + $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $message["account"]); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + if ($userData) { + $message['username'] = $userData['username']; + } + } + + // ユーズ内のHTMLコードに指定のタグを有効化する関数 + function replaceUnescapedHTMLTags($html) { + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ + return customStripTags($html, $allowedTags); + } + + if(!empty($messages)){ + foreach ($messages as $value) { + + $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $favIds = explode(',', $fav); + $value["favcnt"] = count($favIds)-1; + + $messageDisplay = new MessageDisplay($value, $userid); + $messageDisplay->display(); + } + }else{ + echo '

ユーズがありません

'; + } + + $pdo = null; + +} + +?> diff --git a/nextpage/ueusepage.php b/nextpage/ueusepage.php new file mode 100644 index 0000000..7de81e8 --- /dev/null +++ b/nextpage/ueusepage.php @@ -0,0 +1,139 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +$userid = $_GET['userid']; + +$ueuseid = isset($_GET['id']) ? $_GET['id'] : ''; + +$itemsPerPage = 30; // 1ページあたりの投稿数 +$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; +$offset = ($pageNumber - 1) * $itemsPerPage; + +$messages = array(); + +if (!empty($pdo)) { + + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + + + function customStripTags($html, $allowedTags) { + $allowedTagString = implode('|', $allowedTags); + $pattern = "/<(?!$allowedTagString)[^>]+>/"; + return preg_replace($pattern, '', $html); + } + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); + // 投稿内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // 投稿内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + // 投稿内容の取得(新しい順に取得) + $messageQuery = $dbh->prepare("SELECT account, username, ueuse, uniqid, rpuniqid, datetime, photo1, photo2, video1, favorite, abi, abidate FROM ueuse WHERE uniqid = :ueuseid OR rpuniqid = :rpueuseid ORDER BY datetime ASC LIMIT $offset, $itemsPerPage"); + $messageQuery->bindValue(':ueuseid', $ueuseid); + $messageQuery->bindValue(':rpueuseid', $ueuseid); + $messageQuery->execute(); + $message_array = $messageQuery->fetchAll(); + + $messages = array(); + + + + foreach ($message_array as $row) { + $messages[] = $row; + } + // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える + foreach ($messages as &$message) { + $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $message["account"]); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + if ($userData) { + $message['username'] = $userData['username']; + } + } + + // 投稿内のHTMLコードに指定のタグを有効化する関数 + function replaceUnescapedHTMLTags($html) { + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ + return customStripTags($html, $allowedTags); + } + + if(!empty($messages)){ + foreach ($messages as $value) { + $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $favIds = explode(',', $fav); + $value["favcnt"] = count($favIds)-1; + + $messageDisplay = new MessageDisplay($value, $userid); + $messageDisplay->display(); + } + }else{ + echo '

投稿がありません

'; + } + + $pdo = null; + +} + +?> diff --git a/nextpage/userpage.php b/nextpage/userpage.php new file mode 100644 index 0000000..7e5699d --- /dev/null +++ b/nextpage/userpage.php @@ -0,0 +1,140 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + + +$uwuzuid = isset($_GET['id']) ? $_GET['id'] : ''; +$userid = $_GET['userid']; + +$itemsPerPage = 30; // 1ページあたりのユーズ数 +$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; +$offset = ($pageNumber - 1) * $itemsPerPage; + +$messages = array(); + +if (!empty($pdo)) { + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $dbh->prepare("SELECT username, userid, profile, role, follower FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $uwuzuid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + $messageQuery = $dbh->prepare("SELECT account,username,ueuse,uniqid,rpuniqid,datetime,photo1,photo2,video1,favorite, abi, abidate FROM ueuse WHERE account = :userid AND rpuniqid = ''ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"); + $messageQuery->bindValue(':userid', $uwuzuid); + $messageQuery->execute(); + $message_array = $messageQuery->fetchAll(); + + function customStripTags($html, $allowedTags) { + $allowedTagString = implode('|', $allowedTags); + $pattern = "/<(?!$allowedTagString)[^>]+>/"; + return preg_replace($pattern, '', $html); + } + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); + + // ユーズ内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + + + + $messages = array(); + foreach ($message_array as $row) { + $messages[] = $row; + } + // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える + foreach ($messages as &$message) { + $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $message["account"]); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + if ($userData) { + $message['username'] = $userData['username']; + } + } + + // ユーズ内のHTMLコードに指定のタグを有効化する関数 + function replaceUnescapedHTMLTags($html) { + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ + return customStripTags($html, $allowedTags); + } + + if(!empty($messages)){ + foreach ($messages as $value) { + + $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $favIds = explode(',', $fav); + $value["favcnt"] = count($favIds)-1; + + $messageDisplay = new MessageDisplay($value, $userid); + $messageDisplay->display(); + } + }else{ + echo '

ユーズがありません

'; + } + + $pdo = null; + +} + +?> diff --git a/nextpage/view.php b/nextpage/view.php new file mode 100644 index 0000000..7bef23d --- /dev/null +++ b/nextpage/view.php @@ -0,0 +1,85 @@ + +value = $value; + $this->userid = $userid; + } + + public function display() { + if (empty($this->value)) { + echo '

ユーズがありません

'; + } else { + echo '
'; + if(!empty($this->value['rpuniqid'])){ + echo '

┗━ 一番上のユーズに返信

'; + } + echo '
'; + + echo ' '; + echo ' ' . htmlspecialchars($this->value['username']) . ''; + echo ' '; + echo '
'; + $day = date("Ymd", strtotime(htmlspecialchars($this->value['datetime']))); + if ($day == date("Ymd")) { + echo date("今日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); + } else { + echo date("Y年m月d日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); + } + echo '
'; + + echo '
'; + + echo '

' . replaceEmojisWithImages(replaceURLsWithLinks(nl2br(replaceUnescapedHTMLTags($this->value['ueuse'])))) . '

'; + + if (!empty($this->value['photo2']) && $this->value['photo2'] !== 'none') { + echo '
'; + echo ' 画像'; + echo ' 画像'; + echo '
'; + } elseif (!empty($this->value['photo1']) && $this->value['photo1'] !== 'none') { + echo '
'; + echo ' 画像'; + echo '
'; + } + if (!empty($this->value['video1']) && $this->value['video1'] !== 'none') { + echo '
'; + echo ' '; + echo '
'; + } + + if(!($this->value['abi'] == "none")){ + echo '
'; + echo '
'; + echo '

' . htmlspecialchars($this->value['username']) . 'さんが追記しました

'; + echo '
'; + echo '

'. htmlspecialchars($this->value['abi']) . '

'; + echo '

追記日時 : '. date("Y年m月d日 H:i", strtotime(htmlspecialchars($this->value['abidate']))) . '

'; + echo '
'; + } + + echo '
'; + echo '
'; + if (false !== strstr($this->value['favorite'], $this->userid)) { + echo ''; + }else{ + echo ''; + } + echo '返信をみる&する'; + if($this->value['account'] === $this->userid){ + if($this->value['abi'] === "none"){ + echo ''; + } + echo ''; + } + echo '
'; + echo '
'; + } + } +} +?> \ No newline at end of file diff --git a/notice/addnotice.php b/notice/addnotice.php new file mode 100644 index 0000000..d1c2018 --- /dev/null +++ b/notice/addnotice.php @@ -0,0 +1,292 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if(!($res["admin"] === "yes")){ + header("Location: ../login.php"); + exit; +} + +if( !empty($pdo) ) { + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $dbh->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $userid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + $role = $userData["role"]; + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + $rerole = $dbh->prepare("SELECT username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime FROM account WHERE userid = :userid"); + + $rerole->bindValue(':userid', $userid); + // SQL実行 + $rerole->execute(); + + $userdata = $rerole->fetch(); // ここでデータベースから取得した値を $role に代入する + + +} + + + +if( !empty($_POST['btn_submit']) ) { + $title = $_POST['title']; + $note = $_POST['note']; + + // IDの入力チェック + if( empty($title) ) { + $error_message[] = 'タイトルを入力してください!'; + } else { + + // 文字数を確認 + if( 1024 < mb_strlen($title, 'UTF-8') ) { + $error_message[] = 'タイトルは1024文字以内で入力してください。'; + } + + } + + if( empty($error_message) ) { + + // 書き込み日時を取得 + $datetime = date("Y-m-d H:i:s"); + + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO notice (title,note,account,datetime) VALUES (:title,:note,:account,:datetime)"); + + + // 値をセット + $stmt->bindParam( ':title', $title, PDO::PARAM_STR); + $stmt->bindParam( ':note', $note, PDO::PARAM_STR); + + $stmt->bindParam( ':account', $userid, PDO::PARAM_STR); + + $stmt->bindParam( ':datetime', $datetime, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch(Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if( $res ) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '配信に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + + + } + +} + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + +お知らせ配信 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ + +
+ +

お知らせ配信

+ +

タイトルと内容を入力して配信してください。
削除と編集はここからは出来ません。
DB管理画面から行ってください。

+ + +
+

タイトル

+ +
+ +
+

この絵文字について

+ +
+ +
+ + +
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/notice/notice.php b/notice/notice.php new file mode 100644 index 0000000..c2e8e41 --- /dev/null +++ b/notice/notice.php @@ -0,0 +1,40 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +$sql = "SELECT title, note, account, datetime FROM notice ORDER BY datetime DESC"; +$notice_array = $pdo->query($sql); + +while ($row = $notice_array->fetch(PDO::FETCH_ASSOC)) { + + $notices[] = $row; +} + +if(!empty($notices)){ + foreach ($notices as $value) { + $uneinoticenote = $value['note']; + $uneinoticetitle = $value['title']; + $uneinoticeaccount = $value['account']; + $uneinoticedatetime = $value['datetime']; + } +}else{ + $uneinoticenote = ""; + $uneinoticetitle = "おしらせはありません"; + $uneinoticeaccount = "uwuzu"; + $uneinoticedatetime = ""; +} + diff --git a/notification/index.php b/notification/index.php new file mode 100644 index 0000000..75972ce --- /dev/null +++ b/notification/index.php @@ -0,0 +1,229 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +通知 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ + +
+
+ +
+
+ + + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/others/index.php b/others/index.php new file mode 100644 index 0000000..9bfd40e --- /dev/null +++ b/others/index.php @@ -0,0 +1,300 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if( !empty($pdo) ) { + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $dbh->prepare("SELECT userid FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $userid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + +} + +if( !empty($_POST['btn_submit']) ) { + + $chkuserid = $_POST['chkuserid']; + + if( empty($chkuserid) ) { + $error_message[] = '確認用ユーザーIDを入力してください。'; + } else { + if($chkuserid === $userData["userid"]){ + $userId = $userData["userid"]; // 削除対象のユーザーID + $folderPath = "../ueuseimages/"; // フォルダのパス + + // 指定したフォルダ内でユーザーIDを含むファイルを検索 + $filesToDelete = glob($folderPath . "*-$userId.*"); // 「-ユーザーID.拡張子」というパターンを検索 + + // ファイルを順に削除 + foreach ($filesToDelete as $file) { + if (is_file($file)) { + unlink($file); // ファイルを削除 + } + } + + $folderPath2 = "../ueusevideos/"; // フォルダのパス + + // 指定したフォルダ内でユーザーIDを含むファイルを検索 + $filesToDelete2 = glob($folderPath2 . "*-$userId.*"); // 「-ユーザーID.拡張子」というパターンを検索 + + // ファイルを順に削除 + foreach ($filesToDelete2 as $file2) { + if (is_file($file2)) { + unlink($file2); // ファイルを削除 + } + } + + + try { + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS); + + // 投稿削除クエリを実行 + $deleteQuery = $pdo->prepare("DELETE FROM ueuse WHERE account = :userid"); + $deleteQuery->bindValue(':userid', $userid, PDO::PARAM_STR); + $res = $deleteQuery->execute(); + + // アカウント削除クエリを実行 + $deleteQuery = $pdo->prepare("DELETE FROM account WHERE userid = :userid"); + $deleteQuery->bindValue(':userid', $userid, PDO::PARAM_STR); + $res = $deleteQuery->execute(); + + // フォローの更新 + $updateFollowQuery = $pdo->prepare("UPDATE account SET follow = REPLACE(follow, :userid, '') WHERE follow LIKE :pattern"); + $updateFollowQuery->bindValue(':userid', ",$userid", PDO::PARAM_STR); + $updateFollowQuery->bindValue(':pattern', "%,$userid%", PDO::PARAM_STR); + $updateFollowQuery->execute(); + + // フォロワーの更新 + $updateFollowerQuery = $pdo->prepare("UPDATE account SET follower = REPLACE(follower, :userid, '') WHERE follower LIKE :pattern"); + $updateFollowerQuery->bindValue(':userid', ",$userid", PDO::PARAM_STR); + $updateFollowerQuery->bindValue(':pattern', "%,$userid%", PDO::PARAM_STR); + $updateFollowerQuery->execute(); + + // いいねの更新 + $updateFavoriteQuery = $pdo->prepare("UPDATE ueuse SET favorite = REPLACE(favorite, :favorite, '') WHERE favorite LIKE :pattern"); + $updateFavoriteQuery->bindValue(':favorite', ",$userid", PDO::PARAM_STR); + $updateFavoriteQuery->bindValue(':pattern', "%,$userid%", PDO::PARAM_STR); + $updateFavoriteQuery->execute(); + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + header("Location:../index.php"); + exit; + } else { + $error_message[] = 'アカウント削除に失敗しました。'; + } + + + // プリペアドステートメントを削除 + $stmt = null; + }else{ + $error_message[] = '確認用ユーザーIDが違います'; + } + } + + +} + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + +?> + + + + + + +アカウント削除ページ - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ +
+

アカウント削除ページ

+

アカウント誤削除を防ぐため下の入力ボックスにご自身のユーザーIDを入力する必要があります。

+ + +

あなたはこのサーバーの管理者のようです。
管理者アカウントの移行は済んでいますか?
アカウントを削除しても大丈夫なのですか...?

+ + +
+

確認用ユーザーID

+ +
+ + + + + +
+
+ + + + + \ No newline at end of file diff --git a/reply/reply.php b/reply/reply.php new file mode 100644 index 0000000..fb81f08 --- /dev/null +++ b/reply/reply.php @@ -0,0 +1,202 @@ +beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, rpuniqid, ueuse, photo1, photo2, video1, datetime, abi) VALUES (:username, :account, :uniqid, :rpuniqid, :ueuse, :photo1, :photo2, :video1, :datetime, :abi)"); + + $stmt->bindParam(':username', $username, PDO::PARAM_STR); + $stmt->bindParam(':account', $userid, PDO::PARAM_STR); + $stmt->bindParam(':uniqid', $uniqid, PDO::PARAM_STR); + $stmt->bindParam(':rpuniqid', $rpuniqid, PDO::PARAM_STR); + $stmt->bindParam(':ueuse', $Rptext, PDO::PARAM_STR); + + $stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR); + $stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR); + $stmt->bindParam(':video1', $video1, PDO::PARAM_STR); + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + $stmt->bindParam(':abi', $abi, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + // 書き込み日時を取得 + $datetime = date("Y-m-d H:i:s"); + $title = ''.$userid.'さんが返信しました!' + $msg = ''.$userid.'さんがあなたの投稿に返信しました!' + $url = '/!'.$rpuniqid + + // トランザクション開始 + $pdo->beginTransaction(); + + $stmt = $pdo->prepare("INSERT INTO notification (touserid, title, msg, url, datetime) VALUES (:touserid, :title, :msg, :url, :datetime,)"); + + $stmt->bindParam(':touserid', $touserid, PDO::PARAM_STR); + $stmt->bindParam(':title', $title, PDO::PARAM_STR); + $stmt->bindParam(':msg', $msg, PDO::PARAM_STR); + $stmt->bindParam(':url', $url, PDO::PARAM_STR); + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + $res = $stmt->execute(); + $res = $pdo->commit(); + + } catch(Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + header('Content-Type: application/json'); + echo json_encode(['success' => true]); + exit; + } else { + header('Content-Type: application/json'); + echo json_encode(['success' => false, 'error' => '追加に失敗しました。']); + exit; + } + } catch(PDOException $e) { + header('Content-Type: application/json'); + echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); + exit; + } + + if (!empty($errors)) { + header('Content-Type: application/json'); + echo json_encode(['success' => false, 'errors' => $errors]); + exit; + } + + + // プリペアドステートメントを削除 + $stmt = null; +} + + +?> diff --git a/require/botbox.php b/require/botbox.php new file mode 100644 index 0000000..7d002cf --- /dev/null +++ b/require/botbox.php @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/require/leftbox.php b/require/leftbox.php new file mode 100644 index 0000000..b4b1305 --- /dev/null +++ b/require/leftbox.php @@ -0,0 +1,26 @@ + + + \ No newline at end of file diff --git a/require/rightbox.php b/require/rightbox.php new file mode 100644 index 0000000..79cf849 --- /dev/null +++ b/require/rightbox.php @@ -0,0 +1,45 @@ +
+ +

お知らせ

+
+ +
+

+

+

編集者 :

+

+
+ +
+

サーバー情報

+
+

Server

+

+

+ 利用規約プライバシーポリシー +

Software

+

+

Version :

+

Developer :

+ もっと詳しく!リリースノート +
+
\ No newline at end of file diff --git a/rule/privacypolicy.php b/rule/privacypolicy.php new file mode 100644 index 0000000..90cfff6 --- /dev/null +++ b/rule/privacypolicy.php @@ -0,0 +1,80 @@ + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$sprivacypolicy = explode("\n", $privacypolicydata); +$htmltext = ''; // 初期化 + +foreach ($sprivacypolicy as $privacypolicy) { + $markdowntext = $privacypolicy; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + +プライバシーポリシー - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +

プライバシーポリシー

+
+
+ +

+ +
+ + + + + \ No newline at end of file diff --git a/rule/releasenotes.php b/rule/releasenotes.php new file mode 100644 index 0000000..5852a3b --- /dev/null +++ b/rule/releasenotes.php @@ -0,0 +1,93 @@ + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$srelease = explode("\n", $releasedata); +$htmltext = ''; // 初期化 + +foreach ($srelease as $release) { + $markdowntext = $release; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + +<?php echo $uwuzuinfo[0]?> リリースノート - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ +
+ +
+ +

リリースノート

+
+
+
+
Version :
Developer :
Last Update :
+ + +

+ +
+ + + + + \ No newline at end of file diff --git a/rule/terms.php b/rule/terms.php new file mode 100644 index 0000000..706af81 --- /dev/null +++ b/rule/terms.php @@ -0,0 +1,80 @@ + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$sterms = explode("\n", $termsdata); +$htmltext = ''; // 初期化 + +foreach ($sterms as $terms) { + $markdowntext = $terms; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + +利用規約 - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +

利用規約

+
+
+ +

+ +
+ + + + + \ No newline at end of file diff --git a/rule/uwuzuabout.php b/rule/uwuzuabout.php new file mode 100644 index 0000000..023004b --- /dev/null +++ b/rule/uwuzuabout.php @@ -0,0 +1,93 @@ + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$sterms = explode("\n", $termsdata); +$htmltext = ''; // 初期化 + +foreach ($sterms as $terms) { + $markdowntext = $terms; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + +<?php echo $uwuzuinfo[0]?>について - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ +
+ +
+ +

について

+
+
+
+
Version :
Developer :
Last Update :
+ + +

+ +
+ + + + + \ No newline at end of file diff --git a/search/index.php b/search/index.php new file mode 100644 index 0000000..abe3d84 --- /dev/null +++ b/search/index.php @@ -0,0 +1,390 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +//------------------------------------------- + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + + +検索 - <?php echo file_get_contents($servernamefile);?> + + + + + + + +
+ + +
    + +

    + +
+ + + +
+

検索

+
+
+ + +
+ +
+
+ + +
+
+ + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/index.php b/settings/index.php new file mode 100644 index 0000000..36a3532 --- /dev/null +++ b/settings/index.php @@ -0,0 +1,664 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if( !empty($pdo) ) { + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $dbh->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $userid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + $role = $userData["role"]; + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + $rerole = $dbh->prepare("SELECT username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime FROM account WHERE userid = :userid"); + + $rerole->bindValue(':userid', $userid); + // SQL実行 + $rerole->execute(); + + $userdata = $rerole->fetch(); // ここでデータベースから取得した値を $role に代入する + + +} + + + +if( !empty($_POST['btn_submit']) ) { + + // 空白除去 + $username = $_POST['username']; + + $mailadds = $_POST['mailadds']; + + $profile = $_POST['profile']; + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); + + $query->execute(array(':userid' => $userid)); + + $result = $query->fetch(); + + + // ユーザーネームの入力チェック + if( empty($username) ) { + $error_message[] = '表示名を入力してください。'; + } else { + // 文字数を確認 + if( 25 < mb_strlen($username, 'UTF-8') ) { + $error_message[] = 'ユーザーネームは25文字以内で入力してください。'; + } + } + + if( empty($error_message) ) { + // トランザクション開始 + $pdo->beginTransaction(); + $hashpassword = password_hash($password, PASSWORD_DEFAULT); + + try { + // SQL作成 + $stmt = $pdo->prepare("UPDATE account SET username = :username, mailadds = :mailadds, profile = :profile WHERE userid = :userid;"); + + // 他の値をセット + $stmt->bindParam(':username', $username, PDO::PARAM_STR); + $stmt->bindParam(':mailadds', $mailadds, PDO::PARAM_STR); + $stmt->bindParam(':profile', $profile, PDO::PARAM_STR); + + // 条件を指定 + // 以下の部分を適切な条件に置き換えてください + $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + + + +if( !empty($_POST['pass_submit']) ) { + + $password = $_POST['password']; + + $hashpassword = password_hash($password, PASSWORD_DEFAULT); + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); + + $query->execute(array(':userid' => $userid)); + + $result = $query->fetch(); + + // ユーザーネームの入力チェック + if( empty($password) ) { + $error_message[] = 'パスワードを入力してください。'; + } else { + + $weakPasswords = array( + "password", + "123456", + "123456789", + "12345", + "12345678", + "123123", + "1234567890", + "1234567", + "1q2w3e", + "qwerty123", + "aa12345678", + "password1", + "1234", + "qwertyuiop", + "123321", + "12321", + "qwertyui", + "abcd1234", + "zaq12wsx", + "1q2w3e4r", + "qwer1234", + "sakura", + "asdf1234", + "asdfghjkl", + "asdfghjk", + "member", + "1qaz2wsx", + "doraemon", + "makoto", + "takeshi", + "machi1", + "machida", + "machida1", + "tokyo", + "arashi", + "dropbox", + "twitter", + "elonmusk", + "xcorp", + "1234qwer", + "japan", + "nippon", + "tukareta", + "tweet", + "discord", + "misskey", + "qwerty", + "123456789", + "abc123", + "password123", + "admin", + "letmein", + "iloveyou", + "111111", + "12345678910", + "user", + "root", + "system", + // 他にも弱いパスワードを追加できます + ); + + function isWeakPassword($passwords) { + global $weakPasswords; + return in_array($passwords, $weakPasswords); + } + + // テスト用のパスワード(実際にはユーザー入力などから取得することになります。 + + if (isWeakPassword($password)) { + $error_message[] = "パスワードが弱いです。セキュリティ上変更してください。"; + } else { + + } + // 文字数を確認 + if( 100 < mb_strlen($password, 'UTF-8') ) { + $error_message[] = 'パスワードは100文字以内で入力してください。'; + } + + if( 4 > mb_strlen($password, 'UTF-8') ) { + $error_message[] = 'パスワードは4文字以上である必要があります。'; + } + } + + if( empty($error_message) ) { + // トランザクション開始 + $pdo->beginTransaction(); + $hashpassword = password_hash($password, PASSWORD_DEFAULT); + + try { + // SQL作成 + $stmt = $pdo->prepare("UPDATE account SET password = :password WHERE userid = :userid;"); + + // 他の値をセット + $stmt->bindParam(':password', $hashpassword, PDO::PARAM_STR); + + // 条件を指定 + // 以下の部分を適切な条件に置き換えてください + $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +if( !empty($_POST['img1btn_submit']) ) { + + if (!empty($_FILES['image2s']['name'])) { + $headimg = $_FILES['image2s']; + }else{ + $error_message[] = 'ヘッダー画像を選択してください'; + } + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); + + $query->execute(array(':userid' => $userid)); + + $result = $query->fetch(); + + + + + if( empty($error_message) ) { + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("UPDATE account SET headname = :headname, headtype = :headtype, headcontent = :headcontent, headsize = :headsize WHERE userid = :userid"); + + // ヘッダー画像関連の処理 + $headName = $headimg['name']; + $headType = $headimg['type']; + $headContent = file_get_contents($headimg['tmp_name']); + $headSize = $headimg['size']; + + // ヘッダー画像のバインド + $stmt->bindValue(':headname', $headName, PDO::PARAM_STR); + $stmt->bindValue(':headtype', $headType, PDO::PARAM_STR); + $stmt->bindValue(':headcontent', $headContent, PDO::PARAM_STR); + $stmt->bindValue(':headsize', $headSize, PDO::PARAM_INT); + + // ユーザーIDのバインド(WHERE句に必要) + $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + + +if( !empty($_POST['img2btn_submit']) ) { + + if (!empty($_FILES['image']['name'])) { + $img = $_FILES['image']; + }else{ + $error_message[] = 'アイコン画像を選択してください'; + } + + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); + + $query->execute(array(':userid' => $userid)); + + $result = $query->fetch(); + + + + + if( empty($error_message) ) { + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("UPDATE account SET iconname = :iconname, icontype = :icontype, iconcontent = :iconcontent, iconsize = :iconsize WHERE userid = :userid"); + + $iconName = $img['name']; + $iconType = $img['type']; + $iconContent = file_get_contents($img['tmp_name']); + $iconSize = $img['size']; + + // アイコン画像のバインド + $stmt->bindValue(':iconname', $iconName, PDO::PARAM_STR); + $stmt->bindValue(':icontype', $iconType, PDO::PARAM_STR); + $stmt->bindValue(':iconcontent', $iconContent, PDO::PARAM_STR); + $stmt->bindValue(':iconsize', $iconSize, PDO::PARAM_INT); + + // ユーザーIDのバインド(WHERE句に必要) + $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +設定 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ + +
+
+ +
+ +
+ +
+ + + + +
+ + +
+ + +
+

ユーザーネーム

+ +
+
+

メールアドレス

+ +
+ +
+

プロフィール

+ +
+ + + +
+

パスワード

+ +
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/success.php b/success.php new file mode 100644 index 0000000..e355fb1 --- /dev/null +++ b/success.php @@ -0,0 +1,41 @@ + + + + + + + + + + + +アカウント登録完了!!! - <?php echo file_get_contents($servernamefile);?> + + + + + + + +
+ + +
+

アカウント作成完了!

+


いぇ~い!

+

88888888888

+

アカウント登録が完了しました!

+ + +
+
+ + + + \ No newline at end of file diff --git a/sw.js b/sw.js new file mode 100644 index 0000000..a999c24 --- /dev/null +++ b/sw.js @@ -0,0 +1,42 @@ +var CACHE_NAME = "app_uwuzu"; +var urlsToCache = [ + "home/index.php", + "search/index.php", + "require/botbox.php", + "require/leftbox.php", + "require/rightbox.php", + "require/botbox.php", + "user/index.php", + "settings/index.php", + "rule/terms.php", + "rule/privacypolicy.php", + "rule/uwuzuabout.php", + "index.php", + "login.php", + "new.php", + "check.php", + "success.php", +]; + +self.addEventListener('install', function(event) { + event.waitUntil( + caches.open(CACHE_NAME) + .then( + function(cache){ + return cache.addAll(urlsToCache); + }) + ); +}); + +self.addEventListener('fetch', function(event) { + event.respondWith( + caches.match(event.request) + .then( + function (response) { + if (response) { + return response; + } + return fetch(event.request); + }) + ); +}); \ No newline at end of file diff --git a/ueuse/index.php b/ueuse/index.php new file mode 100644 index 0000000..cec3dae --- /dev/null +++ b/ueuse/index.php @@ -0,0 +1,620 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +$ueuseid = str_replace('!', '', $_GET['ueuseid']); +$touserid = str_replace('~', '', $_GET['touser']); + + +if( !empty($_POST['btn_submit']) ) { + + $ueuse = $_POST['ueuse']; + + // メッセージの入力チェック + if( empty($ueuse) ) { + $error_message[] = '内容を入力してください。'; + } else { + + // 文字数を確認 + if( 1024 < mb_strlen($ueuse, 'UTF-8') ) { + $error_message[] = '内容は1024文字以内で入力してください。'; + } + } + + + if (empty($_FILES['upload_images']['name'])) { + $photo1 = "none"; + } else { + // アップロードされたファイル情報 + $uploadedFile = $_FILES['upload_images']; + + // アップロードされたファイルの拡張子を取得 + $extension = pathinfo($uploadedFile['name'], PATHINFO_EXTENSION); + + // 新しいファイル名を生成(uniqid + 拡張子) + $newFilename = uniqid() . '-'.$userid.'.' . $extension; + + // 保存先のパスを生成 + $uploadedPath = '../ueuseimages/' . $newFilename; + + // ファイルを移動 + $result = move_uploaded_file($uploadedFile['tmp_name'], $uploadedPath); + + if ($result) { + $photo1 = $uploadedPath; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!(1)エラーコード:' . $uploadedFile['error'].'
'.var_dump($_FILES['upload_images']); + } + } + + if (empty($_FILES['upload_images2']['name'])) { + $photo2 = "none"; + } else { + + if (empty($_FILES['upload_images']['name'])){ + $error_message[] = '画像1から画像を選択してください!!!'; + } + // アップロードされたファイル情報 + $uploadedFile2 = $_FILES['upload_images2']; + + if( 10000000 < $uploadedFile2["size"] ) { + $error_message[] = 'ファイルサイズが大きすぎます!'; + } + // アップロードされたファイルの拡張子を取得 + $extension2 = pathinfo($uploadedFile2['name'], PATHINFO_EXTENSION); + + // 新しいファイル名を生成(uniqid + 拡張子) + $newFilename2 = uniqid() . '-'.$userid.'.' . $extension2; + + // 保存先のパスを生成 + $uploadedPath2 = '../ueuseimages/' . $newFilename2; + + // ファイルを移動 + $result2 = move_uploaded_file($uploadedFile2['tmp_name'], $uploadedPath2); + + if ($result2) { + $photo2 = $uploadedPath2; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!(2)エラーコード:' . $uploadedFile2['error'].'
'.var_dump($_FILES['upload_images']); + } + } + + + if (empty($_FILES['upload_videos1']['name'])) { + $video1 = "none"; + } else { + // アップロードされたファイル情報 + $uploadedFile3 = $_FILES['upload_videos1']; + + // アップロードされたファイルの拡張子を取得 + $extension3 = strtolower(pathinfo($uploadedFile3['name'], PATHINFO_EXTENSION)); // 小文字に変換 + + // サポートされている動画フォーマットの拡張子を配列で定義 + $supportedExtensions = array("mp4", "avi", "mov", "webm"); + + if (in_array($extension3, $supportedExtensions)) { + // 正しい拡張子の場合、新しいファイル名を生成 + $newFilename3 = uniqid() . '-'.$userid.'.' . $extension3; + // 保存先のパスを生成 + $uploadedPath3 = '../ueusevideos/' . $newFilename3; + + // ファイルを移動 + $result3 = move_uploaded_file($uploadedFile3['tmp_name'], $uploadedPath3); + + if ($result3) { + $video1 = $uploadedPath3; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!エラーコード:' . $uploadedFile3['error']; + } + } else { + $error_message[] = '対応していないファイル形式です!'; + } + + + } + + if( empty($error_message) ) { + + // 書き込み日時を取得 + $datetime = date("Y-m-d H:i:s"); + $uniqid = createUniqId(); + $abi = "none"; + + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, rpuniqid, ueuse, photo1, photo2, video1, datetime, abi) VALUES (:username, :account, :uniqid, :rpuniqid, :ueuse, :photo1, :photo2, :video1, :datetime, :abi)"); + + $stmt->bindParam(':username', $username, PDO::PARAM_STR); + $stmt->bindParam(':account', $userid, PDO::PARAM_STR); + $stmt->bindParam(':uniqid', $uniqid, PDO::PARAM_STR); + $stmt->bindParam(':rpuniqid', $ueuseid, PDO::PARAM_STR); + $stmt->bindParam(':ueuse', $ueuse, PDO::PARAM_STR); + + $stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR); + $stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR); + $stmt->bindParam(':video1', $video1, PDO::PARAM_STR); + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + $stmt->bindParam(':abi', $abi, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + $pdo->beginTransaction(); + + $msg = ''.$ueuse.''; + $title = ''.$userid.'さんが返信しました!'; + $url = $_SERVER['REQUEST_URI']; + $userchk = 'none'; + // 通知用SQL作成 + $stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)"); + + $stmt->bindParam(':touserid', $touserid, PDO::PARAM_STR); + $stmt->bindParam(':msg', $msg, PDO::PARAM_STR); + $stmt->bindParam(':url', $url, PDO::PARAM_STR); + $stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR); + $stmt->bindParam(':title', $title, PDO::PARAM_STR); + + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch(Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if( $res ) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = $e->getMessage(); + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + + + +ID <?php echo htmlspecialchars($ueuseid, ENT_QUOTES, 'UTF-8'); ?> のユーズ - uwuzu + + + + + +
+ +
    + +

    + +
+ + +
+

返信

+
+ +
+
+ +

画像のEXIF情報(位置情報など)は削除されません。
情報漏洩に気をつけてくださいね…

+
+ + + + + +
+
+
+ + +
+
+ +
+
+ + + + + + +
+ + + + + + \ No newline at end of file diff --git a/user/headimage.php b/user/headimage.php new file mode 100644 index 0000000..8bf5c1d --- /dev/null +++ b/user/headimage.php @@ -0,0 +1,78 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false +); +$pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + +//$row['userid'] = "daichimarukn"; + +$userid = $_GET['account']; + + +$options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, +); + +if( empty($userid) ) { + $filePath = 'img/deficon/icon.png'; + $data = file_get_contents($filePath); + header('Content-type: image/png'); + //データを出力 + echo $data; + exit(); +}else{ + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT headname, headcontent, headtype, headsize profile FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + + + header('Content-type: ' . $row['headtype']); + echo $row['headcontent']; + exit(); +} \ No newline at end of file diff --git a/user/index.php b/user/index.php new file mode 100644 index 0000000..cb1e816 --- /dev/null +++ b/user/index.php @@ -0,0 +1,646 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + + +function customStripTags($html, $allowedTags) { + $allowedTagsString = '<' . implode('><', $allowedTags) . '>'; + return strip_tags($html, $allowedTagsString); +} + +$allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); + +if( !empty($pdo) ) { + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $uwuzuid = str_replace('@', '', $_GET['uwuzuid']); + + // ユーズ内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + $userQuery = $dbh->prepare("SELECT username, userid, profile, role, follower FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $uwuzuid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + + if(!empty($userData["userid"])){ + + + $roles = explode(',', $userData["role"]); // カンマで区切られたロールを配列に分割 + + $rerole = $dbh->prepare("SELECT follow, follower, username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime FROM account WHERE userid = :userid"); + + $rerole->bindValue(':userid', $uwuzuid); + // SQL実行 + $rerole->execute(); + + $userdata = $rerole->fetch(); // ここでデータベースから取得した値を $role に代入する + + $roleDataArray = array(); + + foreach ($roles as $roleId) { + $rerole = $dbh->prepare("SELECT rolename, roleauth, rolecolor FROM role WHERE roleidname = :role"); + $rerole->bindValue(':role', $roleId); + $rerole->execute(); + $roleDataArray[$roleId] = $rerole->fetch(); + } + + + //-------フォロー数--------- + $follow = $userdata['follow']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $followIds = explode(',', $follow); + $followCount = count($followIds)-1; + + $follow_on_me = strpos($follow, $userid); + if ($follow_on_me !== false) { + $follow_yes = "フォローされています"; // worldを含む:6 + }else{ + $follow_yes = ""; // worldを含む:6 + } + + //-------フォロワー数--------- + $follower = $userdata['follower']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $followerIds = explode(',', $follower); + $followerCount = count($followerIds)-1; + + $profileText = htmlspecialchars($userData['profile'], ENT_QUOTES, 'UTF-8'); + + }else{ + $userData["userid"] = "none"; + $userData['username'] = "ゆーざーなし"; + } +} + +if (!empty($_POST['follow'])) { + // フォローボタンが押された場合の処理 + $followerList = explode(',', $userdata['follower']); + if (!in_array($userid, $followerList)) { + // 自分が相手をフォローしていない場合、相手のfollowerカラムと自分のfollowカラムを更新 + $followerList[] = $userid; + $newFollowerList = implode(',', $followerList); + + // UPDATE文を実行してフォロー情報を更新 + $updateQuery = $pdo->prepare("UPDATE account SET follower = :follower WHERE userid = :userid"); + $updateQuery->bindValue(':follower', $newFollowerList, PDO::PARAM_STR); + $updateQuery->bindValue(':userid', $userData['userid'], PDO::PARAM_STR); + $res = $updateQuery->execute(); + + // 自分のfollowカラムを更新 + $updateQuery = $pdo->prepare("UPDATE account SET follow = CONCAT_WS(',', follow, :follow) WHERE userid = :userid"); + $updateQuery->bindValue(':follow', $userData["userid"], PDO::PARAM_STR); + $updateQuery->bindValue(':userid', $userid, PDO::PARAM_STR); + $res_follow = $updateQuery->execute(); + + if ($res && $res_follow) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:" . $url); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + $stmt = null; + } +} elseif (!empty($_POST['unfollow'])) { + // フォロー解除ボタンが押された場合の処理 + $followerList = explode(',', $userdata['follower']); + if (in_array($userid, $followerList)) { + // 自分が相手をフォローしている場合、相手のfollowerカラムと自分のfollowカラムを更新 + $followerList = array_diff($followerList, array($userid)); + $newFollowerList = implode(',', $followerList); + + // UPDATE文を実行してフォロー情報を更新 + $updateQuery = $pdo->prepare("UPDATE account SET follower = :follower WHERE userid = :userid"); + $updateQuery->bindValue(':follower', $newFollowerList, PDO::PARAM_STR); + $updateQuery->bindValue(':userid', $userData['userid'], PDO::PARAM_STR); + $res = $updateQuery->execute(); + + $deluserid = ",".$userdata["userid"]; + // 自分のfollowカラムから相手のユーザーIDを削除 + $updateQuery = $pdo->prepare("UPDATE account SET follow = REPLACE(follow, :follow, '') WHERE userid = :userid"); + $updateQuery->bindValue(':follow', $deluserid, PDO::PARAM_STR); + $updateQuery->bindValue(':userid', $userid, PDO::PARAM_STR); + $res_follow = $updateQuery->execute(); + + if ($res && $res_follow) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:" . $url); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + $stmt = null; + } +} + + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + + + +<?php echo htmlspecialchars($userData['username'], ENT_QUOTES, 'UTF-8'); ?> さんのプロフィール - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ + +
+ +

このユーザーは存在しません

+ +
+ +
+
+ +

+

@

+
+ +
+ + +
;"> +

;"> + +

+
+ +
+ +
+

+
+ +
+
+
+

からuwuzuを利用しています。

+

フォロー数: フォロワー数:

+
+ + + + + + +
+ +
+ + +
+ + + + + +
+
+
+ +
+
+ + + + + + + +
+ + + + + + + + + + + \ No newline at end of file From 7bac0b3b58fa9976826801e02888be227ead7d31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:52:51 +0900 Subject: [PATCH 05/51] =?UTF-8?q?uwuzu=E3=81=AE=E3=82=B3=E3=83=BC=E3=83=89?= =?UTF-8?q?=E3=81=A7=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- abi/addabi.php | 40 + api/userdata-api.php | 75 + check.php | 225 ++ css/home.css | 3501 ++++++++++++++++++++++++++ css/style.css | 855 +++++++ db.php | 9 + delete/delete.php | 27 + emoji/addemoji.php | 360 +++ emoji/emojiimage.php | 75 + emoji/index.php | 197 ++ errorpage/400.php | 54 + errorpage/401.php | 54 + errorpage/403.php | 54 + errorpage/404.php | 54 + errorpage/500.php | 54 + errorpage/503.php | 54 + errorpage/serverstop.php | 89 + favicon/apple-touch-icon-180x180.png | Bin 0 -> 1905 bytes favicon/icon-192x192.png | Bin 0 -> 2067 bytes favorite/favorite.php | 57 + home/index.php | 612 +++++ home/tlimage.php | 78 + image.php | 77 + img/defhead/head.png | Bin 0 -> 8502 bytes img/deficon/head.png | Bin 0 -> 8502 bytes img/deficon/icon.png | Bin 0 -> 123586 bytes img/logoback.png | Bin 0 -> 11078 bytes img/motto.svg | 32 + img/sysimage/favorite_1.svg | 1 + img/sysimage/favorite_2.svg | 1 + img/sysimage/image_1.svg | 1 + img/sysimage/video_1.svg | 1 + img/titleimg/0.png | Bin 0 -> 54406 bytes img/titleimg/1.png | Bin 0 -> 64541 bytes img/titleimg/2.png | Bin 0 -> 89250 bytes img/uwuzucolorlogo.svg | 151 ++ img/uwuzulogo.svg | 195 ++ index.php | 145 ++ js/back.js | 6 + login.php | 205 ++ manifest/icon-512x512.png | Bin 0 -> 5221 bytes manifest/manifest.json | 15 + new.php | 498 ++++ nextpage/nextpage.php | 124 + nextpage/notification.php | 63 + nextpage/notificationview.php | 32 + nextpage/searchpage.php | 131 + nextpage/ueusepage.php | 139 + nextpage/userpage.php | 140 + nextpage/view.php | 85 + notice/addnotice.php | 292 +++ notice/notice.php | 40 + notification/index.php | 229 ++ others/index.php | 300 +++ reply/reply.php | 202 ++ require/botbox.php | 10 + require/leftbox.php | 26 + require/rightbox.php | 45 + rule/privacypolicy.php | 80 + rule/releasenotes.php | 93 + rule/terms.php | 80 + rule/uwuzuabout.php | 93 + search/index.php | 390 +++ server/admininfo.txt | 1 + server/contact.txt | 1 + server/info.txt | 3 + server/privacypolicy.txt | 1 + server/servername.txt | 1 + server/serverstop.txt | 2 + server/terms.txt | 1 + server/uwuzuabout.txt | 141 ++ server/uwuzuinfo.txt | 4 + server/uwuzurelease.txt | 45 + settings/index.php | 664 +++++ success.php | 41 + sw.js | 42 + ueuse/index.php | 620 +++++ user/headimage.php | 78 + user/index.php | 646 +++++ 79 files changed, 12737 insertions(+) create mode 100644 abi/addabi.php create mode 100644 api/userdata-api.php create mode 100644 check.php create mode 100644 css/home.css create mode 100644 css/style.css create mode 100644 db.php create mode 100644 delete/delete.php create mode 100644 emoji/addemoji.php create mode 100644 emoji/emojiimage.php create mode 100644 emoji/index.php create mode 100644 errorpage/400.php create mode 100644 errorpage/401.php create mode 100644 errorpage/403.php create mode 100644 errorpage/404.php create mode 100644 errorpage/500.php create mode 100644 errorpage/503.php create mode 100644 errorpage/serverstop.php create mode 100644 favicon/apple-touch-icon-180x180.png create mode 100644 favicon/icon-192x192.png create mode 100644 favorite/favorite.php create mode 100644 home/index.php create mode 100644 home/tlimage.php create mode 100644 image.php create mode 100644 img/defhead/head.png create mode 100644 img/deficon/head.png create mode 100644 img/deficon/icon.png create mode 100644 img/logoback.png create mode 100644 img/motto.svg create mode 100644 img/sysimage/favorite_1.svg create mode 100644 img/sysimage/favorite_2.svg create mode 100644 img/sysimage/image_1.svg create mode 100644 img/sysimage/video_1.svg create mode 100644 img/titleimg/0.png create mode 100644 img/titleimg/1.png create mode 100644 img/titleimg/2.png create mode 100644 img/uwuzucolorlogo.svg create mode 100644 img/uwuzulogo.svg create mode 100644 index.php create mode 100644 js/back.js create mode 100644 login.php create mode 100644 manifest/icon-512x512.png create mode 100644 manifest/manifest.json create mode 100644 new.php create mode 100644 nextpage/nextpage.php create mode 100644 nextpage/notification.php create mode 100644 nextpage/notificationview.php create mode 100644 nextpage/searchpage.php create mode 100644 nextpage/ueusepage.php create mode 100644 nextpage/userpage.php create mode 100644 nextpage/view.php create mode 100644 notice/addnotice.php create mode 100644 notice/notice.php create mode 100644 notification/index.php create mode 100644 others/index.php create mode 100644 reply/reply.php create mode 100644 require/botbox.php create mode 100644 require/leftbox.php create mode 100644 require/rightbox.php create mode 100644 rule/privacypolicy.php create mode 100644 rule/releasenotes.php create mode 100644 rule/terms.php create mode 100644 rule/uwuzuabout.php create mode 100644 search/index.php create mode 100644 server/admininfo.txt create mode 100644 server/contact.txt create mode 100644 server/info.txt create mode 100644 server/privacypolicy.txt create mode 100644 server/servername.txt create mode 100644 server/serverstop.txt create mode 100644 server/terms.txt create mode 100644 server/uwuzuabout.txt create mode 100644 server/uwuzuinfo.txt create mode 100644 server/uwuzurelease.txt create mode 100644 settings/index.php create mode 100644 success.php create mode 100644 sw.js create mode 100644 ueuse/index.php create mode 100644 user/headimage.php create mode 100644 user/index.php diff --git a/abi/addabi.php b/abi/addabi.php new file mode 100644 index 0000000..074c090 --- /dev/null +++ b/abi/addabi.php @@ -0,0 +1,40 @@ +beginTransaction(); + + $stmt = $pdo->prepare("UPDATE ueuse SET abi = :abi, abidate = :abidate WHERE uniqid = :uniqid"); + $stmt->bindValue(':abi', $abitext, PDO::PARAM_STR); + $stmt->bindValue(':abidate', $abidate, PDO::PARAM_STR); + $stmt->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $pdo->commit(); + + if ($res) { + header('Content-Type: application/json'); + echo json_encode(['success' => true]); + exit; + } else { + header('Content-Type: application/json'); + echo json_encode(['success' => false, 'error' => '追加に失敗しました。']); + exit; + } + } catch(PDOException $e) { + header('Content-Type: application/json'); + echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); + exit; + } +} +?> diff --git a/api/userdata-api.php b/api/userdata-api.php new file mode 100644 index 0000000..507dcc3 --- /dev/null +++ b/api/userdata-api.php @@ -0,0 +1,75 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + } catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); + } + + + if (!empty($pdo)) { + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $pdo->prepare("SELECT username,profile,datetime,follow,follower FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $search); + $userQuery->execute(); + $userdata = $userQuery->fetch(); + } +if (empty($userdata)){ + $response = array( + 'error_code' => "userid_not_found", + ); +}else{ + $followcnts = explode(',', $userdata["follow"]); + $userdata["follow_cnt"] = count($followcnts)-1; + + $followercnts = explode(',', $userdata["follower"]); + $userdata["follower_cnt"] = count($followercnts)-1; + + $response = array( + 'user_name' => $userdata["username"], + 'profile' => $userdata["profile"], + 'registered_date' => $userdata["datetime"], + 'follow' => $userdata["follow"], + 'follow_cnt' => $userdata["follow_cnt"], + 'follower' => $userdata["follower"], + 'follower_cnt' => $userdata["follower_cnt"], + ); +} +echo json_encode($response); + +}else{ + + $err = "input_not_found"; + $response = array( + 'error_code' => $err, + ); + + echo json_encode($response); +} +?> \ No newline at end of file diff --git a/check.php b/check.php new file mode 100644 index 0000000..1584fe0 --- /dev/null +++ b/check.php @@ -0,0 +1,225 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + //$row['userid'] = "daichimarukn"; + + $userid = $_SESSION['userid']; + + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT userid, username, profile, role FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + $username = $row["username"]; + + $role = $row["role"]; + + + //-------------------------------------- + + $userQuery = $dbh->prepare("SELECT username, userid, loginid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $userid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + $roles = explode(',', $userData["role"]); // カンマで区切られたロールを配列に分割 + + $roleDataArray = array(); + + foreach ($roles as $roleId) { + $rerole = $dbh->prepare("SELECT rolename, roleauth, rolecolor FROM role WHERE roleidname = :role"); + $rerole->bindValue(':role', $roleId); + $rerole->execute(); + $roleDataArray[$roleId] = $rerole->fetch(); + } + + + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + + +if( !empty($_POST['btn_submit']) ) { + + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['loginid'] = $userData["loginid"]; + + $_SESSION['username'] = $username; + $_SESSION['password'] = ""; + + // リダイレクト先のURLへ転送する + $url = '/home'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + +if( !empty($_POST['btn_submit2']) ) { + + $_SESSION['admin_login'] = false; + $_SESSION['userid'] = ""; + + $_SESSION['username'] = ""; + + // リダイレクト先のURLへ転送する + $url = 'index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +確認 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
+

確認

+ +

あなたは ですか?

+ + +
    + +

    + +
+ + +
+ +

名前

+

+
+ + +
;"> +

;"> + +

+
+ +
+
+

プロフィール

+

+ +
+ +
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/css/home.css b/css/home.css new file mode 100644 index 0000000..a612299 --- /dev/null +++ b/css/home.css @@ -0,0 +1,3501 @@ +@import url('https://fonts.googleapis.com/css2?family=BIZ+UDPGothic:wght@400;700&family=Josefin+Sans:ital,wght@1,700&family=Kosugi+Maru&family=Zen+Maru+Gothic:wght@500&display=swap'); + + +::-webkit-scrollbar{ + display:none; +} +::-webkit-scrollbar:hover{ + overflow: scroll; + margin-right: 10px; + border-radius: 25px; +} +body{ + width: 70%; + display: flex; + border: none; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + padding-top: 12px; + background-color: #f7f7f7; + /* 画像を常に天地左右の中央に配置 */ + background-position: center center; + + /* 画像をタイル状に繰り返し表示しない */ + background-repeat: no-repeat; + + /* コンテンツの高さが画像の高さより大きい時、動かないように固定 */ + background-attachment: fixed; + + /* 表示するコンテナの大きさに基づいて、背景画像を調整 */ + background-size: cover; +} + +.irobutton{ + cursor: pointer; + border: none; + display: block; + width:50%; + margin: 32px; + padding: 8px 5%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + background-color: #FFC832; + + text-align: center; + border-radius: 50px; + color:#fff; + font-size: 22px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.sirobutton{ + cursor: pointer; + border: none; + display: block; + width:40%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + text-align: center; + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 22px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:45%; +} +.sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.inbox { + width: 96%; + padding: 8px 10px; + border: none; + border-radius: 10px; + background: #fff; + font-family: 'Zen Maru Gothic', sans-serif; + color: rgb(32,32,32); + font-size: 1em; + line-height: 1.5; + white-space: nowrap; + box-shadow:0px 0px 25px rgba(0,0,0,0.05) inset; + box-shadow:0px 0px 25px rgba(0,0,0,0.07); + overflow-x: scroll; + overflow-y : scroll ; + transition: border 350ms ease-in-out; + transition: border-bottom 150ms ease-out; + border: 1px solid #f1f1f1; + } + +.inbox::placeholder { + color: #999; +} + +.inbox:hover { + outline: none; + border: 1px solid #FFC832; +} + +.inbox:focus { + outline: none; + border: 1px solid #FFC832; + border-bottom: 3px solid #FFC832; +} + + +.errmsg{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 10px; + background-color: #ffebeb; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin: 12px; + text-align: left; + color:#ff4848; + font-family: 'BIZ UDPGothic', sans-serif; + word-wrap: break-word; + line-height: 20px; + border: 1px solid #FF4848; +} + +.flexbtn{ + display: flex; +} + +.flexbtn .irobutton{ + border: none; + display: block; + width:20%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + background-color: #FFC832; + + border-radius: 50px; + color:#fff; + font-size: 26px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.flexbtn.irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.flexbtn.irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.flexbtn.sirobutton{ + border: none; + display: block; + width:50%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 26px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.flexbtn.sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.flexbtn.sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + + +.rolebox{ + + margin-top: 12px; + margin-bottom: 12px; + + margin-left: auto; + margin-right: auto; + + width: 120px; + padding-left: auto; + padding-right: auto; + + background-color: #fff; + border: 1px solid #FFC832; + + border-radius: 25px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + +} + +.rolebox p{ + + color:#FFC832; + margin-top: 2px; + margin-bottom: 2px; + margin-left: 10px; + margin-right: 10px; + + text-align: center; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + +} + + +.userleftbox{ + border-radius: 17px; + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + margin-bottom: 12px; + background-color: #FFFFFF; + width: 18%; + height: 100%; + margin-left: 0px; + padding: 32px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; +} + +.userleftbox h1{ + font-family: 'Zen Maru Gothic', sans-serif; + margin-left: 20px; + color:#fff; + font-size: 32px; +} +.userleftbox .logo{ + display: flex; +} + +.userleftbox .logo img{ + + margin-left: auto; + margin-right: auto; + margin-top: 16px; + width: 72%; + + +} +.userleftbox .logo p{ + color:#FFC832; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; +} + +.leftbutton_on{ + cursor: pointer; + border: none; + display: block; + width:70%; + margin: 16px; + padding: 8px auto; + margin-left: auto; + margin-right: auto; + + padding-left: 16px; + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 20px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: left; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.leftbutton_on:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:75%; +} +.leftbutton_on:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:65%; +} + +.leftbutton{ + cursor: pointer; + border: none; + display: block; + width:70%; + margin: 16px; + padding: 8px auto; + margin-left: auto; + margin-right: auto; + + padding-left: 16px; + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFFFFF; + + border-radius: 50px; + color:#FFC832; + font-size: 20px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: left; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.leftbutton:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:75%; +} +.leftbutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:65%; +} + +main{ + height: 95dvh; + overflow: auto; + border-radius: 17px; + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + width: 62%; + background-color: #fff; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; +} + +main h1{ + color:#252525; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; +} + +.userheader{ + margin: 12px; + border-radius: 10px; + width: auto; + height:auto; + margin-bottom: 12px; +} + +.userheader .hed img{ + object-fit: cover; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + width: 100%; + height:25vh; + border-radius: 10px; +} + +.userheader .icon{ + margin-left: 24px; + display: flex; + width: auto; +} + +.userheader .icon img{ + object-fit: cover; + margin-top: -90px; + text-align: left; + width: 148px; + height:148px; + border-radius: 50%; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); +} + +.userheader h2{ + margin-left: 12px; + margin-top: auto; + margin-bottom: auto; + color:#252525; + font-size: 32px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: 900; +} + +.userheader p{ + margin-left: 12px; + margin-right: auto; + margin-top: auto; + margin-bottom: 14px; + color: #999; + font-size: 18px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: 900; +} + +.userheader .profile p{ + text-align: left; + margin-top: 12px; + margin-bottom: auto; + margin-left: 24px; + margin-right: 24px; + word-wrap: break-word; + font-size: 18px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.userheader .roleboxes{ + margin-left: 180px; + display: flex; + padding: 0px; + flex-wrap : wrap; +} + + +.userheader .rolebox{ + + margin-top: 0px; + margin-bottom: 12px; + + margin-left: 0px; + margin-right: 12px; + + width: auto; + padding-left: auto; + padding-right: auto; + + background-color: #fff; + border: 1px solid #FFC832; + + border-radius: 25px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + +} + + +.userheader .rolebox p{ + + color:#FFC832; + margin-top: 2px; + margin-bottom: 2px; + margin-left: 10px; + margin-right: 10px; + + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + +} + +.fzone{ + margin-left: 24px; + margin-right: 24px; + margin-bottom: 24px; + width: auto; + height: 48px; + display: flex; + padding-left: 12px; + padding-right: 12px; +} + +.fzone .follow .fbtn{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 0px; + margin-top: 12px; + margin-bottom: 12px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.fzone .follow .fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.fzone .follow .fbtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.fzone .follow .fbtn_no{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 0px; + margin-top: 12px; + margin-bottom: 12px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + border: 1px solid #FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.fzone .follow .fbtn_no:hover{ + background-color: #FFFAE6; + color: #FFC832; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.fzone .follow .fbtn_no:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.fzone .follow .fbtn_un{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 0px; + margin-top: 12px; + margin-bottom: 12px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#4e4428; + border: none; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.fzone .follow .fbtn_un:hover{ + background-color: #FFFAE6; + color: #FFC832; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.fzone .follow .fbtn_un:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.fzone .time{ + margin-top: auto; + margin-bottom: 0px; + margin-left: 0px; + margin-right: auto; +} +.fzone .time p{ + margin-top: 0px; + margin-bottom: 0px; + text-align: left; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.fzone .time a{ + margin-top: 0px; + margin-bottom: 0px; + text-align: left; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.fzone .follow_yes{ + margin-top: auto; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + background-color: #FFFAE6; + border-radius: 10px; + padding: 12px; +} +.fzone .follow_yes p{ + margin-top: 0px; + margin-bottom: 0px; + text-align: left; + font-size: 12px; + color:#252525; + font-family: 'BIZ UDPGothic', sans-serif; +} + + + +.ueuse{ + animation: slideInY 0.5s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards; + margin: 12px; + border-radius: 10px; + padding-left: 24px; + padding-right: 24px; + padding-top: 16px; + padding-bottom: 16px; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; +} +@keyframes slideInY { + 0% { + transform: translateY(24px); + opacity: 0; + } + 100% { + transform: translateY(0px); + } + 40%,100% { + opacity: 1; + } +} +.ueuse .flebox{ + display: flex; +} +.ueuse .flebox img{ + object-fit: cover; + margin-left: -12px; + + text-align: center; + width: 48px; + height:48px; + border-radius: 50%; +} +.ueuse .flebox a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 18px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + + + + +.ueuse .flebox .idbox{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + border-radius: 10px; + background-color: #FFF; + border: 1px solid #EEE; +} +.ueuse .flebox .idbox a{ + margin-top: 6px; + margin-bottom: 6px; + margin-left: 8px; + margin-right: 8px; + text-align: center; + font-size: 12px; + color:#999; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.ueuse p{ + line-height:20px; + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 60px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + +.ueuse h1{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 60px; + font-size: 48px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse h2{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 60px; + font-size: 32px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse h3{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 60px; + font-size: 24px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse center{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + font-size: 16px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse p img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 32px; + vertical-align: middle; +} + +.ueuse h1 img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 64px; + vertical-align: middle; +} + +.ueuse h2 img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 48px; + vertical-align: middle; +} + +.ueuse h3 img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 48px; + vertical-align: middle; +} + +.ueuse img{ + margin-left: 60px; + margin-top: auto; + margin-bottom: auto; + margin-right: 4px; + height: 32px; + vertical-align: middle; +} + +.ueuse .flebox .time{ + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + margin-right: 12px; + text-align: right; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.ueuse .photo1 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: 350px; + border: 1px solid #EEE; +} + +.ueuse .photo2{ + display: flex; +} + +.ueuse .photo2 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 47%; + height: 350px; + border: 1px solid #EEE; +} + +.ueuse .video1 video{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: 350px; + border: 1px solid #EEE; +} + +.ueuse .abi{ + margin-left:auto; + margin-right: auto; + margin-top: 12px; + margin-bottom: 12px; + border-radius: 10px; + padding-left: 12px; + padding-right: 12px; + padding-top: 16px; + padding-bottom: 16px; + background-color: #FFFFFF; + border: 1px solid #EEE; + width: auto; +} + + +.ueuse .abi p{ + line-height:20px; + overflow-wrap: break-word; + margin-top: 12px; + margin-bottom: 12px; + margin-left: auto; + font-size: 14px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse .abi .back{ + background-color: #FFFAE6; + padding: 12px; + border-radius: 7px; + border: 1px solid #EEE; +} + +.ueuse .abi .back h1{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse .abi h3{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + font-size: 12px; + color:#999; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse .favbox{ + display: flex; + margin-left: 0px; + width: 100%; +} +.ueuse .favbox .favbtn{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: all 250ms ease-out; +} + +.ueuse .favbox .favbtn_after{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: all 250ms ease-out +} + + +.ueuse .favbox .tuduki{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 5px; + padding-bottom: 5px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + +.ueuse .favbox .tuduki:hover{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 5px; + padding-bottom: 5px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + +.ueuse .favbox .delbtn{ + cursor: pointer; + border: none; + display: block; + width:60px; + padding: 8px auto; + + margin-left: 6px; + margin-right: 0px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + + + background-color: #F5F5F5; + + border-radius: 50px; + color:#FF4848; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + +.ueuse .favbox .delbtn:hover{ + cursor: pointer; + border: none; + display: block; + width:60px; + padding: 8px auto; + + margin-left: 6px; + margin-right: 0px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + + + background-color: #FF4848; + + border-radius: 50px; + color: #f5f5f5;; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + + + +.ueuse .favbox .addabi{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: auto; + margin-right: 6px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + +.ueuse .favbox .addabi:hover{ + cursor: pointer; + border: none; + display: block; + width:auto; + + margin-left: auto; + margin-right: 6px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color: #FFFAE6;; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + + +.ueuse .favbox img{ + margin-left: 0px; + width: 24px; +} + +.ueuse hr{ + height: 0; + margin-top: 12px; + margin-bottom: 12px; + padding: 0; + border: 0; + border-top: 1px solid #999; +} + + + +.tokonone p{ + text-align: center; + margin-top: 64px; + margin-bottom: 64px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.sendbox{ + margin: 12px; + border-radius: 10px; + padding-left: 24px; + padding-right: 24px; + padding-top: 24px; + padding-bottom: 24px; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; +} + +.sendbox .fx{ + display: flex; + width: 100%; +} + +.sendbox .fx img{ + object-fit: cover; + margin-left: -12px; + text-align: center; + width: 58px; + height:58px; + border-radius: 50%; +} + +.sendbox p{ + line-height:20px; + text-align: left; + margin-top: 12px; + margin-bottom: 12px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.sendbox textarea{ + background-color: #F5F5F5; + text-align: left; + margin-left: auto; + margin-right: auto; + width:100%; + height:90px; + border-radius: 10px; + outline: none; + border: none; + resize: none; + font-size: 18px; +} + +.sendbox .fxbox{ + display: flex; +} + +.sendbox label > input { + display:none; /* アップロードボタンのスタイルを無効にする */ +} + +.sendbox label{ + cursor: pointer; + border: none; + display: block; + width:6%; + padding: 8px auto; + margin-left: 6px; + margin-right: 6px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.sendbox label:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:7%; +} +.sendbox label:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:5%; +} +.sendbox label img{ + vertical-align:bottom; + width: 24px; +} +.sendbox .fxbox p{ + line-height:20px; + text-align: left; + margin-top: auto; + margin-bottom: auto; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + + +.ueusebtn{ + cursor: pointer; + border: none; + display: block; + width:20%; + padding: 8px auto; + margin-left: auto; + margin-right: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.ueusebtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:21%; +} +.ueusebtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:19%; +} +/*--------------------------*/ + +.ueuse2{ + margin: 12px; + border-radius: 10px; + padding-left: 24px; + padding-right: 24px; + padding-top: 16px; + padding-bottom: 16px; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; +} +.ueuse2 .flebox{ + display: flex; +} +.ueuse2 .flebox img{ + object-fit: cover; + margin-left: -12px; + + text-align: center; + width: 64px; + height:64px; + border-radius: 50%; +} +.ueuse2 .flebox a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 26px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse2 .flebox .idbox{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + border-radius: 10px; + background-color: #FFF; + border: 1px solid #EEE; +} +.ueuse2 .flebox .idbox a{ + margin-top: 6px; + margin-bottom: 6px; + margin-left: 8px; + margin-right: 8px; + text-align: center; + font-size: 16px; + color:#999; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.ueuse2 p{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 80px; + font-size: 22px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse2 a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + font-size: 16px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse2 p img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 32px; + vertical-align: middle; +} + +.ueuse2 .flebox .time{ + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + margin-right: 12px; + text-align: right; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.ueuse2 .photo1 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: 25dvh; + border: 1px solid #EEE; +} + +.ueuse2 .photo2{ + display: flex; +} + +.ueuse2 .photo2 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 47%; + height: 350px; + border: 1px solid #EEE; +} + +.ueuse2 .video1 video{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: 350px; + border: 1px solid #EEE; +} + +.formarea{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + text-align: left; +} + +.formarea p{ + overflow-wrap: break-word; + margin-top: 24px; + margin-bottom: 24px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.formarea .iconimg{ + margin-left: auto; + margin-right: auto; + text-align: center; +} + +.formarea .iconimg img{ + object-fit: cover; + margin-top: -64px; + margin-left: auto; + margin-right: auto; + text-align: center; + width: 100px; + height:100px; + border-radius: 50%; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); +} +.formarea .hed img{ + object-fit: cover; + object-fit: cover; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + width: 100%; + height:25vh; + border-radius: 10px; +} + +.formarea .sub{ + display: flex; + margin: 48px; + margin-left: auto; + margin-right: auto; +} +label>input { + display:none; /* アップロードボタンのスタイルを無効にする */ +} +.imgbtn{ + cursor: pointer; + border: none; + display: block; + width:25%; + padding: 8px auto; + margin-left: auto; + margin-right: auto; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.imgbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:19%; +} +.imgebtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:21%; +} + +.imgbtn2{ + cursor: pointer; + border: none; + display: block; + width:20%; + padding: 8px auto; + margin-top: -64px; + margin-left: 12px; + margin-right: auto; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.imgbtn2:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:19%; +} +.imgebtn2:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:21%; +} + +.modal { + display: none; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: 9999; +} + +.show { + display: block; +} +.modal-content { + background-color: #fff; + padding: 16px; + border-radius: 10px; + width: 60%; + max-width: 400px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); +} + +.modal-content textarea{ + background-color: #F5F5F5; + text-align: left; + margin-left: auto; + margin-right: auto; + width:100%; + height:90px; + border-radius: 10px; + outline: none; + border: none; + resize: none; + font-size: 18px; +} +.modal-content p{ + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.modal-content h1{ + font-size: 24px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.modal-content .btn_area{ + display: flex; + width: 70%; + margin-left: auto; + margin-right: 0px; +} + +.modal-content .fbtn{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 6px; + margin-bottom: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.modal-content .fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.modal-content .fbtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.modal-content .fbtn_no{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 0px; + margin-bottom: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + border: 1px solid #FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.modal-content .fbtn_no:hover{ + background-color: #FFFAE6; + color: #FFC832; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.modal-content .fbtn_no:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.topbox { + position: fixed; + + top: 0; + left: 0; + width: 100%; + height: 44px; + padding-top: 0.0%; + padding-bottom: 0.2%; + padding-left: 23%; + + background-color: #FFC832; + box-shadow: 0px 0px 30px rgba(0,0,0,0.1); + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 2em; + text-align: left; + color: #fff; + +} + +.topbox .logo img{ + margin-left: 0px; + margin-right: auto; + margin-top: 2px; + width: 120px; +} + +.terms{ + overflow-wrap: break-word; + margin-left: auto; + margin-right: auto; + width: 77%; + margin-top: 64px; + margin-bottom: 64px; + background-color: #f7f7f7; +} + +.terms h1{ + line-height:32px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 48px; + text-align: left; + color: #252525; +} + +.terms h2{ + line-height:32px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 48px; + text-align: left; + color: #252525; +} + +.terms h3{ + line-height:28px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + text-align: left; + color: #252525; +} + +.terms h4{ + line-height:24px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 24px; + text-align: left; + color: #252525; +} + +.terms p{ + margin-top: 2px; + margin-bottom: 2px; + line-height:24px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #252525; +} + +.terms img{ + background-color: #FFF; + background: linear-gradient(45deg, #CCC 25%, transparent 25%, transparent 75%, #CCC 75%), + linear-gradient(45deg, #CCC 25%, transparent 25%, transparent 75%, #CCC 75%); + background-size: 20px 20px; + background-position: 0 0, 10px 10px; + object-fit: cover; + width: auto; + height: 40dvh; + margin: 12px; + border-radius: 15px; +} +.terms .code{ + background-color: #252525; + border-radius: 15px; + padding: 12px; +} + +.terms .code p{ + line-height:24px; + margin-right: 12px; + margin-left: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #FFFFFF; +} + + +.terms .p2c{ + margin-top: 0px; + margin-bottom: 10px; + text-align: left; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.terms .p3{ + margin-top: 24px; + text-align: left; + word-wrap: break-word; + line-height: 24px; + color: #252525; + font-size: 22px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.terms ul{ + margin-top: 6px; + margin-bottom: 6px; + font-family: 'BIZ UDPGothic', sans-serif; + line-height: 20px; +} + +.terms .err404 h1{ + margin-top: 256px; + line-height:64px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 64px; + text-align: center; + color: #252525; +} + +.terms .err404 p{ + margin-top: 2px; + margin-bottom: 2px; + line-height:32px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: center; + color: #252525; +} + + +.rightbox{ + position: relative; + border-radius: 17px; + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + width: 24%; + background-color: #fff; + padding: 12px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; +} + +.rightbox h1{ + + margin-top: 12px; + margin-bottom: 0px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 28px; + text-align: left; + color: #252525; +} + +.rightbox .noticearea{ + width: auto; + height: 52dvh; + overflow: scroll; + border-radius: 10px; +} + +.rightbox .noticebox{ + overflow-wrap: break-word; + border-radius: 10px; + margin-top: 12px; + margin-bottom: 12px; + margin-left: auto; + margin-right: auto; + width: auto; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; + padding: 12px; +} + +.rightbox .noticebox h4{ + margin-top: 2px; + margin-bottom: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 20px; + text-align: left; + color: #252525; +} + +.rightbox .noticebox p{ + line-height: 20px; + margin-top: 2px; + margin-bottom: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #252525; +} + +.rightbox .noticebox img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 32px; + vertical-align: middle; +} + +.rightbox .noticebox .makeup p{ + line-height: 20px; + margin-top: 2px; + margin-bottom: 2px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #252525; +} + +.rightbox .noticebox .makeup a{ + margin-top: 24px; + margin-bottom: auto; + margin-left: 0px; + font-size: 16px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.rightbox .noticebox .time{ + margin-top: 4px; + margin-bottom: auto; + margin-left: 0px; + margin-right: auto; +} +.rightbox .noticebox .time p{ + margin-top: 0px; + margin-bottom: 0px; + text-align: left; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + + + +.rightbox .btmbox{ + position: absolute; + bottom: 12px; /*下に固定*/ + height: 31dvh; + width: 90%; +} + +.rightbox .btmbox h2{ + margin-top: 12px; + margin-bottom: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 20px; + text-align: left; + color: #252525; +} + +.rightbox .btmbox h3{ + margin-top: 2px; + margin-bottom: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 20px; + text-align: left; + color: #252525; +} + +.rightbox .btmbox p{ + + line-height: 20px; + margin-top: 2px; + margin-bottom: 2px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 14px; + text-align: left; + color: #252525; +} + +.rightbox .btmbox a{ + margin-top: 24px; + margin-bottom: auto; + margin-left: 0px; + margin-right: 6px; + font-size: 14px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + + +.loading { + text-align: center; + font-size: 48px; /* 絵文字のサイズ */ + animation: rotate 0.5s infinite linear; /* アニメーションを適用 */ +} + +@keyframes rotate { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +.emojibox{ + margin-left: 12px; + margin-right: 12px; + padding: 12px; + width: auto; +} + +.emojizone{ + margin-left: 0px; + margin-right: 0px; + margin-top: 12px; +} + +.emjtex{ + background-color: #F5F5F5; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + padding: 12px; + border-radius: 10px; + border: 1px solid #EEE; +} + +.emjtex .fx{ + display: flex; +} + +.emjtex img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 64px; +} + +.emjtex h3{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 24px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.emjtex p{ + overflow-wrap: break-word; + margin-top: 12px; + margin-bottom: auto; + margin-left: 12px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.rp p{ + overflow-wrap: break-word; + margin-top: 0px; + margin-bottom: 6px; + margin-left: 12px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + + +.notification{ + animation: slideInY 0.5s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards; + margin: 12px; + border-radius: 10px; + padding-left: 24px; + padding-right: 24px; + padding-top: 16px; + padding-bottom: 16px; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; +} +@keyframes slideInY { + 0% { + transform: translateY(24px); + opacity: 0; + } + 100% { + transform: translateY(0px); + } + 40%,100% { + opacity: 1; + } +} +.notification .flebox{ + display: flex; +} + +.notification .flebox a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 18px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.notification .flebox .idbox{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + border-radius: 10px; + background-color: #FFF; + border: 1px solid #EEE; +} +.notification .flebox .idbox a{ + margin-top: 6px; + margin-bottom: 6px; + margin-left: 8px; + margin-right: 8px; + text-align: center; + font-size: 12px; + color:#999; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.notification p{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.notification h3{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: 6px; + margin-left: 12px; + font-size: 24px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + +.notification .flebox .time{ + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + margin-right: 12px; + text-align: right; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.notification a{ + overflow-wrap: break-word; + margin-top: 24px; + margin-bottom: auto; + margin-left: 12px; + font-size: 16px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +hr{ + height: 0; + margin-top: 12px; + margin-bottom: 12px; + padding: 0; + border: 0; + border-top: 1px solid #FFC832; +} + + +.search_btn{ + margin-top: 24px; + cursor: pointer; + border: none; + display: block; + width:20%; + padding: 8px auto; + margin-left: auto; + margin-right: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.search_btn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:21%; +} +.search_btn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:19%; +} + +.botbox{ + display: none; +} + +/*------------------------------------------------------------------------------------------------------------*/ +/*--------------------------------------------------スマホ向け--------------------------------------------------*/ +/*--------------------------------------------------ここから--------------------------------------------------*/ +/*------------------------------------------------------------------------------------------------------------*/ + +@media screen and (max-width:1010px) { + body{ + width: 100%; + display: block; + border: none; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + padding-top: 0px; + } + + .userleftbox{ + display: none; + } + + .userheader .icon{ + margin-left: 24px; + display: block; + width: auto; + } + + main{ + height: 88dvh; + overflow: auto; + border-radius: 0px; + margin-top: 0px; + margin-left: 0px; + margin-right: 0px; + width: auto; + background-color: #fff; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: none; + border-bottom: 1px solid #FFC832; + } + + main h1{ + color:#252525; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; + } + + .sendbox .fx img{ + object-fit: cover; + margin-left: -12px; + text-align: center; + width: 58px; + height:58px; + border-radius: 50%; + } + + .sendbox p{ + line-height:20px; + text-align: left; + margin-top: 12px; + margin-bottom: 12px; + font-size: 14px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + } + + .sendbox .fxbox{ + display: flex; + } + + .sendbox label > input { + display:none; /* アップロードボタンのスタイルを無効にする */ + } + + .sendbox label{ + width:10%; + padding: 8px auto; + margin-left: 6px; + margin-right: 6px; + padding-top: 6px; + padding-bottom: 6px; + } + .sendbox label:hover{ + width:11%; + } + .sendbox label:active{ + width:9%; + } + .sendbox label img{ + vertical-align:bottom; + width: 24px; + } + .sendbox .fxbox p{ + line-height:20px; + text-align: left; + margin-top: auto; + margin-bottom: auto; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + } + + .ueusebtn{ + width:30%; + } + .ueusebtn:hover{ + width:31%; + } + .ueusebtn:active{ + width:29%; + } + + .rightbox{ + display: none; + } + + .botbox{ + display: block; + } + + .botbox .lbtnzone{ + display: flex; + width: 90%; + margin-left: auto; + margin-right: auto; + } + + + .btmbutton{ + cursor: pointer; + border: none; + display: block; + width:28%; + margin: 16px; + padding: 8px auto; + height: auto; + margin-left: 12px; + margin-right: 12px; + + padding-top: 14px; + padding-bottom: 14px; + background-color: #FFFFFF; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; + } + .btmbutton:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:29%; + } + .btmbutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:27%; + } + + .ueuse .favbox .tuduki{ + + display: block; + width:26%; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 8px; + padding-bottom: 8px; + padding-left: 6px; + padding-right: 6px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 12px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + } + + .ueuse .favbox .tuduki:hover{ + background-color: #FFC832; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 8px; + padding-bottom: 8px; + padding-left: 6px; + padding-right: 6px; + + width:28%; + border-radius: 50px; + color:#FFFAE6; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + font-size: 12px; + text-decoration:none; + text-align: center; + } + + .ueuse .favbox .delbtn{ + cursor: pointer; + border: none; + display: block; + width:60px; + padding: 8px auto; + + margin-left: 6px; + margin-right: 0px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + + + background-color: #F5F5F5; + + border-radius: 50px; + color:#FF4848; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + + .ueuse .favbox .delbtn:hover{ + cursor: pointer; + border: none; + display: block; + width:60px; + padding: 8px auto; + + margin-left: 6px; + margin-right: 0px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + + + background-color: #FF4848; + + border-radius: 50px; + color: #f5f5f5;; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + + + + .ueuse .favbox .addabi{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: auto; + margin-right: 6px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + + .ueuse .favbox .addabi:hover{ + cursor: pointer; + border: none; + display: block; + width:auto; + + margin-left: auto; + margin-right: 6px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color: #FFFAE6;; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + + + .ueuse .favbox img{ + margin-left: 0px; + width: 24px; + } + + .leftbox{ + display: block; + border-radius: 17px; + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + margin-bottom: 12px; + background-color: #FFFFFF; + width: 18%; + height: 100%; + margin-left: 0px; + padding: 32px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; + } + + .leftbox h1{ + font-family: 'Zen Maru Gothic', sans-serif; + margin-left: 20px; + color:#fff; + font-size: 32px; + } + .leftbox .logo{ + display: flex; + } + + .leftbox .logo img{ + + margin-left: auto; + margin-right: auto; + margin-top: 16px; + width: 72%; + + + } + .leftbox .logo p{ + color:#FFC832; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; + } + + .imgbtn{ + width:40%; + } + .imgbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:35%; + } + .imgebtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; + } + + .imgbtn2{ + cursor: pointer; + border: none; + display: block; + width:20%; + padding: 8px auto; + margin-top: -64px; + margin-left: 12px; + margin-right: auto; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + .imgbtn2:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:19%; + } + .imgebtn2:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:21%; + } + + .topbox { + position: absolute; + + top: 0; + left: 0; + width: 90%; + margin-left: 0px; + margin-right: 0px; + height: 44px; + padding-top: 0.0%; + padding-bottom: 0.2%; + padding-left: 10%; + } + + .topbox .logo img{ + margin-left: 0px; + margin-right: auto; + margin-top: 2px; + width: 120px; + } + + .terms{ + overflow-wrap: break-word; + margin-left: auto; + margin-right: auto; + width: 90%; + margin-top: 64px; + margin-bottom: 64px; + background-color: #f7f7f7; + } + + .terms h1{ + line-height:52px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 48px; + text-align: left; + color: #252525; + } + + .terms h2{ + line-height:52px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 48px; + text-align: left; + color: #252525; + } + + .terms h3{ + line-height:36px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + text-align: left; + color: #252525; + } + + .terms h4{ + line-height:24px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 24px; + text-align: left; + color: #252525; + } + + .terms p{ + margin-top: 2px; + margin-bottom: 2px; + line-height:24px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #252525; + } + + .terms img{ + + object-fit: cover; + width: auto; + height: auto; + margin-top: 12px; + margin-bottom: 12px; + margin-left: auto; + margin-right: auto; + border-radius: 15px; + } + + .terms .code{ + background-color: #252525; + border-radius: 15px; + padding: 12px; + } + + .terms .code p{ + line-height:24px; + margin-right: 12px; + margin-left: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #FFFFFF; + } + + + .terms .p2c{ + margin-top: 0px; + margin-bottom: 10px; + text-align: left; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + } + + .terms .p3{ + margin-top: 24px; + text-align: left; + word-wrap: break-word; + line-height: 24px; + color: #252525; + font-size: 22px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + } + + .terms .err404 h1{ + margin-top: 128px; + line-height:64px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 64px; + text-align: center; + color: #252525; + } + + + .ueuse .photo1 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: auto; + border: 1px solid #EEE; + } + + .ueuse .photo2{ + display: flex; + } + + .ueuse .photo2 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 47%; + height: auto; + border: 1px solid #EEE; + } + + .ueuse .video1 video{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: auto; + border: 1px solid #EEE; + } + +} + +/*------------------------------------------------------------------------------------------------------------*/ +/*--------------------------------------------------ダークモード--------------------------------------------------*/ +/*--------------------------------------------------ここから--------------------------------------------------*/ +/*------------------------------------------------------------------------------------------------------------*/ + +@media (prefers-color-scheme: dark) { + + body{ + background-color: #0c0c0c; + } + .errmsg{ + background-color: #3a3333; + color:#ff4848; + border: 1px solid #FF4848; + } + .rolebox{ + background-color: #0c0c0c; + border: 1px solid #FFC832; + } + + .userleftbox{ + background-color: #181616; + border: none; + } + + .leftbutton{ + background-color: #181616; + color:#FFFAE6; + } + .leftbutton:hover{ + background-color: #FFFAE6; + color: #0c0c0c; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:75%; + } + .leftbutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:65%; + } + + main{ + background-color: #0c0c0c; + border: none; + } + + main h1{ + color:#FFFAE6; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; + } + + + .ueuse{ + background-color: #181616; + border: none; + } + .ueuse .flebox a{ + color:#FFFAE6; + } + + .ueuse .flebox .idbox{ + background-color: #302c2c; + border: none; + } + .ueuse .flebox .idbox a{ + color:#CCC; + } + + .ueuse p{ + color:#FFF; + } + + + .ueuse h1{ + color:#FFF; + } + + .ueuse h2{ + color:#FFF; + } + + .ueuse h3{ + color:#FFF; + } + + .ueuse center{ + color:#FFF; + } + + .ueuse a{ + color:#FFC832; + } + + .ueuse .flebox .time{ + color:#CCC; + } + + .ueuse .photo1 img{ + border: none; + } + + .ueuse .photo2{ + display: flex; + } + + .ueuse .photo2 img{ + border: none; + } + + .ueuse .video1 video{ + border: none; + } + + .ueuse .abi{ + background-color: #0c0c0c; + border: none; + } + + .ueuse .abi p{ + color:#FFFAE6; + } + + .ueuse .abi .back{ + background-color: #FFC832; + border: none; + } + + .ueuse .abi .back h1{ + color:#252525; + } + .ueuse .abi h3{ + color:#CCC; + } + .ueuse .favbox .favbtn{ + background-color: #0c0c0c; + color:#FFC832; + } + .ueuse .favbox .favbtn_after{ + background-color: #FFC832; + color:#FFFAE6; + } + .ueuse .favbox .tuduki{ + background-color: #0c0c0c; + color:#FFC832; + } + .ueuse .favbox .tuduki:hover{ + background-color: #FFC832; + color:#FFFAE6; + } + .ueuse .favbox .delbtn{ + background-color: #0c0c0c; + color:#FF4848; + } + .ueuse .favbox .delbtn:hover{ + background-color: #FF4848; + color: #f5f5f5;; + } + .ueuse .favbox .addabi{ + background-color: #0c0c0c; + color:#FFC832; + } + .ueuse .favbox .addabi:hover{ + background-color: #FFC832; + color: #FFFAE6;; + } + .ueuse hr{ + border-top: 1px solid #CCC; + } + + .userheader h2{ + color:#FFFAE6; + } + + .userheader p{ + color: #CCC; + } + + .userheader .profile p{ + color:#FFFAE6; + } + + .userheader .rolebox{ + background-color: #181616; + border: 1px solid #FFC832; + } + + .fzone .follow .fbtn{ + background-color: #FFC832; + color:#FFFAE6; + } + .fzone .follow .fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + } + + .fzone .follow .fbtn_no{ + background-color: #181616; + color:#FFC832; + border: 1px solid #FFC832; + } + .fzone .follow .fbtn_no:hover{ + background-color: #181616; + color: #FFC832; + } + .fzone .time p{ + color:#CCC; + } + .fzone .time a{ + color:#CCC; + } + .fzone .follow_yes{ + background-color: #181616; + } + .fzone .follow_yes p{ + color:#FFFAE6; + } + + + .rightbox{ + background-color: #0c0c0c; + border:none; + } + + .rightbox h1{ + color: #CCC; + } + + .rightbox .noticebox{ + background-color: #181616; + border: none; + } + + .rightbox .noticebox h4{ + color: #FFF; + } + + .rightbox .noticebox p{ + color: #FFF; + } + + .rightbox .noticebox .makeup p{ + color:#FFFAE6;; + } + + .rightbox .noticebox .makeup a{ + color:#FFC832; + } + .rightbox .noticebox .time p{ + color:#CCC; + } + .rightbox .btmbox h2{ + color: #CCC; + } + + .rightbox .btmbox h3{ + color: #CCC; + } + + .rightbox .btmbox p{ + color: #FFF; + } + + .rightbox .btmbox a{ + color:#FFC832; + } + + .sendbox{ + background-color: #181616; + border:none; + } + + .sendbox p{ + color: #FFF;; + } + + .sendbox textarea{ + background-color: #181616; + color:#CCC; + } + .sendbox .fxbox p{ + color:#FFFAE6; + } + + + .emjtex{ + background-color: #181616; + border: none; + } + + .emjtex h3{ + color:#FFF; + } + + .emjtex p{ + color:#CCC; + } + + .formarea{ + background-color: #181616; + } + + .formarea p{ + color:#CCC; + } + + + .modal-content { + background-color: #181616; + } + + .modal-content textarea{ + background-color: #181616; + color:#CCC; + } + .modal-content p{ + color:#CCC; + } + + .modal-content h1{ + color:#FFF; + } + + .modal-content .fbtn_no{ + background-color: #181616; + color:#FFC832; + border: 1px solid #FFC832; + } + .modal-content .fbtn_no:hover{ + background-color: #181616; + color: #FFC832; + } + + .inbox { + background: #0c0c0c; + color: #FFF; + border: none; + } + + .inbox::placeholder { + color: #999; + } + + .inbox:hover { + outline: none; + border: 1px solid #FFC832; + } + + .inbox:focus { + outline: none; + border: 1px solid #FFC832; + border-bottom: 3px solid #FFC832; + } + + .btmbutton{ + background-color: #FFC832; + color:#FFFAE6; + border: none; + } + .btmbutton:hover{ + background-color: #FFC832; + color: #FFFAE6; + } + + + .terms{ + background-color: #0c0c0c; + } + + .terms h1{ + color: #CCC; + } + + .terms h2{ + color: #FFF; + } + + .terms h3{ + color: #FFF; + } + + .terms h4{ + color: #FFF; + } + + .terms p{ + color: #FFF; + } + + .terms .code{ + background-color: #CCC; + } + + .terms .code p{ + color: #252525; + } + + .terms ul{ + color: #FFF; + } + + .terms .p2c{ + color: #CCC; + } + + .terms .p3{ + color: #FFF; + } + + .terms .err404 h1{ + color: #CCC; + } + + .terms .err404 p{ + color: #FFF; + } + + .notification{ + background-color: #181616; + border: none; + } + + .notification .flebox a{ + color:#CCC5; + } + + .notification p{ + color:#FFF; + } + + .notification h3{ + color:#CCC; + } + + + .notification .flebox .time{ + color:#CCC; + } + + .notification a{ + color:#FFC832; + } + .tokonone p{ + color:#CCC; + } +} \ No newline at end of file diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..1c95c43 --- /dev/null +++ b/css/style.css @@ -0,0 +1,855 @@ +@import url('https://fonts.googleapis.com/css2?family=BIZ+UDPGothic:wght@400;700&family=Josefin+Sans:ital,wght@1,700&family=Kosugi+Maru&family=Zen+Maru+Gothic:wght@500&display=swap'); + +body{ + display: flex; + border: none; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: 0px; + background-color: #FFFFFF; + /* 画像を常に天地左右の中央に配置 */ + background-position: center center; + + /* 画像をタイル状に繰り返し表示しない */ + background-repeat: no-repeat; + + /* コンテンツの高さが画像の高さより大きい時、動かないように固定 */ + background-attachment: fixed; + + /* 表示するコンテナの大きさに基づいて、背景画像を調整 */ + background-size: cover; +} + +.leftbox{ + margin-top: 0px; + margin-bottom: 0px; + background-color: #FFC832; + width: 35%; + height: 100%; + margin-left: 0px; + padding: 32px; +} + +.leftbox h1{ + margin-left: 20px; + color:#fff; + font-size: 2em; +} +.leftbox .logo{ + display: flex; +} + +.leftbox .logo img{ + + margin-left: 16px; + margin-top: 16px; + width: 200px; + +} +.leftbox .logo p{ + color:#fff; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; +} + +.leftbox2{ + margin-top: 0px; + margin-bottom: 0px; + background-color: #FFC832; + width: 35%; + height: 100vh; + margin-left: 0px; + padding: 32px; +} + +.leftbox2 h1{ + margin-left: 20px; + color:#fff; + font-size: 2em; +} +.leftbox2 .logo{ + display: flex; +} + +.leftbox2 .logo img{ + + margin-left: 16px; + margin-top: 16px; + width: 200px; + +} +.leftbox2 .logo p{ + color:#fff; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; +} + +.textbox{ + padding: 32px; + width: auto; + margin-left: 24px; + margin-right: 24px; + margin-top: 64px; + margin-bottom: 100px; + border-radius: 25px; + background-color: #fff; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); +} + +.textbox h1{ + word-wrap: break-word; + margin: 0px; + color: #FFC832; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; +} + +.textbox h2{ + word-wrap: break-word; + margin: 0px; + color: #252525; + text-align: center; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; +} + +.textbox h3{ + word-wrap: break-word; + margin: 0px; + color: #252525; + text-align: center; + font-size: 18px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; +} + +.textbox p{ + word-wrap: break-word; + line-height: 20px; + color: #252525; + font-size: 16px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .p2{ + margin-top: 0px; + margin-bottom: 10px; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .p2c{ + margin-top: 0px; + margin-bottom: 10px; + text-align: center; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .p3{ + margin-top: 24px; + text-align: center; + word-wrap: break-word; + line-height: 24px; + color: #252525; + font-size: 22px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.textbox .maillink{ + word-wrap: break-word; + line-height: 20px; + color: #4e4428; + text-decoration: none; + font-size: 16px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .cntzone{ + display: flex; + width: 100%; + padding: 0px; +} + +.textbox .cntzone .usercnt{ + margin-top: 24px; + margin-left: 12px; + margin-right: 12px; + width: 43%; + height: 5dvh; + border-radius: 15px; + background-color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + padding: 18px; +} + +.textbox .cntzone .usercnt .p1{ + display: block; + margin-top: 0px; + margin-bottom: 6px; + text-align: left; + word-wrap: break-word; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .cntzone .usercnt p{ + margin-top: 0px; + margin-bottom: 8px; + text-align: left; + word-wrap: break-word; + line-height: 24px; + color: #252525; + font-size: 20px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.btnbox{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 32px; + text-align: center; + margin-left: auto; + margin-right: auto; + +} + +label > input { + display:none; /* アップロードボタンのスタイルを無効にする */ +} + +.irobutton{ + cursor: pointer; + border: none; + display: block; + width:40%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + background-color: #FFC832; + + text-align: center; + border-radius: 50px; + color:#fff; + font-size: 22px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:45%; +} +.irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:35%; +} + +.sirobutton{ + cursor: pointer; + border: none; + display: block; + width:40%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + text-align: center; + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 22px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:45%; +} +.sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.formarea{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 64px; + text-align: left; + margin-left: auto; + margin-right: auto; +} + +.formarea .iconimg{ + margin-left: auto; + margin-right: auto; + text-align: center; +} + +.formarea .iconimg img{ + margin-left: auto; + margin-right: auto; + text-align: center; + width: 100px; + height:100px; + border-radius: 50%; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); +} + +.myarea{ + padding-top: 16px; + padding-bottom: 32px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 64px; + text-align: center; + margin-left: auto; + margin-right: auto; +} + +.myarea img{ + margin-left: auto; + margin-right: auto; + text-align: center; + width: 100px; + height:100px; + border-radius: 50%; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); +} + +.myarea p{ + margin-top: 32px; + margin-bottom: 10px; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.inbox { + width: 96%; + padding: 8px 10px; + border: none; + border-radius: 10px; + background: #fff; + font-family: 'Zen Maru Gothic', sans-serif; + color: rgb(32,32,32); + font-size: 1em; + line-height: 1.5; + white-space: nowrap; + box-shadow:0px 0px 25px rgba(0,0,0,0.05) inset; + box-shadow:0px 0px 25px rgba(0,0,0,0.07); + overflow-x: scroll; + overflow-y : scroll ; + transition: border 350ms ease-in-out; + transition: border-bottom 150ms ease-out; + border: 1px solid #f1f1f1; + } + +.inbox::placeholder { + color: #999; +} + +.inbox:hover { + outline: none; + border: 1px solid #FFC832; +} + +.inbox:focus { + outline: none; + border: 1px solid #FFC832; + border-bottom: 3px solid #FFC832; +} + + +.errmsg{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #ffebeb; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 64px; + text-align: left; + margin-left: auto; + margin-right: auto; + color:#ff4848; + font-family: 'BIZ UDPGothic', sans-serif; + word-wrap: break-word; + line-height: 20px; + border: 1px solid #FF4848; +} + +.flexbtn{ + display: flex; +} + +.flexbtn .irobutton{ + border: none; + display: block; + width:20%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + background-color: #FFC832; + + border-radius: 50px; + color:#fff; + font-size: 26px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.flexbtn.irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.flexbtn.irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.flexbtn.sirobutton{ + border: none; + display: block; + width:50%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 26px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.flexbtn.sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.flexbtn.sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} +.rolebox{ + + margin-top: 12px; + margin-bottom: 12px; + + margin-left: auto; + margin-right: auto; + + width: 120px; + padding-left: auto; + padding-right: auto; + + background-color: #fff; + border: 1px solid #FFC832; + + border-radius: 25px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + +} + +.rolebox p{ + + color:#FFC832; + margin-top: 2px; + margin-bottom: 2px; + margin-left: 10px; + margin-right: 10px; + + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + +} + + +.userleftbox{ + margin-top: 0px; + margin-bottom: 0px; + background-color: #FFC832; + width: 10%; + height: 100%; + margin-left: 0px; + padding: 32px; +} + +.userleftbox h1{ + font-family: 'Zen Maru Gothic', sans-serif; + margin-left: 20px; + color:#fff; + font-size: 32px; +} +.userleftbox .logo{ + display: flex; +} + +.userleftbox .logo img{ + + margin-left: 16px; + margin-top: 16px; + width: 72%; + +} +.userleftbox .logo p{ + color:#fff; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; +} + +.leftbutton{ + cursor: pointer; + border: none; + display: block; + width:70%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 20px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.leftbutton:hover{ + background-color: #FFFAE6; + color: #FFC832; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:75%; +} +.leftbutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:65%; +} + +main{ + border-radius: 25px; + margin-top: 24px; + margin-left: 24px; + margin-right: 24px; + width: 80%; + background-color: #fff; + padding: 24px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); +} + +main h1{ + color:#252525; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; +} + + +.btn_area{ + display: flex; + width: 100%; + margin-left: auto; + margin-right: auto; +} + +.fbtn{ + cursor: pointer; + border: none; + display: block; + width:50%; + padding: 8px auto; + + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + margin-bottom: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + text-align: center; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.fbtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +/*------------------------------------------------------------------------------------------------------------*/ +/*--------------------------------------------------スマホ向け--------------------------------------------------*/ +/*--------------------------------------------------ここから--------------------------------------------------*/ +/*------------------------------------------------------------------------------------------------------------*/ + +@media screen and (max-width:1010px) { + + body{ + backdrop-filter: blur(10px); + } + + .leftbox{ + margin-top: 0px; + margin-bottom: 0px; + background-color: transparent; + width: 100%; + height: 100%; + margin-left: 0px; + padding: 16px; + } + + .leftbox h1{ + margin-left: 20px; + color:#fff; + font-size: 2em; + } + .leftbox .logo{ + display: flex; + background-color: #FFC832; + border-radius: 15px; + } + + .leftbox .logo img{ + + margin-left: 16px; + margin-top: 16px; + width: 200px; + + } + .leftbox .logo p{ + color:#fff; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; + } + + + .textbox{ + padding: 32px; + width: auto; + margin-left: 0px; + margin-right: 0px; + margin-top: 64px; + margin-bottom: 8px; + border-radius: 25px; + background-color: #fff; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + } + + .textbox h1{ + word-wrap: break-word; + margin: 0px; + color: #FFC832; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; + } + + + .btnbox{ + padding-top: 12px; + padding-bottom: 12px; + padding-left: 12px; + padding-right: 12px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 32px; + text-align: center; + margin-left: auto; + margin-right: auto; + + } + + .irobutton{ + width:60%; + } + .irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:65%; + } + .irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:55%; + } + + .sirobutton{ + width:60%; + } + .sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:65%; + } + .sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:55%; + } + + + .btn_area{ + display: block; + width: 100%; + margin-left: auto; + margin-right: auto; + } + + .fbtn{ + cursor: pointer; + border: none; + display: block; + width:50%; + padding: 8px auto; + + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + margin-bottom: 0px; + + padding-top: 12px; + padding-bottom: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + text-align: center; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + .fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; + } + .fbtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; + } + + .leftbox2{ + margin-top: 0px; + margin-bottom: 0px; + background-color: #FFC832; + width: 100%; + height: 100vh; + margin-left: 0px; + padding: 32px; + } +} \ No newline at end of file diff --git a/db.php b/db.php new file mode 100644 index 0000000..bdb383b --- /dev/null +++ b/db.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/delete/delete.php b/delete/delete.php new file mode 100644 index 0000000..99bb555 --- /dev/null +++ b/delete/delete.php @@ -0,0 +1,27 @@ +prepare("DELETE FROM ueuse WHERE uniqid = :uniqid"); + $deleteQuery->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); + $res = $deleteQuery->execute(); + + if ($res) { + echo json_encode(['success' => true]); + exit; + } else { + echo json_encode(['success' => false, 'error' => '削除に失敗しました。']); + exit; + } + } catch(PDOException $e) { + echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); + exit; + } +} +?> diff --git a/emoji/addemoji.php b/emoji/addemoji.php new file mode 100644 index 0000000..8d347e8 --- /dev/null +++ b/emoji/addemoji.php @@ -0,0 +1,360 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if(!($res["admin"] === "yes")){ + header("Location: ../login.php"); + exit; +} + +if( !empty($pdo) ) { + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $dbh->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $userid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + $role = $userData["role"]; + + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + $rerole = $dbh->prepare("SELECT username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime FROM account WHERE userid = :userid"); + + $rerole->bindValue(':userid', $userid); + // SQL実行 + $rerole->execute(); + + $userdata = $rerole->fetch(); // ここでデータベースから取得した値を $role に代入する + + +} + + + +if( !empty($_POST['btn_submit']) ) { + $emojiname = $_POST['emojiname']; + $emojiinfo = $_POST['emojiinfo']; + + if (!empty($_FILES['image']['name'])) { + $img = $_FILES['image']; + }else{ + $error_message[] = '画像を選択してください~'; + } + + + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM emoji WHERE emojiname = :emojiname limit 1'); + + $query->execute(array(':emojiname' => $emojiname)); + + $result = $query->fetch(); + + // IDの入力チェック + if( empty($emojiname) ) { + $error_message[] = '絵文字IDを入力してください!'; + } else { + + // 文字数を確認 + if( 20 < mb_strlen($emojiname, 'UTF-8') ) { + $error_message[] = 'IDは20文字以内で入力してください。'; + } + + if($result > 0){ + $error_message[] = 'このID('.$emojiname.')は既に使用されています。他のIDを作成してください。'; //このE-mailは既に使用されています。 + } + + } + + if( empty($error_message) ) { + + // 書き込み日時を取得 + $datetime = date("Y-m-d H:i:s"); + + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO emoji (emojifile, emojitype, emojicontent, emojisize, emojiname, emojiinfo, emojidate) VALUES ( :emojifile, :emojitype, :emojicontent, :emojisize, :emojiname, :emojiinfo, :emojidate)"); + + + + $name = $img['name']; + $type = $img['type']; + $content = file_get_contents($img['tmp_name']); + $size = $img['size']; + + $stmt->bindValue(':emojifile', $name, PDO::PARAM_STR); + $stmt->bindValue(':emojitype', $type, PDO::PARAM_STR); + $stmt->bindValue(':emojicontent', $content, PDO::PARAM_STR); + $stmt->bindValue(':emojisize', $size, PDO::PARAM_INT); + + // 値をセット + $stmt->bindParam( ':emojiname', $emojiname, PDO::PARAM_STR); + $stmt->bindParam( ':emojiinfo', $emojiinfo, PDO::PARAM_STR); + + $stmt->bindParam( ':emojidate', $datetime, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch(Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if( $res ) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '登録に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + + + } + +} + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + +絵文字登録 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ + + + +

絵文字登録

+ +

絵文字登録です。

+ +
+ + +
+ + +
+

EmojiID

+ +
+ +
+

この絵文字について

+ +
+ +
+ + +
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/emoji/emojiimage.php b/emoji/emojiimage.php new file mode 100644 index 0000000..97b2eab --- /dev/null +++ b/emoji/emojiimage.php @@ -0,0 +1,75 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false +); +$pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + +//$row['userid'] = "daichimarukn"; + +$emojiname = $_GET['emoji']; + + +$options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, +); + +if( empty($emojiname) ) { + $filePath = 'img/deficon/icon.png'; + $data = file_get_contents($filePath); + header('Content-type: image/png'); + //データを出力 + echo $data; + exit(); +}else{ + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT emojiname, emojicontent, emojitype, emojisize profile FROM emoji WHERE emojiname = :emojiname"); + + $result->bindValue(':emojiname', $emojiname); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + + + header('Content-type: ' . $row['emojitype']); + echo $row['emojicontent']; + exit(); +} +?> \ No newline at end of file diff --git a/emoji/index.php b/emoji/index.php new file mode 100644 index 0000000..2ec10e7 --- /dev/null +++ b/emoji/index.php @@ -0,0 +1,197 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if (!empty($pdo)) { + $sql = "SELECT emojiname,emojiinfo,emojidate FROM emoji ORDER BY emojidate DESC"; + $message_array = $pdo->query($sql); + + while ($row = $message_array->fetch(PDO::FETCH_ASSOC)) { + + $messages[] = $row; + } +} + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + +絵文字一覧 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ +
    + +

    + +
+ + +
+
+

絵文字一覧

+
+ '; + echo '
'; + echo ''; + echo '

:'.$value["emojiname"].':

'; + echo '
'; + echo '

'.$value["emojiinfo"].'

'; + echo '
'; + } + }else{ + echo '

カスタム絵文字がありません

'; + } + ?> +
+ +
+ +
+ + + + + + + \ No newline at end of file diff --git a/errorpage/400.php b/errorpage/400.php new file mode 100644 index 0000000..b34f638 --- /dev/null +++ b/errorpage/400.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +400 Bad Request - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

400 Bad Request

+

<(_ _)>
はいっ!エラーです!!!
原因はわかりません!!!!!!!!

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/401.php b/errorpage/401.php new file mode 100644 index 0000000..bd0de6f --- /dev/null +++ b/errorpage/401.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +401 Unauthorized - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

401 Unauthorized

+

...(* ̄0 ̄)ノ< アクセス権が無いようです()
サービス管理者によってアクセス権の変更をされた可能性がございます。

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/403.php b/errorpage/403.php new file mode 100644 index 0000000..d5d34ff --- /dev/null +++ b/errorpage/403.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +403 Forbidden - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

403 Forbidden

+

...(* ̄0 ̄)ノ< 閲覧権限が無いようです()
サービス管理者によって閲覧権限の変更をされた可能性がございます。

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/404.php b/errorpage/404.php new file mode 100644 index 0000000..5e952e8 --- /dev/null +++ b/errorpage/404.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +404 Not found - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

404 Not found

+

申し訳ございませんがお探しのページは見つかりませんでした!
ページの移動や削除が行われた可能性がございます。

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/500.php b/errorpage/500.php new file mode 100644 index 0000000..0ac413d --- /dev/null +++ b/errorpage/500.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +500 Internal Server Error - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

500 Internal Server Error

+

\(^o^)/
サーバーオワタ☆

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/503.php b/errorpage/503.php new file mode 100644 index 0000000..bd467d8 --- /dev/null +++ b/errorpage/503.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +503 Service Unavailable - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

503 Service Unavailable

+

(´。_。`;)< サーバーに過負荷がかかっているようです...
時間をおいてから再度アクセスしてください!

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/serverstop.php b/errorpage/serverstop.php new file mode 100644 index 0000000..0a2327f --- /dev/null +++ b/errorpage/serverstop.php @@ -0,0 +1,89 @@ + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$sterms = explode("\n", $termsdata); +$htmltext = ''; // 初期化 + +foreach ($sterms as $terms) { + $markdowntext = $terms; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + + + +サーバー停止 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ +
+ +
+ +
+
+
+

サーバー停止中

+

(/´・ヮ・`\)
現在サーバーが管理者によって停止されています...
停止の理由は以下の通りです。

+ +
+

+ + +
+ +
+ + + + + \ No newline at end of file diff --git a/favicon/apple-touch-icon-180x180.png b/favicon/apple-touch-icon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a71703a27630696dd57cddfa4da8d2cfc90cca GIT binary patch literal 1905 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 literal 0 HcmV?d00001 diff --git a/favorite/favorite.php b/favorite/favorite.php new file mode 100644 index 0000000..0882645 --- /dev/null +++ b/favorite/favorite.php @@ -0,0 +1,57 @@ +prepare("SELECT favorite FROM ueuse WHERE uniqid = :uniqid"); + $stmt->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); + $stmt->execute(); + $post = $stmt->fetch(PDO::FETCH_ASSOC); + + if ($post) { + $favoriteList = explode(',', $post['favorite']); + $index = array_search($userId, $favoriteList); + + if ($index === false) { + // ユーザーIDを追加 + $favoriteList[] = $userId; + } else { + // ユーザーIDを削除 + array_splice($favoriteList, $index, 1); + } + + // 新しいいいね情報を更新 + $newFavorite = implode(',', $favoriteList); + $updateQuery = $pdo->prepare("UPDATE ueuse SET favorite = :favorite WHERE uniqid = :uniqid"); + $updateQuery->bindValue(':favorite', $newFavorite, PDO::PARAM_STR); + $updateQuery->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); + $res = $updateQuery->execute(); + + if ($res) { + echo json_encode(['success' => true, 'newFavorite' => $newFavorite]); + exit; + } else { + echo json_encode(['success' => false, 'error' => 'いいねの更新に失敗しました。']); + exit; + } + + + } else { + echo json_encode(['success' => false, 'error' => '投稿が見つかりません。']); + exit; + } + } catch(PDOException $e) { + echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); + exit; + } +} else { + echo json_encode(['success' => false, 'error' => '必要なパラメータが提供されていません。']); + exit; +} +?> diff --git a/home/index.php b/home/index.php new file mode 100644 index 0000000..793a49f --- /dev/null +++ b/home/index.php @@ -0,0 +1,612 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +//------------------------------------------- + +if( !empty($_POST['btn_submit']) ) { + + $ueuse = $_POST['ueuse']; + + // メッセージの入力チェック + if( empty($ueuse) ) { + $error_message[] = '内容を入力してください。'; + } else { + // 文字数を確認 + if( 1024 < mb_strlen($ueuse, 'UTF-8') ) { + $error_message[] = '内容は1024文字以内で入力してください。'; + } + } + + + if (empty($_FILES['upload_images']['name'])) { + $photo1 = "none"; + } else { + // アップロードされたファイル情報 + $uploadedFile = $_FILES['upload_images']; + + // アップロードされたファイルの拡張子を取得 + $extension = pathinfo($uploadedFile['name'], PATHINFO_EXTENSION); + + // 新しいファイル名を生成(uniqid + 拡張子) + $newFilename = uniqid() . '-'.$userid.'.' . $extension; + + // 保存先のパスを生成 + $uploadedPath = '../ueuseimages/' . $newFilename; + + // ファイルを移動 + $result = move_uploaded_file($uploadedFile['tmp_name'], $uploadedPath); + + if ($result) { + $photo1 = $uploadedPath; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!(1)エラーコード:' . $uploadedFile['error'].'
'.var_dump($_FILES['upload_images']); + } + } + + if (empty($_FILES['upload_images2']['name'])) { + $photo2 = "none"; + } else { + + if (empty($_FILES['upload_images']['name'])){ + $error_message[] = '画像1から画像を選択してください!!!'; + } + // アップロードされたファイル情報 + $uploadedFile2 = $_FILES['upload_images2']; + + if( 10000000 < $uploadedFile2["size"] ) { + $error_message[] = 'ファイルサイズが大きすぎます!'; + } + // アップロードされたファイルの拡張子を取得 + $extension2 = pathinfo($uploadedFile2['name'], PATHINFO_EXTENSION); + + // 新しいファイル名を生成(uniqid + 拡張子) + $newFilename2 = uniqid() . '-'.$userid.'.' . $extension2; + + // 保存先のパスを生成 + $uploadedPath2 = '../ueuseimages/' . $newFilename2; + + // ファイルを移動 + $result2 = move_uploaded_file($uploadedFile2['tmp_name'], $uploadedPath2); + + if ($result2) { + $photo2 = $uploadedPath2; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!(2)エラーコード:' . $uploadedFile2['error'].'
'.var_dump($_FILES['upload_images']); + } + } + + if (empty($_FILES['upload_videos1']['name'])) { + $video1 = "none"; + } else { + // アップロードされたファイル情報 + $uploadedFile3 = $_FILES['upload_videos1']; + + // アップロードされたファイルの拡張子を取得 + $extension3 = strtolower(pathinfo($uploadedFile3['name'], PATHINFO_EXTENSION)); // 小文字に変換 + + // サポートされている動画フォーマットの拡張子を配列で定義 + $supportedExtensions = array("mp4", "avi", "mov", "webm"); + + if (in_array($extension3, $supportedExtensions)) { + // 正しい拡張子の場合、新しいファイル名を生成 + $newFilename3 = uniqid() . '-'.$userid.'.' . $extension3; + // 保存先のパスを生成 + $uploadedPath3 = '../ueusevideos/' . $newFilename3; + + // ファイルを移動 + $result3 = move_uploaded_file($uploadedFile3['tmp_name'], $uploadedPath3); + + if ($result3) { + $video1 = $uploadedPath3; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!エラーコード:' . $uploadedFile3['error']; + } + } else { + $error_message[] = '対応していないファイル形式です!'; + } + + + } + + if( empty($error_message) ) { + + // 書き込み日時を取得 + $datetime = date("Y-m-d H:i:s"); + $uniqid = createUniqId(); + $abi = "none"; + + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, ueuse, photo1, photo2, video1, datetime, abi) VALUES (:username, :account, :uniqid, :ueuse, :photo1, :photo2, :video1, :datetime, :abi)"); + + $stmt->bindParam(':username', $username, PDO::PARAM_STR); + $stmt->bindParam(':account', $userid, PDO::PARAM_STR); + $stmt->bindParam(':uniqid', $uniqid, PDO::PARAM_STR); + $stmt->bindParam(':ueuse', $ueuse, PDO::PARAM_STR); + + $stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR); + $stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR); + $stmt->bindParam(':video1', $video1, PDO::PARAM_STR); + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + $stmt->bindParam(':abi', $abi, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch(Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if( $res ) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = $e->getMessage(); + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + + + + +ホーム - <?php echo file_get_contents($servernamefile);?> + + + + + + + +
+ + +
    + +

    + +
+ +
+
+ +

画像のEXIF情報(位置情報など)は削除されません。
情報漏洩に気をつけてくださいね…

+
+ + + + + +
+
+
+ + +
+
+ + +
+
+ + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/home/tlimage.php b/home/tlimage.php new file mode 100644 index 0000000..91effa2 --- /dev/null +++ b/home/tlimage.php @@ -0,0 +1,78 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false +); +$pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + +//$row['userid'] = "daichimarukn"; + +$userid = $_GET['account']; + + +$options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, +); + +if( empty($userid) ) { + $filePath = 'img/deficon/icon.png'; + $data = file_get_contents($filePath); + header('Content-type: image/png'); + //データを出力 + echo $data; + exit(); +}else{ + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT iconname, iconcontent, icontype, iconsize profile FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + + + header('Content-type: ' . $row['icontype']); + echo $row['iconcontent']; + exit(); +} \ No newline at end of file diff --git a/image.php b/image.php new file mode 100644 index 0000000..c6e3564 --- /dev/null +++ b/image.php @@ -0,0 +1,77 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false +); +$pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + +//$row['userid'] = "daichimarukn"; + +$userid = $_SESSION['userid']; + + +$options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, +); + +if( empty($userid) ) { + $filePath = 'img/deficon/icon.png'; + $data = file_get_contents($filePath); + header('Content-type: image/png'); + //データを出力 + echo $data; + exit(); +}else{ + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT iconname, iconcontent, icontype, iconsize profile FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + + + header('Content-type: ' . $row['icontype']); + echo $row['iconcontent']; + exit(); +} \ No newline at end of file diff --git a/img/defhead/head.png b/img/defhead/head.png new file mode 100644 index 0000000000000000000000000000000000000000..2f65be74729c98006de1ace8ff16019901548092 GIT binary patch literal 8502 zcmeI0KTASk6vm%>H8oQMX_5#V9o<^5-0ab8-@dOlmq0?5Zv*ap%LNM2-ot_&C569#Y6 zuGcVMo&Iu?90rX5SiBzXZVxy=97nwgP*~dVzD6Gdp!^+&LFb{rSyw$Ex14UTdzGuV zZ;UWtAO{fc@9Dw0+dB?odQ<3O$` zg(e1aWH~Z1kR!{HiGk!mazG3u2Wp@h29g8G0WpvqNDhdB9QZ$p*?s@){rT^crx0H@!+GuIaSu0`q~HJm literal 0 HcmV?d00001 diff --git a/img/deficon/head.png b/img/deficon/head.png new file mode 100644 index 0000000000000000000000000000000000000000..2f65be74729c98006de1ace8ff16019901548092 GIT binary patch literal 8502 zcmeI0KTASk6vm%>H8oQMX_5#V9o<^5-0ab8-@dOlmq0?5Zv*ap%LNM2-ot_&C569#Y6 zuGcVMo&Iu?90rX5SiBzXZVxy=97nwgP*~dVzD6Gdp!^+&LFb{rSyw$Ex14UTdzGuV zZ;UWtAO{fc@9Dw0+dB?odQ<3O$` zg(e1aWH~Z1kR!{HiGk!mazG3u2Wp@h29g8G0WpvqNDhdB9QZ$p*?s@){rT^crx0H@!+GuIaSu0`q~HJm literal 0 HcmV?d00001 diff --git a/img/deficon/icon.png b/img/deficon/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f92134699968260f82be8a8d3e0ffc4ace46e11d GIT binary patch literal 123586 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

6PaNWs7UggjETx% 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 + + + + + + + + + + diff --git a/img/sysimage/favorite_1.svg b/img/sysimage/favorite_1.svg new file mode 100644 index 0000000..17aea16 --- /dev/null +++ b/img/sysimage/favorite_1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/sysimage/favorite_2.svg b/img/sysimage/favorite_2.svg new file mode 100644 index 0000000..04c6a67 --- /dev/null +++ b/img/sysimage/favorite_2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/sysimage/image_1.svg b/img/sysimage/image_1.svg new file mode 100644 index 0000000..3dd8f5a --- /dev/null +++ b/img/sysimage/image_1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/sysimage/video_1.svg b/img/sysimage/video_1.svg new file mode 100644 index 0000000..1d9d64f --- /dev/null +++ b/img/sysimage/video_1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/titleimg/0.png b/img/titleimg/0.png new file mode 100644 index 0000000000000000000000000000000000000000..b1ccf4b2fb3a47c27e3babbfe3c20e09a8fd00ba GIT binary patch literal 54406 zcmZ5oby$>H)E{60S4BiRgcTNP5S0=TR0fm~X#@#Hr39o)O4p#*l~7s`#sP*@NwR63o69?Wpg{Gv=YRb!%lYVQZ@u-s zcOPp+Cuwg6acCEPvHs_86zxORVAPe%!GB&u&3{{%TbTQHwdIWR@!6aXcdz1v>AaS~ zE{oRH9IHhITfdT=ifm^c(xU&cL6Q2^-+&s`_?H}!T8qyNs@Z!MqwU7gC}WKNo)r0C z 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

pz?C}HE`*_&0;F6cX2H{? zYv@*5ULF)78VS`)_^x_F?VeF?r3G3Uyqe|>2W~ifi=3(sV*Y*IiGrCop`8RYsA^oy zQaFX)cbPs2TK{We!G<_tv?_3+yfYcw|0&08FB0JOIW!SC=0YaE+W@#D2-m){# zIUlg{kXAhbO>X%&75f0|S6vC(tpkuOkb&jt}EU(luHT@9Vx&`n5o3w9{ks;`fM`YGM~8?K(+47Lk20 z4r#s4WzbM0$TiOe5|N9A5fZLdO}GusDWx2R_m4^6^P;Zkww{knTErhw*+9T$(?U0P z>wlE3jf#_fe7u9zq&L=4{5`jW=5EYv^jILtYm1Y6JqGJuJB8>-c$h_+#9K`uYI~WU z1#6Q-$De!*IM9vm?A-n?fqnX;#Yz9!$R@ael<^K`*Gt#J%$@e%*++XS&a3&^W%yH( z`8Y{fpx??f4=pM+UhNwL;>`<|Y$D~Ic+d(xP+D`5T$^+d+0!@aI%}TD+@$C6VPwWo zrk7a2cP%#Ed=4$ei<-&c93MGC`kI^!_n;SpQe&?SjxmCV_2LYpH)wTN*Cc4(-TxmS du%6vll_Hm4R~2aHriL``sOj7)yJ7j){{uj}oT~r; literal 0 HcmV?d00001 diff --git a/img/titleimg/1.png b/img/titleimg/1.png new file mode 100644 index 0000000000000000000000000000000000000000..134f1640375052c9d48dc51d96ff608c1dab1ada GIT binary patch literal 64541 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 z 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 literal 0 HcmV?d00001 diff --git a/img/uwuzucolorlogo.svg b/img/uwuzucolorlogo.svg new file mode 100644 index 0000000..e2f3880 --- /dev/null +++ b/img/uwuzucolorlogo.svg @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/uwuzulogo.svg b/img/uwuzulogo.svg new file mode 100644 index 0000000..e9cd4cb --- /dev/null +++ b/img/uwuzulogo.svg @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/index.php b/index.php new file mode 100644 index 0000000..f0a9172 --- /dev/null +++ b/index.php @@ -0,0 +1,145 @@ + + + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + $stmt = $pdo->prepare("SELECT COUNT(userid) FROM account"); + $stmt->execute(); + $count2 = $stmt->fetchColumn(); + + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); +$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); + +$result = $mysqli->query("SELECT userid FROM account ORDER BY datetime"); + +/* 結果セットの行数を取得します */ +$count1 = $result->num_rows; + +$result2 = $mysqli->query("SELECT uniqid FROM ueuse ORDER BY datetime"); + +/* 結果セットの行数を取得します */ +$count2 = $result2->num_rows; + +?> + + + + + + + + + + +<?php echo file_get_contents($servernamefile);?> + + + + + + + + + +

+ + + + \ No newline at end of file diff --git a/js/back.js b/js/back.js new file mode 100644 index 0000000..2cfab3f --- /dev/null +++ b/js/back.js @@ -0,0 +1,6 @@ + +window.onload = function(){ +var ele = document.getElementsByTagName("body")[0]; +var n = Math.floor(Math.random() * 3); // 3枚の画像がある場合 +ele.style.backgroundImage = "url(img/titleimg/"+n+".png)"; +} diff --git a/login.php b/login.php new file mode 100644 index 0000000..99f46c1 --- /dev/null +++ b/login.php @@ -0,0 +1,205 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if( !empty($_POST['btn_submit']) ) { + + + //$row['userid'] = "daichimarukn"; + + $userid = $_POST['userid']; + $password = $_POST['password']; + + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT userid, password, loginid FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + + // ... (前略) + // IDの入力チェック + if( empty($userid) ) { + $error_message[] = 'ユーザーIDを入力してください。'; + } else { + + if( empty($password) ) { + $error_message[] = 'パスワードを入力してください。'; + } else { + + if($result->rowCount() > 0) { + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + if($row["userid"] == $userid){ + if(password_verify($password,$row["password"])){ + $_SESSION['admin_login'] = true; + + $_SESSION['userid'] = $userid; + $_SESSION['loginid'] = $row["loginid"]; + // リダイレクト先のURLへ転送する + $url = 'check.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; + } + else{ + $error_message[] = 'IDまたはパスワードが違います'; + } + }else{ + $error_message[] = 'IDまたはパスワードが違います'; + } + } + else { + $error_message[] = 'IDまたはパスワードが違います'; + } + } + + } + + // ... (後略) + + + +} + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +ログイン - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
+

ログイン

+ +

IDとパスワードを入力してください!

+ + +
    + +

    + +
+ + +
+ +
+ + +
+ + + +
+ + +
+ + +
+ +
+ 戻る +
+
+
+ + + + + + + \ No newline at end of file diff --git a/manifest/icon-512x512.png b/manifest/icon-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..1b19c276d418466e964e32c1b8beaa8c1d506384 GIT binary patch literal 5221 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 literal 0 HcmV?d00001 diff --git a/manifest/manifest.json b/manifest/manifest.json new file mode 100644 index 0000000..cd71091 --- /dev/null +++ b/manifest/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "uwuzu", + "name": "uwuzu", + "theme_color": "#FFC832", + "background_color": "#FFC832", + "display": "standalone", + "start_url": "../index.php", + "icons": [ + { + "src": "icon-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} \ No newline at end of file diff --git a/new.php b/new.php new file mode 100644 index 0000000..382078e --- /dev/null +++ b/new.php @@ -0,0 +1,498 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if( !empty($_POST['btn_submit']) ) { + + + //$row['userid'] = "daichimarukn"; + + // 空白除去 + $username = $_POST['username']; + $userid = $_POST['userid']; + + $password = $_POST['password']; + $chkpass = $_POST['chkpass']; + $mailadds = $_POST['mailadds']; + + $profile = $_POST['profile']; + + + //cookieに保存 + setcookie("username",$username,time()+60*60*24*14); + setcookie("userid",$userid,time()+60*60*24*14); + + setcookie("password",$password,time()+60*60*24*14); + setcookie("mailadds",$mailadds,time()+60*60*24*14); + + setcookie("profile",$profile,time()+60*60*24*14); + + if (!empty($_FILES['image']['name'])) { + $img = $_FILES['image']; + }else{ + $localFilePath = 'img/deficon/icon.png'; + $img = [ + 'name' => 'deficon.png', + 'type' => 'image/png', // 仮の Content-Type を指定(必要に応じて適切なものに変更してください) + 'tmp_name' => $localFilePath, + 'error' => 0, + 'size' => filesize($localFilePath) + ]; + } + + $localFilePathhead = 'img/defhead/head.png'; + $headimg = [ + 'name' => 'defhead.png', + 'type' => 'image/png', // 仮の Content-Type を指定(必要に応じて適切なものに変更してください) + 'tmp_name' => $localFilePathhead, + 'error' => 0, + 'size' => filesize($localFilePathhead) + ]; + + + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); + + $query->execute(array(':userid' => $userid)); + + $result = $query->fetch(); + + + // ユーザーネームの入力チェック + if( empty($username) ) { + $error_message[] = '表示名を入力してください。'; + } else { + // 文字数を確認 + if( 25 < mb_strlen($username, 'UTF-8') ) { + $error_message[] = 'ユーザーネームは25文字以内で入力してください。'; + } + } + + // IDの入力チェック + if( empty($userid) ) { + $error_message[] = 'ユーザーIDを入力してください。'; + } else { + + // 文字数を確認 + if( 20 < mb_strlen($userid, 'UTF-8') ) { + $error_message[] = 'IDは20文字以内で入力してください。'; + } + + if($userid === 'uwuzu_official'){ + $error_message[] = 'そのIDは登録禁止になっています。'; + } + + if($result > 0){ + $error_message[] = 'このID('.$userid.')は既に使用されています。他のIDを作成してください。'; //このE-mailは既に使用されています。 + } + + } + + // パスワードの入力チェック + if( empty($password) ) { + $error_message[] = 'パスワードを入力してください。'; + } else { + + $weakPasswords = array( + "password", + "123456", + "123456789", + "12345", + "12345678", + "123123", + "1234567890", + "1234567", + "1q2w3e", + "qwerty123", + "aa12345678", + "password1", + "1234", + "qwertyuiop", + "123321", + "12321", + "qwertyui", + "abcd1234", + "zaq12wsx", + "1q2w3e4r", + "qwer1234", + "sakura", + "asdf1234", + "asdfghjkl", + "asdfghjk", + "member", + "1qaz2wsx", + "doraemon", + "makoto", + "takeshi", + "machi1", + "machida", + "machida1", + "tokyo", + "arashi", + "dropbox", + "twitter", + "elonmusk", + "xcorp", + "1234qwer", + "japan", + "nippon", + "tukareta", + "tweet", + "discord", + "misskey", + "qwerty", + "123456789", + "abc123", + "password123", + "admin", + "letmein", + "iloveyou", + "111111", + "12345678910", + "user", + "root", + "system", + // 他にも弱いパスワードを追加できます + ); + + function isWeakPassword($passwords) { + global $weakPasswords; + return in_array($passwords, $weakPasswords); + } + + // テスト用のパスワード(実際にはユーザー入力などから取得することになります。 + + if (isWeakPassword($password)) { + $error_message[] = "パスワードが弱いです。セキュリティ上変更してください。"; + } else { + + } + + if ($chkpass == $password ){ + + }else{ + $error_message[] = '確認用パスワードが違います。'; + } + + if( 4 > mb_strlen($password, 'UTF-8') ) { + $error_message[] = 'パスワードは4文字以上である必要があります。'; + } + + // 文字数を確認 + if( 100 < mb_strlen($password, 'UTF-8') ) { + $error_message[] = 'パスワードは100文字以内で入力してください。'; + } + } + + if( empty($error_message) ) { + // トランザクション開始 + $pdo->beginTransaction(); + $datetime = date("Y-m-d H:i:s"); + + try { + + $role = "user"; + $admin = "none"; + $hashpassword = password_hash($password, PASSWORD_DEFAULT); + $loginid = sha1(uniqid(mt_rand(), true)); + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO account (username, userid, password, loginid, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime, admin) VALUES (:username, :userid, :password, :loginid, :mailadds, :profile, :iconname, :iconcontent, :icontype, :iconsize, :headname, :headcontent, :headtype, :headsize, :role, :datetime, :admin )"); + + $iconName = $img['name']; + $iconType = $img['type']; + $iconContent = file_get_contents($img['tmp_name']); + $iconSize = $img['size']; + + // アイコン画像のバインド + $stmt->bindValue(':iconname', $iconName, PDO::PARAM_STR); + $stmt->bindValue(':icontype', $iconType, PDO::PARAM_STR); + $stmt->bindValue(':iconcontent', $iconContent, PDO::PARAM_STR); + $stmt->bindValue(':iconsize', $iconSize, PDO::PARAM_INT); + + // ヘッダー画像関連の処理 + $headName = $headimg['name']; + $headType = $headimg['type']; + $headContent = file_get_contents($headimg['tmp_name']); + $headSize = $headimg['size']; + + // ヘッダー画像のバインド + $stmt->bindValue(':headname', $headName, PDO::PARAM_STR); + $stmt->bindValue(':headtype', $headType, PDO::PARAM_STR); + $stmt->bindValue(':headcontent', $headContent, PDO::PARAM_STR); + $stmt->bindValue(':headsize', $headSize, PDO::PARAM_INT); + + // 他の値をセット + $stmt->bindParam(':username', $username, PDO::PARAM_STR); + $stmt->bindParam(':userid', $userid, PDO::PARAM_STR); + $stmt->bindParam(':password', $hashpassword, PDO::PARAM_STR); + $stmt->bindParam(':loginid', $loginid, PDO::PARAM_STR); + $stmt->bindParam(':mailadds', $mailadds, PDO::PARAM_STR); + $stmt->bindParam(':profile', $profile, PDO::PARAM_STR); + $stmt->bindParam(':role', $role, PDO::PARAM_STR); + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + $stmt->bindParam(':admin', $admin, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + // リダイレクト先のURLへ転送する + $url = 'success.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; + } else { + $error_message[] = '登録に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +アカウント登録 - <?php echo file_get_contents($servernamefile);?> + + + + + + + +
+ + +
+

アカウント登録

+ +

アカウント登録です。

+

必須項目には「*」があります。 + + +

    + +

    + +
+ + +
+ +
+
+ +
+ +
+ + + + +
+

ユーザーネーム *

+
プロフィールページに掲載され公開されます。
※サービス管理者が確認できます。
+ +
+
+

ユーザーID *

+
後から変更はできません。
プロフィールページに掲載され公開されます。
※サービス管理者が確認できます。
+ +
+ +
+

パスワード *

+
ログイン時に必要となります。
※サービス管理者が確認できません。
+ +
+ +
+

パスワード再確認 *

+ +
+ +
+

メールアドレス

+
設定しておくとアカウント復旧に利用できます。
※サービス管理者が確認できます。
+ +
+ +
+

プロフィール

+
プロフィールページに掲載され公開されます。
※サービス管理者が確認できます。
+ +
+ + + +

登録を押すと利用規約とプライバシーポリシーに同意したこととなります。
未確認の場合は上のボタンよりお読みください。

+ + + +
+ +
+ 戻る +
+
+ +
+ + + + + + + + \ No newline at end of file diff --git a/nextpage/nextpage.php b/nextpage/nextpage.php new file mode 100644 index 0000000..02b86d8 --- /dev/null +++ b/nextpage/nextpage.php @@ -0,0 +1,124 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +$userid = $_GET['userid']; + +$itemsPerPage = 30; // 1ページあたりのユーズ数 +$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; +$offset = ($pageNumber - 1) * $itemsPerPage; + +$messages = array(); + +if (!empty($pdo)) { + + function customStripTags($html, $allowedTags) { + $allowedTagString = implode('|', $allowedTags); + $pattern = "/<(?!$allowedTagString)[^>]+>/"; + return preg_replace($pattern, '', $html); + } + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); + + // ユーズ内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + + $sql = "SELECT account, username, uniqid, rpuniqid, ueuse, datetime, photo1, photo2, video1, favorite, abi, abidate FROM ueuse WHERE rpuniqid = '' ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"; + $message_array = $pdo->query($sql); + + while ($row = $message_array->fetch(PDO::FETCH_ASSOC)) { + + $messages[] = $row; + } + + // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える + foreach ($messages as &$message) { + $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $message["account"]); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + if ($userData) { + $message['username'] = $userData['username']; + } + } + + // ユーズ内のHTMLコードに指定のタグを有効化する関数 + function replaceUnescapedHTMLTags($html) { + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ + return customStripTags($html, $allowedTags); + } + + if(!empty($messages)){ + foreach ($messages as $value) { + + $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $favIds = explode(',', $fav); + $value["favcnt"] = count($favIds)-1; + + $messageDisplay = new MessageDisplay($value, $userid); // $userid をコンストラクタに渡す + $messageDisplay->display(); + } + }else{ + echo '

ユーズがありません

'; + } + + $pdo = null; + +} + +?> diff --git a/nextpage/notification.php b/nextpage/notification.php new file mode 100644 index 0000000..1fe1d77 --- /dev/null +++ b/nextpage/notification.php @@ -0,0 +1,63 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +$userid = $_GET['userid']; + +$itemsPerPage = 30; // 1ページあたりの投稿数 +$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; +$offset = ($pageNumber - 1) * $itemsPerPage; + +$messages = array(); + +if (!empty($pdo)) { + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $messageQuery = $dbh->prepare("SELECT title,msg,url,datetime,userchk FROM notification WHERE touserid = :userid ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"); + $messageQuery->bindValue(':userid', $userid); + $messageQuery->execute(); + $message_array = $messageQuery->fetchAll(); + + if (!empty($message_array)) { + foreach ($message_array as $value) { + $messageDisplay = new MessageDisplay($value); // userid を渡さない + $messageDisplay->display(); + } + } else { + echo '

通知はありません

'; + } + + + $pdo = null; + +} + +?> diff --git a/nextpage/notificationview.php b/nextpage/notificationview.php new file mode 100644 index 0000000..1717a4b --- /dev/null +++ b/nextpage/notificationview.php @@ -0,0 +1,32 @@ +value = $value; + } + + public function display() { + echo '
'; + echo '
'; + + echo '
'; + $day = date("Ymd", strtotime(htmlspecialchars($this->value['datetime']))); + if ($day == date("Ymd")) { + echo date("今日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); + } else { + echo date("Y年m月d日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); + } + echo '
'; + + echo '
'; + + // 投稿内のHTMLコードを表示する部分 + echo '

' . htmlspecialchars($this->value['title']) . '

'; + echo '

' . htmlspecialchars($this->value['msg']) . '

'; + echo ' 続きをみる'; + + echo '
'; + } +} +?> diff --git a/nextpage/searchpage.php b/nextpage/searchpage.php new file mode 100644 index 0000000..2c036ef --- /dev/null +++ b/nextpage/searchpage.php @@ -0,0 +1,131 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + + +$keyword = isset($_GET['keyword']) ? $_GET['keyword'] : ''; +$userid = $_GET['userid']; + +$messages = array(); + +if (!empty($pdo)) { + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $messageQuery = $dbh->prepare("SELECT account,username,ueuse,uniqid,rpuniqid,datetime,photo1,photo2,video1,favorite, abi, abidate FROM ueuse WHERE ueuse LIKE :keyword OR abi LIKE :keyword ORDER BY datetime DESC"); + $messageQuery->bindValue(':keyword', '%' . $keyword . '%', PDO::PARAM_STR); + $messageQuery->execute(); + $message_array = $messageQuery->fetchAll(); + + function customStripTags($html, $allowedTags) { + $allowedTagString = implode('|', $allowedTags); + $pattern = "/<(?!$allowedTagString)[^>]+>/"; + return preg_replace($pattern, '', $html); + } + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); + + // ユーズ内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + + + + $messages = array(); + foreach ($message_array as $row) { + $messages[] = $row; + } + // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える + foreach ($messages as &$message) { + $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $message["account"]); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + if ($userData) { + $message['username'] = $userData['username']; + } + } + + // ユーズ内のHTMLコードに指定のタグを有効化する関数 + function replaceUnescapedHTMLTags($html) { + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ + return customStripTags($html, $allowedTags); + } + + if(!empty($messages)){ + foreach ($messages as $value) { + + $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $favIds = explode(',', $fav); + $value["favcnt"] = count($favIds)-1; + + $messageDisplay = new MessageDisplay($value, $userid); + $messageDisplay->display(); + } + }else{ + echo '

ユーズがありません

'; + } + + $pdo = null; + +} + +?> diff --git a/nextpage/ueusepage.php b/nextpage/ueusepage.php new file mode 100644 index 0000000..b693ac1 --- /dev/null +++ b/nextpage/ueusepage.php @@ -0,0 +1,139 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +$userid = $_GET['userid']; + +$ueuseid = isset($_GET['id']) ? $_GET['id'] : ''; + +$itemsPerPage = 30; // 1ページあたりの投稿数 +$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; +$offset = ($pageNumber - 1) * $itemsPerPage; + +$messages = array(); + +if (!empty($pdo)) { + + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + + + function customStripTags($html, $allowedTags) { + $allowedTagString = implode('|', $allowedTags); + $pattern = "/<(?!$allowedTagString)[^>]+>/"; + return preg_replace($pattern, '', $html); + } + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); + // 投稿内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // 投稿内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + // 投稿内容の取得(新しい順に取得) + $messageQuery = $dbh->prepare("SELECT account, username, ueuse, uniqid, rpuniqid, datetime, photo1, photo2, video1, favorite, abi, abidate FROM ueuse WHERE uniqid = :ueuseid OR rpuniqid = :rpueuseid ORDER BY datetime ASC LIMIT $offset, $itemsPerPage"); + $messageQuery->bindValue(':ueuseid', $ueuseid); + $messageQuery->bindValue(':rpueuseid', $ueuseid); + $messageQuery->execute(); + $message_array = $messageQuery->fetchAll(); + + $messages = array(); + + + + foreach ($message_array as $row) { + $messages[] = $row; + } + // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える + foreach ($messages as &$message) { + $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $message["account"]); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + if ($userData) { + $message['username'] = $userData['username']; + } + } + + // 投稿内のHTMLコードに指定のタグを有効化する関数 + function replaceUnescapedHTMLTags($html) { + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ + return customStripTags($html, $allowedTags); + } + + if(!empty($messages)){ + foreach ($messages as $value) { + $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $favIds = explode(',', $fav); + $value["favcnt"] = count($favIds)-1; + + $messageDisplay = new MessageDisplay($value, $userid); + $messageDisplay->display(); + } + }else{ + echo '

投稿がありません

'; + } + + $pdo = null; + +} + +?> diff --git a/nextpage/userpage.php b/nextpage/userpage.php new file mode 100644 index 0000000..5ad9f16 --- /dev/null +++ b/nextpage/userpage.php @@ -0,0 +1,140 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + + +$uwuzuid = isset($_GET['id']) ? $_GET['id'] : ''; +$userid = $_GET['userid']; + +$itemsPerPage = 30; // 1ページあたりのユーズ数 +$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; +$offset = ($pageNumber - 1) * $itemsPerPage; + +$messages = array(); + +if (!empty($pdo)) { + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $dbh->prepare("SELECT username, userid, profile, role, follower FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $uwuzuid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + $messageQuery = $dbh->prepare("SELECT account,username,ueuse,uniqid,rpuniqid,datetime,photo1,photo2,video1,favorite, abi, abidate FROM ueuse WHERE account = :userid AND rpuniqid = ''ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"); + $messageQuery->bindValue(':userid', $uwuzuid); + $messageQuery->execute(); + $message_array = $messageQuery->fetchAll(); + + function customStripTags($html, $allowedTags) { + $allowedTagString = implode('|', $allowedTags); + $pattern = "/<(?!$allowedTagString)[^>]+>/"; + return preg_replace($pattern, '', $html); + } + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); + + // ユーズ内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + + + + $messages = array(); + foreach ($message_array as $row) { + $messages[] = $row; + } + // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える + foreach ($messages as &$message) { + $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $message["account"]); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + if ($userData) { + $message['username'] = $userData['username']; + } + } + + // ユーズ内のHTMLコードに指定のタグを有効化する関数 + function replaceUnescapedHTMLTags($html) { + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ + return customStripTags($html, $allowedTags); + } + + if(!empty($messages)){ + foreach ($messages as $value) { + + $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $favIds = explode(',', $fav); + $value["favcnt"] = count($favIds)-1; + + $messageDisplay = new MessageDisplay($value, $userid); + $messageDisplay->display(); + } + }else{ + echo '

ユーズがありません

'; + } + + $pdo = null; + +} + +?> diff --git a/nextpage/view.php b/nextpage/view.php new file mode 100644 index 0000000..33f9131 --- /dev/null +++ b/nextpage/view.php @@ -0,0 +1,85 @@ + +value = $value; + $this->userid = $userid; + } + + public function display() { + if (empty($this->value)) { + echo '

ユーズがありません

'; + } else { + echo '
'; + if(!empty($this->value['rpuniqid'])){ + echo '

┗━ 一番上のユーズに返信

'; + } + echo '
'; + + echo ' '; + echo ' ' . htmlspecialchars($this->value['username']) . ''; + echo ' '; + echo '
'; + $day = date("Ymd", strtotime(htmlspecialchars($this->value['datetime']))); + if ($day == date("Ymd")) { + echo date("今日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); + } else { + echo date("Y年m月d日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); + } + echo '
'; + + echo '
'; + + echo '

' . replaceEmojisWithImages(replaceURLsWithLinks(nl2br(replaceUnescapedHTMLTags($this->value['ueuse'])))) . '

'; + + if (!empty($this->value['photo2']) && $this->value['photo2'] !== 'none') { + echo '
'; + echo ' 画像'; + echo ' 画像'; + echo '
'; + } elseif (!empty($this->value['photo1']) && $this->value['photo1'] !== 'none') { + echo '
'; + echo ' 画像'; + echo '
'; + } + if (!empty($this->value['video1']) && $this->value['video1'] !== 'none') { + echo '
'; + echo ' '; + echo '
'; + } + + if(!($this->value['abi'] == "none")){ + echo '
'; + echo '
'; + echo '

' . htmlspecialchars($this->value['username']) . 'さんが追記しました

'; + echo '
'; + echo '

'. htmlspecialchars($this->value['abi']) . '

'; + echo '

追記日時 : '. date("Y年m月d日 H:i", strtotime(htmlspecialchars($this->value['abidate']))) . '

'; + echo '
'; + } + + echo '
'; + echo '
'; + if (false !== strstr($this->value['favorite'], $this->userid)) { + echo ''; + }else{ + echo ''; + } + echo '返信をみる&する'; + if($this->value['account'] === $this->userid){ + if($this->value['abi'] === "none"){ + echo ''; + } + echo ''; + } + echo '
'; + echo '
'; + } + } +} +?> \ No newline at end of file diff --git a/notice/addnotice.php b/notice/addnotice.php new file mode 100644 index 0000000..d1c2018 --- /dev/null +++ b/notice/addnotice.php @@ -0,0 +1,292 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if(!($res["admin"] === "yes")){ + header("Location: ../login.php"); + exit; +} + +if( !empty($pdo) ) { + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $dbh->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $userid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + $role = $userData["role"]; + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + $rerole = $dbh->prepare("SELECT username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime FROM account WHERE userid = :userid"); + + $rerole->bindValue(':userid', $userid); + // SQL実行 + $rerole->execute(); + + $userdata = $rerole->fetch(); // ここでデータベースから取得した値を $role に代入する + + +} + + + +if( !empty($_POST['btn_submit']) ) { + $title = $_POST['title']; + $note = $_POST['note']; + + // IDの入力チェック + if( empty($title) ) { + $error_message[] = 'タイトルを入力してください!'; + } else { + + // 文字数を確認 + if( 1024 < mb_strlen($title, 'UTF-8') ) { + $error_message[] = 'タイトルは1024文字以内で入力してください。'; + } + + } + + if( empty($error_message) ) { + + // 書き込み日時を取得 + $datetime = date("Y-m-d H:i:s"); + + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO notice (title,note,account,datetime) VALUES (:title,:note,:account,:datetime)"); + + + // 値をセット + $stmt->bindParam( ':title', $title, PDO::PARAM_STR); + $stmt->bindParam( ':note', $note, PDO::PARAM_STR); + + $stmt->bindParam( ':account', $userid, PDO::PARAM_STR); + + $stmt->bindParam( ':datetime', $datetime, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch(Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if( $res ) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '配信に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + + + } + +} + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + +お知らせ配信 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ + +
+ +

お知らせ配信

+ +

タイトルと内容を入力して配信してください。
削除と編集はここからは出来ません。
DB管理画面から行ってください。

+ + +
+

タイトル

+ +
+ +
+

この絵文字について

+ +
+ +
+ + +
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/notice/notice.php b/notice/notice.php new file mode 100644 index 0000000..b1de98d --- /dev/null +++ b/notice/notice.php @@ -0,0 +1,40 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +$sql = "SELECT title, note, account, datetime FROM notice ORDER BY datetime DESC"; +$notice_array = $pdo->query($sql); + +while ($row = $notice_array->fetch(PDO::FETCH_ASSOC)) { + + $notices[] = $row; +} + +if(!empty($notices)){ + foreach ($notices as $value) { + $uneinoticenote = $value['note']; + $uneinoticetitle = $value['title']; + $uneinoticeaccount = $value['account']; + $uneinoticedatetime = $value['datetime']; + } +}else{ + $uneinoticenote = ""; + $uneinoticetitle = "おしらせはありません"; + $uneinoticeaccount = "uwuzu"; + $uneinoticedatetime = ""; +} + diff --git a/notification/index.php b/notification/index.php new file mode 100644 index 0000000..ee33d99 --- /dev/null +++ b/notification/index.php @@ -0,0 +1,229 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +通知 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ + +
+
+ +
+
+ + + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/others/index.php b/others/index.php new file mode 100644 index 0000000..9bfd40e --- /dev/null +++ b/others/index.php @@ -0,0 +1,300 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if( !empty($pdo) ) { + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $dbh->prepare("SELECT userid FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $userid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + +} + +if( !empty($_POST['btn_submit']) ) { + + $chkuserid = $_POST['chkuserid']; + + if( empty($chkuserid) ) { + $error_message[] = '確認用ユーザーIDを入力してください。'; + } else { + if($chkuserid === $userData["userid"]){ + $userId = $userData["userid"]; // 削除対象のユーザーID + $folderPath = "../ueuseimages/"; // フォルダのパス + + // 指定したフォルダ内でユーザーIDを含むファイルを検索 + $filesToDelete = glob($folderPath . "*-$userId.*"); // 「-ユーザーID.拡張子」というパターンを検索 + + // ファイルを順に削除 + foreach ($filesToDelete as $file) { + if (is_file($file)) { + unlink($file); // ファイルを削除 + } + } + + $folderPath2 = "../ueusevideos/"; // フォルダのパス + + // 指定したフォルダ内でユーザーIDを含むファイルを検索 + $filesToDelete2 = glob($folderPath2 . "*-$userId.*"); // 「-ユーザーID.拡張子」というパターンを検索 + + // ファイルを順に削除 + foreach ($filesToDelete2 as $file2) { + if (is_file($file2)) { + unlink($file2); // ファイルを削除 + } + } + + + try { + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS); + + // 投稿削除クエリを実行 + $deleteQuery = $pdo->prepare("DELETE FROM ueuse WHERE account = :userid"); + $deleteQuery->bindValue(':userid', $userid, PDO::PARAM_STR); + $res = $deleteQuery->execute(); + + // アカウント削除クエリを実行 + $deleteQuery = $pdo->prepare("DELETE FROM account WHERE userid = :userid"); + $deleteQuery->bindValue(':userid', $userid, PDO::PARAM_STR); + $res = $deleteQuery->execute(); + + // フォローの更新 + $updateFollowQuery = $pdo->prepare("UPDATE account SET follow = REPLACE(follow, :userid, '') WHERE follow LIKE :pattern"); + $updateFollowQuery->bindValue(':userid', ",$userid", PDO::PARAM_STR); + $updateFollowQuery->bindValue(':pattern', "%,$userid%", PDO::PARAM_STR); + $updateFollowQuery->execute(); + + // フォロワーの更新 + $updateFollowerQuery = $pdo->prepare("UPDATE account SET follower = REPLACE(follower, :userid, '') WHERE follower LIKE :pattern"); + $updateFollowerQuery->bindValue(':userid', ",$userid", PDO::PARAM_STR); + $updateFollowerQuery->bindValue(':pattern', "%,$userid%", PDO::PARAM_STR); + $updateFollowerQuery->execute(); + + // いいねの更新 + $updateFavoriteQuery = $pdo->prepare("UPDATE ueuse SET favorite = REPLACE(favorite, :favorite, '') WHERE favorite LIKE :pattern"); + $updateFavoriteQuery->bindValue(':favorite', ",$userid", PDO::PARAM_STR); + $updateFavoriteQuery->bindValue(':pattern', "%,$userid%", PDO::PARAM_STR); + $updateFavoriteQuery->execute(); + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + header("Location:../index.php"); + exit; + } else { + $error_message[] = 'アカウント削除に失敗しました。'; + } + + + // プリペアドステートメントを削除 + $stmt = null; + }else{ + $error_message[] = '確認用ユーザーIDが違います'; + } + } + + +} + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + +?> + + + + + + +アカウント削除ページ - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ +
+

アカウント削除ページ

+

アカウント誤削除を防ぐため下の入力ボックスにご自身のユーザーIDを入力する必要があります。

+ + +

あなたはこのサーバーの管理者のようです。
管理者アカウントの移行は済んでいますか?
アカウントを削除しても大丈夫なのですか...?

+ + +
+

確認用ユーザーID

+ +
+ + + + + +
+
+ + + + + \ No newline at end of file diff --git a/reply/reply.php b/reply/reply.php new file mode 100644 index 0000000..c85d25b --- /dev/null +++ b/reply/reply.php @@ -0,0 +1,202 @@ +beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, rpuniqid, ueuse, photo1, photo2, video1, datetime, abi) VALUES (:username, :account, :uniqid, :rpuniqid, :ueuse, :photo1, :photo2, :video1, :datetime, :abi)"); + + $stmt->bindParam(':username', $username, PDO::PARAM_STR); + $stmt->bindParam(':account', $userid, PDO::PARAM_STR); + $stmt->bindParam(':uniqid', $uniqid, PDO::PARAM_STR); + $stmt->bindParam(':rpuniqid', $rpuniqid, PDO::PARAM_STR); + $stmt->bindParam(':ueuse', $Rptext, PDO::PARAM_STR); + + $stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR); + $stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR); + $stmt->bindParam(':video1', $video1, PDO::PARAM_STR); + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + $stmt->bindParam(':abi', $abi, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + // 書き込み日時を取得 + $datetime = date("Y-m-d H:i:s"); + $title = ''.$userid.'さんが返信しました!' + $msg = ''.$userid.'さんがあなたの投稿に返信しました!' + $url = '/!'.$rpuniqid + + // トランザクション開始 + $pdo->beginTransaction(); + + $stmt = $pdo->prepare("INSERT INTO notification (touserid, title, msg, url, datetime) VALUES (:touserid, :title, :msg, :url, :datetime,)"); + + $stmt->bindParam(':touserid', $touserid, PDO::PARAM_STR); + $stmt->bindParam(':title', $title, PDO::PARAM_STR); + $stmt->bindParam(':msg', $msg, PDO::PARAM_STR); + $stmt->bindParam(':url', $url, PDO::PARAM_STR); + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + $res = $stmt->execute(); + $res = $pdo->commit(); + + } catch(Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + header('Content-Type: application/json'); + echo json_encode(['success' => true]); + exit; + } else { + header('Content-Type: application/json'); + echo json_encode(['success' => false, 'error' => '追加に失敗しました。']); + exit; + } + } catch(PDOException $e) { + header('Content-Type: application/json'); + echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); + exit; + } + + if (!empty($errors)) { + header('Content-Type: application/json'); + echo json_encode(['success' => false, 'errors' => $errors]); + exit; + } + + + // プリペアドステートメントを削除 + $stmt = null; +} + + +?> diff --git a/require/botbox.php b/require/botbox.php new file mode 100644 index 0000000..b5617a6 --- /dev/null +++ b/require/botbox.php @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/require/leftbox.php b/require/leftbox.php new file mode 100644 index 0000000..ac6b8e2 --- /dev/null +++ b/require/leftbox.php @@ -0,0 +1,26 @@ + + + \ No newline at end of file diff --git a/require/rightbox.php b/require/rightbox.php new file mode 100644 index 0000000..e846a79 --- /dev/null +++ b/require/rightbox.php @@ -0,0 +1,45 @@ +
+ +

お知らせ

+
+ +
+

+

+

編集者 :

+

+
+ +
+

サーバー情報

+
+

Server

+

+

+ 利用規約プライバシーポリシー +

Software

+

+

Version :

+

Developer :

+ もっと詳しく!リリースノート +
+
\ No newline at end of file diff --git a/rule/privacypolicy.php b/rule/privacypolicy.php new file mode 100644 index 0000000..f1b9214 --- /dev/null +++ b/rule/privacypolicy.php @@ -0,0 +1,80 @@ + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$sprivacypolicy = explode("\n", $privacypolicydata); +$htmltext = ''; // 初期化 + +foreach ($sprivacypolicy as $privacypolicy) { + $markdowntext = $privacypolicy; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + +プライバシーポリシー - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +

プライバシーポリシー

+
+
+ +

+ +
+ + + + + \ No newline at end of file diff --git a/rule/releasenotes.php b/rule/releasenotes.php new file mode 100644 index 0000000..54f0a02 --- /dev/null +++ b/rule/releasenotes.php @@ -0,0 +1,93 @@ + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$srelease = explode("\n", $releasedata); +$htmltext = ''; // 初期化 + +foreach ($srelease as $release) { + $markdowntext = $release; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + +<?php echo $uwuzuinfo[0]?> リリースノート - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ +
+ +
+ +

リリースノート

+
+
+
+
Version :
Developer :
Last Update :
+ + +

+ +
+ + + + + \ No newline at end of file diff --git a/rule/terms.php b/rule/terms.php new file mode 100644 index 0000000..5f09619 --- /dev/null +++ b/rule/terms.php @@ -0,0 +1,80 @@ + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$sterms = explode("\n", $termsdata); +$htmltext = ''; // 初期化 + +foreach ($sterms as $terms) { + $markdowntext = $terms; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + +利用規約 - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +

利用規約

+
+
+ +

+ +
+ + + + + \ No newline at end of file diff --git a/rule/uwuzuabout.php b/rule/uwuzuabout.php new file mode 100644 index 0000000..2694f3a --- /dev/null +++ b/rule/uwuzuabout.php @@ -0,0 +1,93 @@ + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$sterms = explode("\n", $termsdata); +$htmltext = ''; // 初期化 + +foreach ($sterms as $terms) { + $markdowntext = $terms; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + +<?php echo $uwuzuinfo[0]?>について - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ +
+ +
+ +

について

+
+
+
+
Version :
Developer :
Last Update :
+ + +

+ +
+ + + + + \ No newline at end of file diff --git a/search/index.php b/search/index.php new file mode 100644 index 0000000..abe3d84 --- /dev/null +++ b/search/index.php @@ -0,0 +1,390 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +//------------------------------------------- + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + + +検索 - <?php echo file_get_contents($servernamefile);?> + + + + + + + +
+ + +
    + +

    + +
+ + + +
+

検索

+
+
+ + +
+ +
+
+ + +
+
+ + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/server/admininfo.txt b/server/admininfo.txt new file mode 100644 index 0000000..62573b3 --- /dev/null +++ b/server/admininfo.txt @@ -0,0 +1 @@ +TEST/@test \ No newline at end of file diff --git a/server/contact.txt b/server/contact.txt new file mode 100644 index 0000000..beef183 --- /dev/null +++ b/server/contact.txt @@ -0,0 +1 @@ +test@test.com \ No newline at end of file diff --git a/server/info.txt b/server/info.txt new file mode 100644 index 0000000..a4a3c6c --- /dev/null +++ b/server/info.txt @@ -0,0 +1,3 @@ +XXXXへようこそ! +XXXXはuwuzu~~~~~~~~~ +とりあえず適当に書いてみよう! \ No newline at end of file diff --git a/server/privacypolicy.txt b/server/privacypolicy.txt new file mode 100644 index 0000000..9e1c9b5 --- /dev/null +++ b/server/privacypolicy.txt @@ -0,0 +1 @@ +ここもしっかり書こう \ No newline at end of file diff --git a/server/servername.txt b/server/servername.txt new file mode 100644 index 0000000..650af7e --- /dev/null +++ b/server/servername.txt @@ -0,0 +1 @@ +tesutoさば \ No newline at end of file diff --git a/server/serverstop.txt b/server/serverstop.txt new file mode 100644 index 0000000..2a8c3b9 --- /dev/null +++ b/server/serverstop.txt @@ -0,0 +1,2 @@ +今現在サーバーは停止していません +もしサーバーを止めるならここに理由書こう \ No newline at end of file diff --git a/server/terms.txt b/server/terms.txt new file mode 100644 index 0000000..11bc436 --- /dev/null +++ b/server/terms.txt @@ -0,0 +1 @@ +利用規約、しっかり書こう \ No newline at end of file diff --git a/server/uwuzuabout.txt b/server/uwuzuabout.txt new file mode 100644 index 0000000..d34fc8e --- /dev/null +++ b/server/uwuzuabout.txt @@ -0,0 +1,141 @@ +## 1. まずそもそもuwuzuとは何か +使っている方ならわかると思いますが普通のSNSです! +これと言った大きな特徴もなく、平凡で、なんとも言えないSNSです… +あっ!特徴かもしれないのが誰でもサーバーを建てられることです!!! +詳細は5. サーバーの立て方をご覧ください! +### 1.1 作られた理由は? +uwuzuは某X社のSNSを再構築しようと考えたdaichimarukanaにより作成されたSNSです() +uwuzuの読みはゆずです。 + +## 2. 誰でもサーバーを建てれるってことは、分散型? +残念っ! +uwuzuにはActivityPubやその他の連合用機能がないため基本的に導入されたサーバー中心の中央集権型SNSです! +今後いつかはActivityPubも導入しようかと思っています... + +## 3. 名前の由来って何? +おっ!いい着眼点ですねぇ~~~ +uwuzu(ゆず)の名前の由来は、開発者のdaichimarukanaがサービス名を考えていたときに某X社のSNSに「TwitterみたいなSNS作ってるけどサービス名が全く思いつかねぇ()」と投稿したところ思ったより多くの名前の案が集まり、 +その中に「With you」という名前の案があったところから来ています。 +daichimarukana < 「うぃずゆー(With you)」「うぃじゅー(witzou)」「うずー(wuzu)」「ゆず(yuzu)」あれっ?なんか普通すぎ?そうだ!!!!これでいいやん!!!! +### 「ゆず(uwuzu)」 + +ちなみに、この案が来るまでは「Twilus」という名前にする予定だったんですよっ! + +## 4. 開発言語は? +uwuzuはPHPとJS、HTML(プログラミング言語じゃないか)、CSSで作られています! +ライブラリはjQueryを導入しています! + +## 5. サーバーの建て方 +※MySQLの設定結構めんどいです。 +まず、Apache2とPHP 8とmysql Ver 15が導入されているサーバーを準備します! +次にSQLを設定します。(InnoDB) +まず、お好きな名前でDBを作成し、その中に、account,emoji,notice,role,ueuse,notificationとテーブルを作成します。 +テーブルの中身は以下のとおりです。 +照合順序は全て標準でutf8mb4_general_ciです。 +### account +- sysid(INT)(AUTO_INCREMENT ) アカウントが追加されるとカウントされるシステム用ID +- username(varchar(500)) ユーザーネーム保存用 +- userid(varchar(500)) ユーザーID保存用 +- password(varchar(1024)) パスワード保存用(ハッシュ化されます) +- loginid(varchar(256)) 自動ログイン時に本人アカウントか確認 +- mailadds(varchar(500)) メールアドレス保存用 +- profile(TEXT) プロフィールテキスト保存用 +- iconname(varchar(256)) アイコン画像名保存用 +- iconcontent(mediumblob) アイコン画像保存用 +- icontype(varchar(256)) アイコン画像拡張子保存用 +- iconsize(INT) アイコン画像サイズ保存用 +- headname(varchar(256)) ヘッダー画像名保存用 +- headcontent(mediumblob) ヘッダー画像保存用 +- headtype(varchar(256)) ヘッダー画像拡張子保存用 +- headsize(INT) ヘッダー画像サイズ保存用 +- role(varchar(1024)) 「user」のようなロール保存用 +- datetime(datetime) アカウント作成日時保存用 +- follow(text) アカウントがフォローしている人保存用 +- follower(text) アカウントがフォローされている人保存用 +- admin(varchar(25)) 管理者アカウントなら「yes」、それ以外なら「none」と入力。 + +### emoji +- sysid(INT)(AUTO_INCREMENT) アカウントが追加されるとカウントされるシステム用ID +- emojifile(varchar(512)) 絵文字ファイル名保存用 +- emojitype(varchar(256)) 絵文字拡張子保存用 +- emojicontent(mediumblob) 絵文字画像保存用 +- emojiname(varchar(512)) 「:emoji:」のような絵文字名保存用 +- emojiinfo(text) 絵文字についての説明保存用 +- emojidate(datetime) 絵文字登録日時保存用 + +### notice +- sysid(INT)(AUTO_INCREMENT) うんえいからのおしらせが追加されるとカウントされるシステム用ID +- title(varchar(1024)) お知らせのタイトル保存用 +- note(text) お知らせの内容保存用 +- account(varchar(500)) 編集者ID保存用 +- emojidate(datetime) お知らせ登録日時保存用 + +### role +- sysid(INT)(AUTO_INCREMENT) ロールが追加されるとカウントされるシステム用ID +- rolename(varchar(512)) ロール表示名保存用 +- roleauth(varchar(256)) ロールの権限保存用 +- rolecolor(varchar(25)) ロールの色保存用 +- roleidname(varchar(512)) 「user」のようなロール指定用 + +### ueuse +- sysid(INT)(AUTO_INCREMENT) 投稿されるとカウントされるシステム用ID +- account(varchar(256)) 投稿者ID保存用 +- uniqid(varchar(256)) 投稿ID保存用 +- rpuniqid(varchar(256)) リプライ先ID保存用 +- ueuse(text) 投稿内容保存用 +- photo1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 +- photo2(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 +- video1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 +- datetime(datetime) 投稿日時保存用 +- favorite(text) いいね保存用 +- abi(text) 投稿者の追記保存用 +- abidate(datetime) 追記日時保存用 + +### notification +- sysid(INT)(AUTO_INCREMENT) 通知されるとカウントされるシステム用ID +- touserid(varchar(512)) 通知先ID保存用 +- title(varchar(1024)) 通知のタイトル +- msg(text) 通知の内容 +- datetime(datetime) 通知日時 +- userchk(varchar(25)) 通知の既読確認 + + +すべて作成完了したらGithubよりuwuzuのファイルをDLし、解凍し、それをサーバーの動作ディレクトリに置き、Apacheのhttpd.confからその動作ディレクトリを指定し、あとはApacheとphpとMy SQLを起動するだけ! +起動したらまずDBのroleにphpmyadminから「user」ロールを追加権限は「user」でOK。ロール名はとりあえず「一般ユーザー」ロールの色はHEXコード(#を除く)で000000のように指定。 +そしたら普通にuwuzuにアクセスして自分のアカウントを登録。 +それが終わったら一度サーバーを止め、uwuzuの動作ディレクトリ内のserverフォルダ内のファイルを各自設定 +ファイルの機能は以下の通り! +- admininfo.txt : 管理者名(てすとまる/@sampledayo) +- contact.txt : 管理者への連絡用メアド(sample@test.com) +- info.txt : サーバー登録時に表示されるメッセージ(好きな内容) +- privacypolicy.txt : プライバシーポリシー(サーバーのプライバシーポリシーを記載) +- servername.txt : サーバー名(てすとさば) +- terms.txt : 利用規約(サーバーの利用規約を記載) +- uwuzuabout.txt : このファイル(uwuzuを改造した場合は書き換え) +- uwuzuinfo.txt : uwuzuのバージョン等記載(uwuzuを改造した場合は書き換え) +- uwuzurelease.txt : uwuzuのバージョン等記載(uwuzuを改造した場合は書き換え) + +### これでサーバーは完成!!! +もう一度サーバーを起動してみんなに公開しよう!!! + +## 6. Android、iOS、その他OS向けのアプリについて +残念ですが今現在は公式アプリ等はなく、Webブラウザからお楽しみいただけます。 +誰かが作ってくれたらありがたいな~() + +## 7. 開発したいです!!! +uwuzuを自分の思うように改造して使いたい場合はAGPLライセンスのもと改造後ソースコードを公開するということで改造してください! +場合によってはdaichimarukanaの作る本家(?)uwuzuにも改造で追加された機能が実装されるかも...() +daichimarukanaと一緒に開発したいよ~って人は私のHPからメールとか某Xとかから連絡してくださいな~ + +## 8. ロゴは誰が作ったのですか? +ロゴはまだない。 +ロゴは下記のリンクよりuwuzuに関連しているコンテンツのみDLしてご利用いただけます。(uwuzuへ飛ぶリンクボタンなどはOK) + +### 色付き +#img ../img/uwuzucolorlogo.svg +### まっしろ +#img ../img/uwuzulogo.svg + + +編集者 : daichimarukana +最終更新日 : 2023/08/16 14:50 \ No newline at end of file diff --git a/server/uwuzuinfo.txt b/server/uwuzuinfo.txt new file mode 100644 index 0000000..1229135 --- /dev/null +++ b/server/uwuzuinfo.txt @@ -0,0 +1,4 @@ +uwuzu +1.1.3 +2023/08/17 +daichimarukana \ No newline at end of file diff --git a/server/uwuzurelease.txt b/server/uwuzurelease.txt new file mode 100644 index 0000000..051c3c2 --- /dev/null +++ b/server/uwuzurelease.txt @@ -0,0 +1,45 @@ +## リリースノートだぜぇぇぇぇぇぇい!!!!!!! +ここにはuwuzuの更新情報を載せてくぜぇ~!(いやまてテンションおかしいだろ...) + +## Version 1.1.3 +リリース日:2023/08/17 +早速脆弱性を見つけ出すとんでもない人間が出始めたので対策をしました() +部分的にUIを変更しました。 + +## Version 1.1.2 +リリース日:2023/08/17 +絵文字文字化けバグを修正しました。 + +## Version 1.1.1 +リリース日:2023/08/16 +小さなバグを修正しました。 + +## Version 1.1.0 +リリース日:2023/08/16 +超極激ヤババグを修正しました。 +ユーザーIDにハイフンが使えてしまうバグを修正しました。 + +## Version 1.0.0 +リリース日:2023/08/16 +### 初リリース!!!やったね!!!! +機能は以下の通り!遊んでみてね!!! +- 投稿(ユーズしよう!みんなに自分のつぶやきを見せつけるぞ!(?)) +- 投稿に画像添付(最大2枚まで画像を添付できるぞ!位置情報など漏洩しないよう写真にGPS情報が残っていないか厳重に注意しよう...) +- 投稿に動画添付(好きな動画を載せてみよう!) +- 投稿への追記(投稿者が追記できるよ!誤字ったりミスった時はこれを使おう!) +- フォロー(アカウントをフォロー!周りのユーザーとの交流を増やそう!) +- いいね(いいねを押してみよう!気軽にどのくらいの人が「いいね!」と思ったかがわかる優れものさ!) +- 返信(返信だ!少し手抜きで作ったから見た目はよろしくないけど十分使える機能だッ!どちらかと言えばスレッドといったほうがいいかも...) +- カスタム絵文字(自分の思うことを画像で表せるカスタム絵文字!サーバー管理者に追加してほしい絵文字を報告して追加してもらおう!) +- カスタム絵文字総合ページ(PCの人なら左側のメニューからアクセスできるかな!自分のお気に入りの絵文字をここから見つけよう!) +- 投稿の文字装飾(5つだけHTMLタグを開放したんだ!<h1>,<h2>,<h3>,<center>,<font>を使って自由に作ろう!) +- プロフィール(無いと困る機能だけど一応書いとくね~!自分や他のユーザーのプロフィールページだよッ!) +- 設定(無いと一番困る機能!少し操作が複雑だけど頑張って!) +- 検索(ユーザー検索は出来ないけど投稿は検索できるよ!「あの投稿がまた見たい...」というときに使おう!) +- 通知(今のところほぼ使い物にならないけど今後良くしていく予定!待っててくれよっ!) +- アカウント削除(消したくなったタイミングで自分の投稿やアカウントなどの情報を全て消せるよ!) +- API(開発者のみんな~!ちゃんとAPIを実装したよ!内容はユーザー情報の取得!それ以外はまだないけど...まぁ!
/api/userdata-api.php?userid=me2) +- PWA(スマホでも快適に!※動作未確認()) +- ダークモード(暗い夜でも目に優しく!) +他にも小さ~な機能は色々あるけどあまり気にならないだろうから今回はパスで! +ということで最初のバージョンであるuwuzu 1.0.0をお楽しみください! \ No newline at end of file diff --git a/settings/index.php b/settings/index.php new file mode 100644 index 0000000..36a3532 --- /dev/null +++ b/settings/index.php @@ -0,0 +1,664 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if( !empty($pdo) ) { + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $dbh->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $userid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + $role = $userData["role"]; + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + $rerole = $dbh->prepare("SELECT username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime FROM account WHERE userid = :userid"); + + $rerole->bindValue(':userid', $userid); + // SQL実行 + $rerole->execute(); + + $userdata = $rerole->fetch(); // ここでデータベースから取得した値を $role に代入する + + +} + + + +if( !empty($_POST['btn_submit']) ) { + + // 空白除去 + $username = $_POST['username']; + + $mailadds = $_POST['mailadds']; + + $profile = $_POST['profile']; + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); + + $query->execute(array(':userid' => $userid)); + + $result = $query->fetch(); + + + // ユーザーネームの入力チェック + if( empty($username) ) { + $error_message[] = '表示名を入力してください。'; + } else { + // 文字数を確認 + if( 25 < mb_strlen($username, 'UTF-8') ) { + $error_message[] = 'ユーザーネームは25文字以内で入力してください。'; + } + } + + if( empty($error_message) ) { + // トランザクション開始 + $pdo->beginTransaction(); + $hashpassword = password_hash($password, PASSWORD_DEFAULT); + + try { + // SQL作成 + $stmt = $pdo->prepare("UPDATE account SET username = :username, mailadds = :mailadds, profile = :profile WHERE userid = :userid;"); + + // 他の値をセット + $stmt->bindParam(':username', $username, PDO::PARAM_STR); + $stmt->bindParam(':mailadds', $mailadds, PDO::PARAM_STR); + $stmt->bindParam(':profile', $profile, PDO::PARAM_STR); + + // 条件を指定 + // 以下の部分を適切な条件に置き換えてください + $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + + + +if( !empty($_POST['pass_submit']) ) { + + $password = $_POST['password']; + + $hashpassword = password_hash($password, PASSWORD_DEFAULT); + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); + + $query->execute(array(':userid' => $userid)); + + $result = $query->fetch(); + + // ユーザーネームの入力チェック + if( empty($password) ) { + $error_message[] = 'パスワードを入力してください。'; + } else { + + $weakPasswords = array( + "password", + "123456", + "123456789", + "12345", + "12345678", + "123123", + "1234567890", + "1234567", + "1q2w3e", + "qwerty123", + "aa12345678", + "password1", + "1234", + "qwertyuiop", + "123321", + "12321", + "qwertyui", + "abcd1234", + "zaq12wsx", + "1q2w3e4r", + "qwer1234", + "sakura", + "asdf1234", + "asdfghjkl", + "asdfghjk", + "member", + "1qaz2wsx", + "doraemon", + "makoto", + "takeshi", + "machi1", + "machida", + "machida1", + "tokyo", + "arashi", + "dropbox", + "twitter", + "elonmusk", + "xcorp", + "1234qwer", + "japan", + "nippon", + "tukareta", + "tweet", + "discord", + "misskey", + "qwerty", + "123456789", + "abc123", + "password123", + "admin", + "letmein", + "iloveyou", + "111111", + "12345678910", + "user", + "root", + "system", + // 他にも弱いパスワードを追加できます + ); + + function isWeakPassword($passwords) { + global $weakPasswords; + return in_array($passwords, $weakPasswords); + } + + // テスト用のパスワード(実際にはユーザー入力などから取得することになります。 + + if (isWeakPassword($password)) { + $error_message[] = "パスワードが弱いです。セキュリティ上変更してください。"; + } else { + + } + // 文字数を確認 + if( 100 < mb_strlen($password, 'UTF-8') ) { + $error_message[] = 'パスワードは100文字以内で入力してください。'; + } + + if( 4 > mb_strlen($password, 'UTF-8') ) { + $error_message[] = 'パスワードは4文字以上である必要があります。'; + } + } + + if( empty($error_message) ) { + // トランザクション開始 + $pdo->beginTransaction(); + $hashpassword = password_hash($password, PASSWORD_DEFAULT); + + try { + // SQL作成 + $stmt = $pdo->prepare("UPDATE account SET password = :password WHERE userid = :userid;"); + + // 他の値をセット + $stmt->bindParam(':password', $hashpassword, PDO::PARAM_STR); + + // 条件を指定 + // 以下の部分を適切な条件に置き換えてください + $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +if( !empty($_POST['img1btn_submit']) ) { + + if (!empty($_FILES['image2s']['name'])) { + $headimg = $_FILES['image2s']; + }else{ + $error_message[] = 'ヘッダー画像を選択してください'; + } + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); + + $query->execute(array(':userid' => $userid)); + + $result = $query->fetch(); + + + + + if( empty($error_message) ) { + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("UPDATE account SET headname = :headname, headtype = :headtype, headcontent = :headcontent, headsize = :headsize WHERE userid = :userid"); + + // ヘッダー画像関連の処理 + $headName = $headimg['name']; + $headType = $headimg['type']; + $headContent = file_get_contents($headimg['tmp_name']); + $headSize = $headimg['size']; + + // ヘッダー画像のバインド + $stmt->bindValue(':headname', $headName, PDO::PARAM_STR); + $stmt->bindValue(':headtype', $headType, PDO::PARAM_STR); + $stmt->bindValue(':headcontent', $headContent, PDO::PARAM_STR); + $stmt->bindValue(':headsize', $headSize, PDO::PARAM_INT); + + // ユーザーIDのバインド(WHERE句に必要) + $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + + +if( !empty($_POST['img2btn_submit']) ) { + + if (!empty($_FILES['image']['name'])) { + $img = $_FILES['image']; + }else{ + $error_message[] = 'アイコン画像を選択してください'; + } + + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); + + $query->execute(array(':userid' => $userid)); + + $result = $query->fetch(); + + + + + if( empty($error_message) ) { + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("UPDATE account SET iconname = :iconname, icontype = :icontype, iconcontent = :iconcontent, iconsize = :iconsize WHERE userid = :userid"); + + $iconName = $img['name']; + $iconType = $img['type']; + $iconContent = file_get_contents($img['tmp_name']); + $iconSize = $img['size']; + + // アイコン画像のバインド + $stmt->bindValue(':iconname', $iconName, PDO::PARAM_STR); + $stmt->bindValue(':icontype', $iconType, PDO::PARAM_STR); + $stmt->bindValue(':iconcontent', $iconContent, PDO::PARAM_STR); + $stmt->bindValue(':iconsize', $iconSize, PDO::PARAM_INT); + + // ユーザーIDのバインド(WHERE句に必要) + $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +設定 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ + +
+
+ +
+ +
+ +
+ + + + +
+ + +
+ + +
+

ユーザーネーム

+ +
+
+

メールアドレス

+ +
+ +
+

プロフィール

+ +
+ + + +
+

パスワード

+ +
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/success.php b/success.php new file mode 100644 index 0000000..d2cca35 --- /dev/null +++ b/success.php @@ -0,0 +1,41 @@ + + + + + + + + + + + +アカウント登録完了!!! - <?php echo file_get_contents($servernamefile);?> + + + + + + + +
+ + +
+

アカウント作成完了!

+


いぇ~い!

+

88888888888

+

アカウント登録が完了しました!

+ + +
+
+ + + + \ No newline at end of file diff --git a/sw.js b/sw.js new file mode 100644 index 0000000..024cdc2 --- /dev/null +++ b/sw.js @@ -0,0 +1,42 @@ +var CACHE_NAME = "app_uwuzu"; +var urlsToCache = [ + "home/index.php", + "search/index.php", + "require/botbox.php", + "require/leftbox.php", + "require/rightbox.php", + "require/botbox.php", + "user/index.php", + "settings/index.php", + "rule/terms.php", + "rule/privacypolicy.php", + "rule/uwuzuabout.php", + "index.php", + "login.php", + "new.php", + "check.php", + "success.php", +]; + +self.addEventListener('install', function(event) { + event.waitUntil( + caches.open(CACHE_NAME) + .then( + function(cache){ + return cache.addAll(urlsToCache); + }) + ); +}); + +self.addEventListener('fetch', function(event) { + event.respondWith( + caches.match(event.request) + .then( + function (response) { + if (response) { + return response; + } + return fetch(event.request); + }) + ); +}); \ No newline at end of file diff --git a/ueuse/index.php b/ueuse/index.php new file mode 100644 index 0000000..cec3dae --- /dev/null +++ b/ueuse/index.php @@ -0,0 +1,620 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +$ueuseid = str_replace('!', '', $_GET['ueuseid']); +$touserid = str_replace('~', '', $_GET['touser']); + + +if( !empty($_POST['btn_submit']) ) { + + $ueuse = $_POST['ueuse']; + + // メッセージの入力チェック + if( empty($ueuse) ) { + $error_message[] = '内容を入力してください。'; + } else { + + // 文字数を確認 + if( 1024 < mb_strlen($ueuse, 'UTF-8') ) { + $error_message[] = '内容は1024文字以内で入力してください。'; + } + } + + + if (empty($_FILES['upload_images']['name'])) { + $photo1 = "none"; + } else { + // アップロードされたファイル情報 + $uploadedFile = $_FILES['upload_images']; + + // アップロードされたファイルの拡張子を取得 + $extension = pathinfo($uploadedFile['name'], PATHINFO_EXTENSION); + + // 新しいファイル名を生成(uniqid + 拡張子) + $newFilename = uniqid() . '-'.$userid.'.' . $extension; + + // 保存先のパスを生成 + $uploadedPath = '../ueuseimages/' . $newFilename; + + // ファイルを移動 + $result = move_uploaded_file($uploadedFile['tmp_name'], $uploadedPath); + + if ($result) { + $photo1 = $uploadedPath; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!(1)エラーコード:' . $uploadedFile['error'].'
'.var_dump($_FILES['upload_images']); + } + } + + if (empty($_FILES['upload_images2']['name'])) { + $photo2 = "none"; + } else { + + if (empty($_FILES['upload_images']['name'])){ + $error_message[] = '画像1から画像を選択してください!!!'; + } + // アップロードされたファイル情報 + $uploadedFile2 = $_FILES['upload_images2']; + + if( 10000000 < $uploadedFile2["size"] ) { + $error_message[] = 'ファイルサイズが大きすぎます!'; + } + // アップロードされたファイルの拡張子を取得 + $extension2 = pathinfo($uploadedFile2['name'], PATHINFO_EXTENSION); + + // 新しいファイル名を生成(uniqid + 拡張子) + $newFilename2 = uniqid() . '-'.$userid.'.' . $extension2; + + // 保存先のパスを生成 + $uploadedPath2 = '../ueuseimages/' . $newFilename2; + + // ファイルを移動 + $result2 = move_uploaded_file($uploadedFile2['tmp_name'], $uploadedPath2); + + if ($result2) { + $photo2 = $uploadedPath2; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!(2)エラーコード:' . $uploadedFile2['error'].'
'.var_dump($_FILES['upload_images']); + } + } + + + if (empty($_FILES['upload_videos1']['name'])) { + $video1 = "none"; + } else { + // アップロードされたファイル情報 + $uploadedFile3 = $_FILES['upload_videos1']; + + // アップロードされたファイルの拡張子を取得 + $extension3 = strtolower(pathinfo($uploadedFile3['name'], PATHINFO_EXTENSION)); // 小文字に変換 + + // サポートされている動画フォーマットの拡張子を配列で定義 + $supportedExtensions = array("mp4", "avi", "mov", "webm"); + + if (in_array($extension3, $supportedExtensions)) { + // 正しい拡張子の場合、新しいファイル名を生成 + $newFilename3 = uniqid() . '-'.$userid.'.' . $extension3; + // 保存先のパスを生成 + $uploadedPath3 = '../ueusevideos/' . $newFilename3; + + // ファイルを移動 + $result3 = move_uploaded_file($uploadedFile3['tmp_name'], $uploadedPath3); + + if ($result3) { + $video1 = $uploadedPath3; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!エラーコード:' . $uploadedFile3['error']; + } + } else { + $error_message[] = '対応していないファイル形式です!'; + } + + + } + + if( empty($error_message) ) { + + // 書き込み日時を取得 + $datetime = date("Y-m-d H:i:s"); + $uniqid = createUniqId(); + $abi = "none"; + + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, rpuniqid, ueuse, photo1, photo2, video1, datetime, abi) VALUES (:username, :account, :uniqid, :rpuniqid, :ueuse, :photo1, :photo2, :video1, :datetime, :abi)"); + + $stmt->bindParam(':username', $username, PDO::PARAM_STR); + $stmt->bindParam(':account', $userid, PDO::PARAM_STR); + $stmt->bindParam(':uniqid', $uniqid, PDO::PARAM_STR); + $stmt->bindParam(':rpuniqid', $ueuseid, PDO::PARAM_STR); + $stmt->bindParam(':ueuse', $ueuse, PDO::PARAM_STR); + + $stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR); + $stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR); + $stmt->bindParam(':video1', $video1, PDO::PARAM_STR); + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + $stmt->bindParam(':abi', $abi, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + $pdo->beginTransaction(); + + $msg = ''.$ueuse.''; + $title = ''.$userid.'さんが返信しました!'; + $url = $_SERVER['REQUEST_URI']; + $userchk = 'none'; + // 通知用SQL作成 + $stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)"); + + $stmt->bindParam(':touserid', $touserid, PDO::PARAM_STR); + $stmt->bindParam(':msg', $msg, PDO::PARAM_STR); + $stmt->bindParam(':url', $url, PDO::PARAM_STR); + $stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR); + $stmt->bindParam(':title', $title, PDO::PARAM_STR); + + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch(Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if( $res ) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = $e->getMessage(); + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + + + +ID <?php echo htmlspecialchars($ueuseid, ENT_QUOTES, 'UTF-8'); ?> のユーズ - uwuzu + + + + + +
+ +
    + +

    + +
+ + +
+

返信

+
+ +
+
+ +

画像のEXIF情報(位置情報など)は削除されません。
情報漏洩に気をつけてくださいね…

+
+ + + + + +
+
+
+ + +
+
+ +
+
+ + + + + + +
+ + + + + + \ No newline at end of file diff --git a/user/headimage.php b/user/headimage.php new file mode 100644 index 0000000..ec757d1 --- /dev/null +++ b/user/headimage.php @@ -0,0 +1,78 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false +); +$pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + +//$row['userid'] = "daichimarukn"; + +$userid = $_GET['account']; + + +$options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, +); + +if( empty($userid) ) { + $filePath = 'img/deficon/icon.png'; + $data = file_get_contents($filePath); + header('Content-type: image/png'); + //データを出力 + echo $data; + exit(); +}else{ + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT headname, headcontent, headtype, headsize profile FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + + + header('Content-type: ' . $row['headtype']); + echo $row['headcontent']; + exit(); +} \ No newline at end of file diff --git a/user/index.php b/user/index.php new file mode 100644 index 0000000..cb1e816 --- /dev/null +++ b/user/index.php @@ -0,0 +1,646 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + + +function customStripTags($html, $allowedTags) { + $allowedTagsString = '<' . implode('><', $allowedTags) . '>'; + return strip_tags($html, $allowedTagsString); +} + +$allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); + +if( !empty($pdo) ) { + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $uwuzuid = str_replace('@', '', $_GET['uwuzuid']); + + // ユーズ内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + $userQuery = $dbh->prepare("SELECT username, userid, profile, role, follower FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $uwuzuid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + + if(!empty($userData["userid"])){ + + + $roles = explode(',', $userData["role"]); // カンマで区切られたロールを配列に分割 + + $rerole = $dbh->prepare("SELECT follow, follower, username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime FROM account WHERE userid = :userid"); + + $rerole->bindValue(':userid', $uwuzuid); + // SQL実行 + $rerole->execute(); + + $userdata = $rerole->fetch(); // ここでデータベースから取得した値を $role に代入する + + $roleDataArray = array(); + + foreach ($roles as $roleId) { + $rerole = $dbh->prepare("SELECT rolename, roleauth, rolecolor FROM role WHERE roleidname = :role"); + $rerole->bindValue(':role', $roleId); + $rerole->execute(); + $roleDataArray[$roleId] = $rerole->fetch(); + } + + + //-------フォロー数--------- + $follow = $userdata['follow']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $followIds = explode(',', $follow); + $followCount = count($followIds)-1; + + $follow_on_me = strpos($follow, $userid); + if ($follow_on_me !== false) { + $follow_yes = "フォローされています"; // worldを含む:6 + }else{ + $follow_yes = ""; // worldを含む:6 + } + + //-------フォロワー数--------- + $follower = $userdata['follower']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $followerIds = explode(',', $follower); + $followerCount = count($followerIds)-1; + + $profileText = htmlspecialchars($userData['profile'], ENT_QUOTES, 'UTF-8'); + + }else{ + $userData["userid"] = "none"; + $userData['username'] = "ゆーざーなし"; + } +} + +if (!empty($_POST['follow'])) { + // フォローボタンが押された場合の処理 + $followerList = explode(',', $userdata['follower']); + if (!in_array($userid, $followerList)) { + // 自分が相手をフォローしていない場合、相手のfollowerカラムと自分のfollowカラムを更新 + $followerList[] = $userid; + $newFollowerList = implode(',', $followerList); + + // UPDATE文を実行してフォロー情報を更新 + $updateQuery = $pdo->prepare("UPDATE account SET follower = :follower WHERE userid = :userid"); + $updateQuery->bindValue(':follower', $newFollowerList, PDO::PARAM_STR); + $updateQuery->bindValue(':userid', $userData['userid'], PDO::PARAM_STR); + $res = $updateQuery->execute(); + + // 自分のfollowカラムを更新 + $updateQuery = $pdo->prepare("UPDATE account SET follow = CONCAT_WS(',', follow, :follow) WHERE userid = :userid"); + $updateQuery->bindValue(':follow', $userData["userid"], PDO::PARAM_STR); + $updateQuery->bindValue(':userid', $userid, PDO::PARAM_STR); + $res_follow = $updateQuery->execute(); + + if ($res && $res_follow) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:" . $url); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + $stmt = null; + } +} elseif (!empty($_POST['unfollow'])) { + // フォロー解除ボタンが押された場合の処理 + $followerList = explode(',', $userdata['follower']); + if (in_array($userid, $followerList)) { + // 自分が相手をフォローしている場合、相手のfollowerカラムと自分のfollowカラムを更新 + $followerList = array_diff($followerList, array($userid)); + $newFollowerList = implode(',', $followerList); + + // UPDATE文を実行してフォロー情報を更新 + $updateQuery = $pdo->prepare("UPDATE account SET follower = :follower WHERE userid = :userid"); + $updateQuery->bindValue(':follower', $newFollowerList, PDO::PARAM_STR); + $updateQuery->bindValue(':userid', $userData['userid'], PDO::PARAM_STR); + $res = $updateQuery->execute(); + + $deluserid = ",".$userdata["userid"]; + // 自分のfollowカラムから相手のユーザーIDを削除 + $updateQuery = $pdo->prepare("UPDATE account SET follow = REPLACE(follow, :follow, '') WHERE userid = :userid"); + $updateQuery->bindValue(':follow', $deluserid, PDO::PARAM_STR); + $updateQuery->bindValue(':userid', $userid, PDO::PARAM_STR); + $res_follow = $updateQuery->execute(); + + if ($res && $res_follow) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:" . $url); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + $stmt = null; + } +} + + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + + + +<?php echo htmlspecialchars($userData['username'], ENT_QUOTES, 'UTF-8'); ?> さんのプロフィール - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ + +
+ +

このユーザーは存在しません

+ +
+ +
+
+ +

+

@

+
+ +
+ + +
;"> +

;"> + +

+
+ +
+ +
+

+
+ +
+
+
+

からuwuzuを利用しています。

+

フォロー数: フォロワー数:

+
+ + + + + + +
+ +
+ + +
+ + + + + +
+
+
+ +
+
+ + + + + + + +
+ + + + + + + + + + + \ No newline at end of file From f561ef52ed5b4c28f19dc939aeb332af1d524094 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:56:33 +0900 Subject: [PATCH 06/51] Delete abi directory --- abi/addabi.php | 40 ---------------------------------------- 1 file changed, 40 deletions(-) delete mode 100644 abi/addabi.php diff --git a/abi/addabi.php b/abi/addabi.php deleted file mode 100644 index 074c090..0000000 --- a/abi/addabi.php +++ /dev/null @@ -1,40 +0,0 @@ -beginTransaction(); - - $stmt = $pdo->prepare("UPDATE ueuse SET abi = :abi, abidate = :abidate WHERE uniqid = :uniqid"); - $stmt->bindValue(':abi', $abitext, PDO::PARAM_STR); - $stmt->bindValue(':abidate', $abidate, PDO::PARAM_STR); - $stmt->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); - - // SQLクエリの実行 - $res = $stmt->execute(); - - // コミット - $pdo->commit(); - - if ($res) { - header('Content-Type: application/json'); - echo json_encode(['success' => true]); - exit; - } else { - header('Content-Type: application/json'); - echo json_encode(['success' => false, 'error' => '追加に失敗しました。']); - exit; - } - } catch(PDOException $e) { - header('Content-Type: application/json'); - echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); - exit; - } -} -?> From 7052d22a09766ac98d586757b3a54c3986d58fa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:56:40 +0900 Subject: [PATCH 07/51] Delete api directory --- api/userdata-api.php | 75 -------------------------------------------- 1 file changed, 75 deletions(-) delete mode 100644 api/userdata-api.php diff --git a/api/userdata-api.php b/api/userdata-api.php deleted file mode 100644 index 507dcc3..0000000 --- a/api/userdata-api.php +++ /dev/null @@ -1,75 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - } catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); - } - - - if (!empty($pdo)) { - - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - )); - - $userQuery = $pdo->prepare("SELECT username,profile,datetime,follow,follower FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $search); - $userQuery->execute(); - $userdata = $userQuery->fetch(); - } -if (empty($userdata)){ - $response = array( - 'error_code' => "userid_not_found", - ); -}else{ - $followcnts = explode(',', $userdata["follow"]); - $userdata["follow_cnt"] = count($followcnts)-1; - - $followercnts = explode(',', $userdata["follower"]); - $userdata["follower_cnt"] = count($followercnts)-1; - - $response = array( - 'user_name' => $userdata["username"], - 'profile' => $userdata["profile"], - 'registered_date' => $userdata["datetime"], - 'follow' => $userdata["follow"], - 'follow_cnt' => $userdata["follow_cnt"], - 'follower' => $userdata["follower"], - 'follower_cnt' => $userdata["follower_cnt"], - ); -} -echo json_encode($response); - -}else{ - - $err = "input_not_found"; - $response = array( - 'error_code' => $err, - ); - - echo json_encode($response); -} -?> \ No newline at end of file From 7b1ef85eb1064351a9819a3bcaa8f0d1230f60aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:56:47 +0900 Subject: [PATCH 08/51] Delete css directory --- css/home.css | 3501 ------------------------------------------------- css/style.css | 855 ------------ 2 files changed, 4356 deletions(-) delete mode 100644 css/home.css delete mode 100644 css/style.css diff --git a/css/home.css b/css/home.css deleted file mode 100644 index a612299..0000000 --- a/css/home.css +++ /dev/null @@ -1,3501 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=BIZ+UDPGothic:wght@400;700&family=Josefin+Sans:ital,wght@1,700&family=Kosugi+Maru&family=Zen+Maru+Gothic:wght@500&display=swap'); - - -::-webkit-scrollbar{ - display:none; -} -::-webkit-scrollbar:hover{ - overflow: scroll; - margin-right: 10px; - border-radius: 25px; -} -body{ - width: 70%; - display: flex; - border: none; - margin-top: 0px; - margin-bottom: 0px; - margin-left: auto; - margin-right: auto; - padding-top: 12px; - background-color: #f7f7f7; - /* 画像を常に天地左右の中央に配置 */ - background-position: center center; - - /* 画像をタイル状に繰り返し表示しない */ - background-repeat: no-repeat; - - /* コンテンツの高さが画像の高さより大きい時、動かないように固定 */ - background-attachment: fixed; - - /* 表示するコンテナの大きさに基づいて、背景画像を調整 */ - background-size: cover; -} - -.irobutton{ - cursor: pointer; - border: none; - display: block; - width:50%; - margin: 32px; - padding: 8px 5%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - background-color: #FFC832; - - text-align: center; - border-radius: 50px; - color:#fff; - font-size: 22px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; -} -.irobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:55%; -} -.irobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; -} - -.sirobutton{ - cursor: pointer; - border: none; - display: block; - width:40%; - margin: 32px; - padding: 8px 10%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - - text-align: center; - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 22px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; -} -.sirobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:45%; -} -.sirobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; -} - -.inbox { - width: 96%; - padding: 8px 10px; - border: none; - border-radius: 10px; - background: #fff; - font-family: 'Zen Maru Gothic', sans-serif; - color: rgb(32,32,32); - font-size: 1em; - line-height: 1.5; - white-space: nowrap; - box-shadow:0px 0px 25px rgba(0,0,0,0.05) inset; - box-shadow:0px 0px 25px rgba(0,0,0,0.07); - overflow-x: scroll; - overflow-y : scroll ; - transition: border 350ms ease-in-out; - transition: border-bottom 150ms ease-out; - border: 1px solid #f1f1f1; - } - -.inbox::placeholder { - color: #999; -} - -.inbox:hover { - outline: none; - border: 1px solid #FFC832; -} - -.inbox:focus { - outline: none; - border: 1px solid #FFC832; - border-bottom: 3px solid #FFC832; -} - - -.errmsg{ - padding-top: 16px; - padding-bottom: 16px; - padding-left: 32px; - padding-right: 32px; - border-radius: 10px; - background-color: #ffebeb; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; - margin: 12px; - text-align: left; - color:#ff4848; - font-family: 'BIZ UDPGothic', sans-serif; - word-wrap: break-word; - line-height: 20px; - border: 1px solid #FF4848; -} - -.flexbtn{ - display: flex; -} - -.flexbtn .irobutton{ - border: none; - display: block; - width:20%; - margin: 32px; - padding: 8px 10%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - background-color: #FFC832; - - border-radius: 50px; - color:#fff; - font-size: 26px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; -} -.flexbtn.irobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:55%; -} -.flexbtn.irobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; -} - -.flexbtn.sirobutton{ - border: none; - display: block; - width:50%; - margin: 32px; - padding: 8px 10%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 26px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; -} -.flexbtn.sirobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:55%; -} -.flexbtn.sirobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; -} - - -.rolebox{ - - margin-top: 12px; - margin-bottom: 12px; - - margin-left: auto; - margin-right: auto; - - width: 120px; - padding-left: auto; - padding-right: auto; - - background-color: #fff; - border: 1px solid #FFC832; - - border-radius: 25px; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - -} - -.rolebox p{ - - color:#FFC832; - margin-top: 2px; - margin-bottom: 2px; - margin-left: 10px; - margin-right: 10px; - - text-align: center; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - -} - - -.userleftbox{ - border-radius: 17px; - margin-top: 12px; - margin-left: 12px; - margin-right: 12px; - margin-bottom: 12px; - background-color: #FFFFFF; - width: 18%; - height: 100%; - margin-left: 0px; - padding: 32px; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - border: 1px solid #FFC832; -} - -.userleftbox h1{ - font-family: 'Zen Maru Gothic', sans-serif; - margin-left: 20px; - color:#fff; - font-size: 32px; -} -.userleftbox .logo{ - display: flex; -} - -.userleftbox .logo img{ - - margin-left: auto; - margin-right: auto; - margin-top: 16px; - width: 72%; - - -} -.userleftbox .logo p{ - color:#FFC832; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 32px; - margin-left: 8px; - margin-top: auto; - margin-bottom: -4px; -} - -.leftbutton_on{ - cursor: pointer; - border: none; - display: block; - width:70%; - margin: 16px; - padding: 8px auto; - margin-left: auto; - margin-right: auto; - - padding-left: 16px; - padding-top: 8px; - padding-bottom: 8px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 20px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: left; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.leftbutton_on:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:75%; -} -.leftbutton_on:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:65%; -} - -.leftbutton{ - cursor: pointer; - border: none; - display: block; - width:70%; - margin: 16px; - padding: 8px auto; - margin-left: auto; - margin-right: auto; - - padding-left: 16px; - padding-top: 8px; - padding-bottom: 8px; - - - background-color: #FFFFFF; - - border-radius: 50px; - color:#FFC832; - font-size: 20px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: left; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.leftbutton:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:75%; -} -.leftbutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:65%; -} - -main{ - height: 95dvh; - overflow: auto; - border-radius: 17px; - margin-top: 12px; - margin-left: 12px; - margin-right: 12px; - width: 62%; - background-color: #fff; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - border: 1px solid #FFC832; -} - -main h1{ - color:#252525; - font-size: 32px; - font-family: 'Zen Maru Gothic', sans-serif; -} - -.userheader{ - margin: 12px; - border-radius: 10px; - width: auto; - height:auto; - margin-bottom: 12px; -} - -.userheader .hed img{ - object-fit: cover; - margin-top: 0px; - margin-bottom: 0px; - margin-left: auto; - margin-right: auto; - width: 100%; - height:25vh; - border-radius: 10px; -} - -.userheader .icon{ - margin-left: 24px; - display: flex; - width: auto; -} - -.userheader .icon img{ - object-fit: cover; - margin-top: -90px; - text-align: left; - width: 148px; - height:148px; - border-radius: 50%; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); -} - -.userheader h2{ - margin-left: 12px; - margin-top: auto; - margin-bottom: auto; - color:#252525; - font-size: 32px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: 900; -} - -.userheader p{ - margin-left: 12px; - margin-right: auto; - margin-top: auto; - margin-bottom: 14px; - color: #999; - font-size: 18px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: 900; -} - -.userheader .profile p{ - text-align: left; - margin-top: 12px; - margin-bottom: auto; - margin-left: 24px; - margin-right: 24px; - word-wrap: break-word; - font-size: 18px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.userheader .roleboxes{ - margin-left: 180px; - display: flex; - padding: 0px; - flex-wrap : wrap; -} - - -.userheader .rolebox{ - - margin-top: 0px; - margin-bottom: 12px; - - margin-left: 0px; - margin-right: 12px; - - width: auto; - padding-left: auto; - padding-right: auto; - - background-color: #fff; - border: 1px solid #FFC832; - - border-radius: 25px; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - -} - - -.userheader .rolebox p{ - - color:#FFC832; - margin-top: 2px; - margin-bottom: 2px; - margin-left: 10px; - margin-right: 10px; - - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - -} - -.fzone{ - margin-left: 24px; - margin-right: 24px; - margin-bottom: 24px; - width: auto; - height: 48px; - display: flex; - padding-left: 12px; - padding-right: 12px; -} - -.fzone .follow .fbtn{ - cursor: pointer; - border: none; - display: block; - width:120px; - padding: 8px auto; - - margin-left: auto; - margin-right: 0px; - margin-top: 12px; - margin-bottom: 12px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.fzone .follow .fbtn:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:125px; -} -.fzone .follow .fbtn:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:115px; -} - -.fzone .follow .fbtn_no{ - cursor: pointer; - border: none; - display: block; - width:120px; - padding: 8px auto; - - margin-left: auto; - margin-right: 0px; - margin-top: 12px; - margin-bottom: 12px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - border: 1px solid #FFC832; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.fzone .follow .fbtn_no:hover{ - background-color: #FFFAE6; - color: #FFC832; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:125px; -} -.fzone .follow .fbtn_no:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:115px; -} - -.fzone .follow .fbtn_un{ - cursor: pointer; - border: none; - display: block; - width:120px; - padding: 8px auto; - - margin-left: auto; - margin-right: 0px; - margin-top: 12px; - margin-bottom: 12px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#4e4428; - border: none; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.fzone .follow .fbtn_un:hover{ - background-color: #FFFAE6; - color: #FFC832; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:125px; -} -.fzone .follow .fbtn_un:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:115px; -} - -.fzone .time{ - margin-top: auto; - margin-bottom: 0px; - margin-left: 0px; - margin-right: auto; -} -.fzone .time p{ - margin-top: 0px; - margin-bottom: 0px; - text-align: left; - font-size: 12px; - color:#999; - font-family: 'BIZ UDPGothic', sans-serif; -} - -.fzone .time a{ - margin-top: 0px; - margin-bottom: 0px; - text-align: left; - font-size: 12px; - color:#999; - font-family: 'BIZ UDPGothic', sans-serif; -} - -.fzone .follow_yes{ - margin-top: auto; - margin-bottom: 0px; - margin-left: auto; - margin-right: auto; - background-color: #FFFAE6; - border-radius: 10px; - padding: 12px; -} -.fzone .follow_yes p{ - margin-top: 0px; - margin-bottom: 0px; - text-align: left; - font-size: 12px; - color:#252525; - font-family: 'BIZ UDPGothic', sans-serif; -} - - - -.ueuse{ - animation: slideInY 0.5s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards; - margin: 12px; - border-radius: 10px; - padding-left: 24px; - padding-right: 24px; - padding-top: 16px; - padding-bottom: 16px; - background-color: #F5F5F5; - border: 1px solid #EEE; - width: auto; -} -@keyframes slideInY { - 0% { - transform: translateY(24px); - opacity: 0; - } - 100% { - transform: translateY(0px); - } - 40%,100% { - opacity: 1; - } -} -.ueuse .flebox{ - display: flex; -} -.ueuse .flebox img{ - object-fit: cover; - margin-left: -12px; - - text-align: center; - width: 48px; - height:48px; - border-radius: 50%; -} -.ueuse .flebox a{ - margin-top: auto; - margin-bottom: auto; - margin-left: 12px; - font-size: 18px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - - - - - -.ueuse .flebox .idbox{ - margin-top: auto; - margin-bottom: auto; - margin-left: 6px; - border-radius: 10px; - background-color: #FFF; - border: 1px solid #EEE; -} -.ueuse .flebox .idbox a{ - margin-top: 6px; - margin-bottom: 6px; - margin-left: 8px; - margin-right: 8px; - text-align: center; - font-size: 12px; - color:#999; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; -} - -.ueuse p{ - line-height:20px; - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: 60px; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - - -.ueuse h1{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: 60px; - font-size: 48px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.ueuse h2{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: 60px; - font-size: 32px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.ueuse h3{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: 60px; - font-size: 24px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.ueuse center{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: auto; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.ueuse a{ - margin-top: auto; - margin-bottom: auto; - margin-left: 6px; - font-size: 16px; - color:#4e4428; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} -.ueuse p img{ - margin-top: auto; - margin-bottom: auto; - margin-left: 4px; - margin-right: 4px; - height: 32px; - vertical-align: middle; -} - -.ueuse h1 img{ - margin-top: auto; - margin-bottom: auto; - margin-left: 4px; - margin-right: 4px; - height: 64px; - vertical-align: middle; -} - -.ueuse h2 img{ - margin-top: auto; - margin-bottom: auto; - margin-left: 4px; - margin-right: 4px; - height: 48px; - vertical-align: middle; -} - -.ueuse h3 img{ - margin-top: auto; - margin-bottom: auto; - margin-left: 4px; - margin-right: 4px; - height: 48px; - vertical-align: middle; -} - -.ueuse img{ - margin-left: 60px; - margin-top: auto; - margin-bottom: auto; - margin-right: 4px; - height: 32px; - vertical-align: middle; -} - -.ueuse .flebox .time{ - margin-top: auto; - margin-bottom: auto; - margin-left: auto; - margin-right: 12px; - text-align: right; - font-size: 12px; - color:#999; - font-family: 'BIZ UDPGothic', sans-serif; -} - -.ueuse .photo1 img{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 100%; - height: 350px; - border: 1px solid #EEE; -} - -.ueuse .photo2{ - display: flex; -} - -.ueuse .photo2 img{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 47%; - height: 350px; - border: 1px solid #EEE; -} - -.ueuse .video1 video{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 100%; - height: 350px; - border: 1px solid #EEE; -} - -.ueuse .abi{ - margin-left:auto; - margin-right: auto; - margin-top: 12px; - margin-bottom: 12px; - border-radius: 10px; - padding-left: 12px; - padding-right: 12px; - padding-top: 16px; - padding-bottom: 16px; - background-color: #FFFFFF; - border: 1px solid #EEE; - width: auto; -} - - -.ueuse .abi p{ - line-height:20px; - overflow-wrap: break-word; - margin-top: 12px; - margin-bottom: 12px; - margin-left: auto; - font-size: 14px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.ueuse .abi .back{ - background-color: #FFFAE6; - padding: 12px; - border-radius: 7px; - border: 1px solid #EEE; -} - -.ueuse .abi .back h1{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: auto; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} -.ueuse .abi h3{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: auto; - font-size: 12px; - color:#999; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} -.ueuse .favbox{ - display: flex; - margin-left: 0px; - width: 100%; -} -.ueuse .favbox .favbtn{ - cursor: pointer; - border: none; - display: block; - width:auto; - padding: 8px auto; - - margin-left: 0px; - margin-right: 12px; - margin-top: 2px; - margin-bottom: 2px; - - - padding-top: 2px; - padding-bottom: 2px; - padding-left: 12px; - padding-right: 12px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: all 250ms ease-out; -} - -.ueuse .favbox .favbtn_after{ - cursor: pointer; - border: none; - display: block; - width:auto; - padding: 8px auto; - - margin-left: 0px; - margin-right: 12px; - margin-top: 2px; - margin-bottom: 2px; - - - padding-top: 2px; - padding-bottom: 2px; - padding-left: 12px; - padding-right: 12px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: all 250ms ease-out -} - - -.ueuse .favbox .tuduki{ - cursor: pointer; - border: none; - display: block; - width:auto; - padding: 8px auto; - - margin-left: 0px; - margin-right: 12px; - margin-top: 2px; - margin-bottom: 2px; - - - padding-top: 5px; - padding-bottom: 5px; - padding-left: 12px; - padding-right: 12px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} - -.ueuse .favbox .tuduki:hover{ - cursor: pointer; - border: none; - display: block; - width:auto; - padding: 8px auto; - - margin-left: 0px; - margin-right: 12px; - margin-top: 2px; - margin-bottom: 2px; - - - padding-top: 5px; - padding-bottom: 5px; - padding-left: 12px; - padding-right: 12px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} - -.ueuse .favbox .delbtn{ - cursor: pointer; - border: none; - display: block; - width:60px; - padding: 8px auto; - - margin-left: 6px; - margin-right: 0px; - margin-top: 2px; - margin-bottom: 2px; - - padding-top: 2px; - padding-bottom: 2px; - - - background-color: #F5F5F5; - - border-radius: 50px; - color:#FF4848; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} - -.ueuse .favbox .delbtn:hover{ - cursor: pointer; - border: none; - display: block; - width:60px; - padding: 8px auto; - - margin-left: 6px; - margin-right: 0px; - margin-top: 2px; - margin-bottom: 2px; - - padding-top: 2px; - padding-bottom: 2px; - - - background-color: #FF4848; - - border-radius: 50px; - color: #f5f5f5;; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} - - - -.ueuse .favbox .addabi{ - cursor: pointer; - border: none; - display: block; - width:auto; - padding: 8px auto; - - margin-left: auto; - margin-right: 6px; - margin-top: 2px; - margin-bottom: 2px; - - - padding-top: 2px; - padding-bottom: 2px; - padding-left: 12px; - padding-right: 12px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} - -.ueuse .favbox .addabi:hover{ - cursor: pointer; - border: none; - display: block; - width:auto; - - margin-left: auto; - margin-right: 6px; - margin-top: 2px; - margin-bottom: 2px; - - padding-top: 2px; - padding-bottom: 2px; - padding-left: 12px; - padding-right: 12px; - - - background-color: #FFC832; - - border-radius: 50px; - color: #FFFAE6;; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} - - -.ueuse .favbox img{ - margin-left: 0px; - width: 24px; -} - -.ueuse hr{ - height: 0; - margin-top: 12px; - margin-bottom: 12px; - padding: 0; - border: 0; - border-top: 1px solid #999; -} - - - -.tokonone p{ - text-align: center; - margin-top: 64px; - margin-bottom: 64px; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.sendbox{ - margin: 12px; - border-radius: 10px; - padding-left: 24px; - padding-right: 24px; - padding-top: 24px; - padding-bottom: 24px; - background-color: #F5F5F5; - border: 1px solid #EEE; - width: auto; -} - -.sendbox .fx{ - display: flex; - width: 100%; -} - -.sendbox .fx img{ - object-fit: cover; - margin-left: -12px; - text-align: center; - width: 58px; - height:58px; - border-radius: 50%; -} - -.sendbox p{ - line-height:20px; - text-align: left; - margin-top: 12px; - margin-bottom: 12px; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.sendbox textarea{ - background-color: #F5F5F5; - text-align: left; - margin-left: auto; - margin-right: auto; - width:100%; - height:90px; - border-radius: 10px; - outline: none; - border: none; - resize: none; - font-size: 18px; -} - -.sendbox .fxbox{ - display: flex; -} - -.sendbox label > input { - display:none; /* アップロードボタンのスタイルを無効にする */ -} - -.sendbox label{ - cursor: pointer; - border: none; - display: block; - width:6%; - padding: 8px auto; - margin-left: 6px; - margin-right: 6px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.sendbox label:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:7%; -} -.sendbox label:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:5%; -} -.sendbox label img{ - vertical-align:bottom; - width: 24px; -} -.sendbox .fxbox p{ - line-height:20px; - text-align: left; - margin-top: auto; - margin-bottom: auto; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - - - -.ueusebtn{ - cursor: pointer; - border: none; - display: block; - width:20%; - padding: 8px auto; - margin-left: auto; - margin-right: 0px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.ueusebtn:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:21%; -} -.ueusebtn:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:19%; -} -/*--------------------------*/ - -.ueuse2{ - margin: 12px; - border-radius: 10px; - padding-left: 24px; - padding-right: 24px; - padding-top: 16px; - padding-bottom: 16px; - background-color: #F5F5F5; - border: 1px solid #EEE; - width: auto; -} -.ueuse2 .flebox{ - display: flex; -} -.ueuse2 .flebox img{ - object-fit: cover; - margin-left: -12px; - - text-align: center; - width: 64px; - height:64px; - border-radius: 50%; -} -.ueuse2 .flebox a{ - margin-top: auto; - margin-bottom: auto; - margin-left: 12px; - font-size: 26px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.ueuse2 .flebox .idbox{ - margin-top: auto; - margin-bottom: auto; - margin-left: 6px; - border-radius: 10px; - background-color: #FFF; - border: 1px solid #EEE; -} -.ueuse2 .flebox .idbox a{ - margin-top: 6px; - margin-bottom: 6px; - margin-left: 8px; - margin-right: 8px; - text-align: center; - font-size: 16px; - color:#999; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; -} - -.ueuse2 p{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: 80px; - font-size: 22px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} -.ueuse2 a{ - margin-top: auto; - margin-bottom: auto; - margin-left: 6px; - font-size: 16px; - color:#4e4428; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} -.ueuse2 p img{ - margin-top: auto; - margin-bottom: auto; - margin-left: 4px; - margin-right: 4px; - height: 32px; - vertical-align: middle; -} - -.ueuse2 .flebox .time{ - margin-top: auto; - margin-bottom: auto; - margin-left: auto; - margin-right: 12px; - text-align: right; - font-size: 12px; - color:#999; - font-family: 'BIZ UDPGothic', sans-serif; -} - -.ueuse2 .photo1 img{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 100%; - height: 25dvh; - border: 1px solid #EEE; -} - -.ueuse2 .photo2{ - display: flex; -} - -.ueuse2 .photo2 img{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 47%; - height: 350px; - border: 1px solid #EEE; -} - -.ueuse2 .video1 video{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 100%; - height: 350px; - border: 1px solid #EEE; -} - -.formarea{ - padding-top: 16px; - padding-bottom: 16px; - padding-left: 32px; - padding-right: 32px; - border-radius: 15px; - background-color: #f7f7f7; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; - text-align: left; -} - -.formarea p{ - overflow-wrap: break-word; - margin-top: 24px; - margin-bottom: 24px; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.formarea .iconimg{ - margin-left: auto; - margin-right: auto; - text-align: center; -} - -.formarea .iconimg img{ - object-fit: cover; - margin-top: -64px; - margin-left: auto; - margin-right: auto; - text-align: center; - width: 100px; - height:100px; - border-radius: 50%; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); -} -.formarea .hed img{ - object-fit: cover; - object-fit: cover; - margin-top: 0px; - margin-bottom: 0px; - margin-left: auto; - margin-right: auto; - width: 100%; - height:25vh; - border-radius: 10px; -} - -.formarea .sub{ - display: flex; - margin: 48px; - margin-left: auto; - margin-right: auto; -} -label>input { - display:none; /* アップロードボタンのスタイルを無効にする */ -} -.imgbtn{ - cursor: pointer; - border: none; - display: block; - width:25%; - padding: 8px auto; - margin-left: auto; - margin-right: auto; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.imgbtn:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:19%; -} -.imgebtn:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:21%; -} - -.imgbtn2{ - cursor: pointer; - border: none; - display: block; - width:20%; - padding: 8px auto; - margin-top: -64px; - margin-left: 12px; - margin-right: auto; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.imgbtn2:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:19%; -} -.imgebtn2:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:21%; -} - -.modal { - display: none; - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.5); - z-index: 9999; -} - -.show { - display: block; -} -.modal-content { - background-color: #fff; - padding: 16px; - border-radius: 10px; - width: 60%; - max-width: 400px; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); -} - -.modal-content textarea{ - background-color: #F5F5F5; - text-align: left; - margin-left: auto; - margin-right: auto; - width:100%; - height:90px; - border-radius: 10px; - outline: none; - border: none; - resize: none; - font-size: 18px; -} -.modal-content p{ - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.modal-content h1{ - font-size: 24px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.modal-content .btn_area{ - display: flex; - width: 70%; - margin-left: auto; - margin-right: 0px; -} - -.modal-content .fbtn{ - cursor: pointer; - border: none; - display: block; - width:120px; - padding: 8px auto; - - margin-left: auto; - margin-right: 6px; - margin-bottom: 0px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.modal-content .fbtn:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:125px; -} -.modal-content .fbtn:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:115px; -} - -.modal-content .fbtn_no{ - cursor: pointer; - border: none; - display: block; - width:120px; - padding: 8px auto; - - margin-left: auto; - margin-right: 0px; - margin-bottom: 0px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - border: 1px solid #FFC832; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.modal-content .fbtn_no:hover{ - background-color: #FFFAE6; - color: #FFC832; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:125px; -} -.modal-content .fbtn_no:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:115px; -} - -.topbox { - position: fixed; - - top: 0; - left: 0; - width: 100%; - height: 44px; - padding-top: 0.0%; - padding-bottom: 0.2%; - padding-left: 23%; - - background-color: #FFC832; - box-shadow: 0px 0px 30px rgba(0,0,0,0.1); - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 2em; - text-align: left; - color: #fff; - -} - -.topbox .logo img{ - margin-left: 0px; - margin-right: auto; - margin-top: 2px; - width: 120px; -} - -.terms{ - overflow-wrap: break-word; - margin-left: auto; - margin-right: auto; - width: 77%; - margin-top: 64px; - margin-bottom: 64px; - background-color: #f7f7f7; -} - -.terms h1{ - line-height:32px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 48px; - text-align: left; - color: #252525; -} - -.terms h2{ - line-height:32px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 48px; - text-align: left; - color: #252525; -} - -.terms h3{ - line-height:28px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 32px; - text-align: left; - color: #252525; -} - -.terms h4{ - line-height:24px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 24px; - text-align: left; - color: #252525; -} - -.terms p{ - margin-top: 2px; - margin-bottom: 2px; - line-height:24px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 16px; - text-align: left; - color: #252525; -} - -.terms img{ - background-color: #FFF; - background: linear-gradient(45deg, #CCC 25%, transparent 25%, transparent 75%, #CCC 75%), - linear-gradient(45deg, #CCC 25%, transparent 25%, transparent 75%, #CCC 75%); - background-size: 20px 20px; - background-position: 0 0, 10px 10px; - object-fit: cover; - width: auto; - height: 40dvh; - margin: 12px; - border-radius: 15px; -} -.terms .code{ - background-color: #252525; - border-radius: 15px; - padding: 12px; -} - -.terms .code p{ - line-height:24px; - margin-right: 12px; - margin-left: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 16px; - text-align: left; - color: #FFFFFF; -} - - -.terms .p2c{ - margin-top: 0px; - margin-bottom: 10px; - text-align: left; - word-wrap: break-word; - line-height: 20px; - color: #868686; - font-size: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; -} - -.terms .p3{ - margin-top: 24px; - text-align: left; - word-wrap: break-word; - line-height: 24px; - color: #252525; - font-size: 22px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.terms ul{ - margin-top: 6px; - margin-bottom: 6px; - font-family: 'BIZ UDPGothic', sans-serif; - line-height: 20px; -} - -.terms .err404 h1{ - margin-top: 256px; - line-height:64px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 64px; - text-align: center; - color: #252525; -} - -.terms .err404 p{ - margin-top: 2px; - margin-bottom: 2px; - line-height:32px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 16px; - text-align: center; - color: #252525; -} - - -.rightbox{ - position: relative; - border-radius: 17px; - margin-top: 12px; - margin-left: 12px; - margin-right: 12px; - width: 24%; - background-color: #fff; - padding: 12px; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - border: 1px solid #FFC832; -} - -.rightbox h1{ - - margin-top: 12px; - margin-bottom: 0px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 28px; - text-align: left; - color: #252525; -} - -.rightbox .noticearea{ - width: auto; - height: 52dvh; - overflow: scroll; - border-radius: 10px; -} - -.rightbox .noticebox{ - overflow-wrap: break-word; - border-radius: 10px; - margin-top: 12px; - margin-bottom: 12px; - margin-left: auto; - margin-right: auto; - width: auto; - background-color: #F5F5F5; - border: 1px solid #EEE; - width: auto; - padding: 12px; -} - -.rightbox .noticebox h4{ - margin-top: 2px; - margin-bottom: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 20px; - text-align: left; - color: #252525; -} - -.rightbox .noticebox p{ - line-height: 20px; - margin-top: 2px; - margin-bottom: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 16px; - text-align: left; - color: #252525; -} - -.rightbox .noticebox img{ - margin-top: auto; - margin-bottom: auto; - margin-left: 4px; - margin-right: 4px; - height: 32px; - vertical-align: middle; -} - -.rightbox .noticebox .makeup p{ - line-height: 20px; - margin-top: 2px; - margin-bottom: 2px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 16px; - text-align: left; - color: #252525; -} - -.rightbox .noticebox .makeup a{ - margin-top: 24px; - margin-bottom: auto; - margin-left: 0px; - font-size: 16px; - color:#4e4428; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.rightbox .noticebox .time{ - margin-top: 4px; - margin-bottom: auto; - margin-left: 0px; - margin-right: auto; -} -.rightbox .noticebox .time p{ - margin-top: 0px; - margin-bottom: 0px; - text-align: left; - font-size: 12px; - color:#999; - font-family: 'BIZ UDPGothic', sans-serif; -} - - - -.rightbox .btmbox{ - position: absolute; - bottom: 12px; /*下に固定*/ - height: 31dvh; - width: 90%; -} - -.rightbox .btmbox h2{ - margin-top: 12px; - margin-bottom: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 20px; - text-align: left; - color: #252525; -} - -.rightbox .btmbox h3{ - margin-top: 2px; - margin-bottom: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 20px; - text-align: left; - color: #252525; -} - -.rightbox .btmbox p{ - - line-height: 20px; - margin-top: 2px; - margin-bottom: 2px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 14px; - text-align: left; - color: #252525; -} - -.rightbox .btmbox a{ - margin-top: 24px; - margin-bottom: auto; - margin-left: 0px; - margin-right: 6px; - font-size: 14px; - color:#4e4428; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - - - -.loading { - text-align: center; - font-size: 48px; /* 絵文字のサイズ */ - animation: rotate 0.5s infinite linear; /* アニメーションを適用 */ -} - -@keyframes rotate { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -.emojibox{ - margin-left: 12px; - margin-right: 12px; - padding: 12px; - width: auto; -} - -.emojizone{ - margin-left: 0px; - margin-right: 0px; - margin-top: 12px; -} - -.emjtex{ - background-color: #F5F5F5; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - padding: 12px; - border-radius: 10px; - border: 1px solid #EEE; -} - -.emjtex .fx{ - display: flex; -} - -.emjtex img{ - margin-top: auto; - margin-bottom: auto; - margin-left: 4px; - margin-right: 4px; - height: 64px; -} - -.emjtex h3{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: 12px; - font-size: 24px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.emjtex p{ - overflow-wrap: break-word; - margin-top: 12px; - margin-bottom: auto; - margin-left: 12px; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.rp p{ - overflow-wrap: break-word; - margin-top: 0px; - margin-bottom: 6px; - margin-left: 12px; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - - - -.notification{ - animation: slideInY 0.5s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards; - margin: 12px; - border-radius: 10px; - padding-left: 24px; - padding-right: 24px; - padding-top: 16px; - padding-bottom: 16px; - background-color: #F5F5F5; - border: 1px solid #EEE; - width: auto; -} -@keyframes slideInY { - 0% { - transform: translateY(24px); - opacity: 0; - } - 100% { - transform: translateY(0px); - } - 40%,100% { - opacity: 1; - } -} -.notification .flebox{ - display: flex; -} - -.notification .flebox a{ - margin-top: auto; - margin-bottom: auto; - margin-left: 12px; - font-size: 18px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.notification .flebox .idbox{ - margin-top: auto; - margin-bottom: auto; - margin-left: 6px; - border-radius: 10px; - background-color: #FFF; - border: 1px solid #EEE; -} -.notification .flebox .idbox a{ - margin-top: 6px; - margin-bottom: 6px; - margin-left: 8px; - margin-right: 8px; - text-align: center; - font-size: 12px; - color:#999; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; -} - -.notification p{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: 12px; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.notification h3{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: 6px; - margin-left: 12px; - font-size: 24px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - - -.notification .flebox .time{ - margin-top: auto; - margin-bottom: auto; - margin-left: auto; - margin-right: 12px; - text-align: right; - font-size: 12px; - color:#999; - font-family: 'BIZ UDPGothic', sans-serif; -} - -.notification a{ - overflow-wrap: break-word; - margin-top: 24px; - margin-bottom: auto; - margin-left: 12px; - font-size: 16px; - color:#4e4428; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -hr{ - height: 0; - margin-top: 12px; - margin-bottom: 12px; - padding: 0; - border: 0; - border-top: 1px solid #FFC832; -} - - -.search_btn{ - margin-top: 24px; - cursor: pointer; - border: none; - display: block; - width:20%; - padding: 8px auto; - margin-left: auto; - margin-right: 0px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.search_btn:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:21%; -} -.search_btn:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:19%; -} - -.botbox{ - display: none; -} - -/*------------------------------------------------------------------------------------------------------------*/ -/*--------------------------------------------------スマホ向け--------------------------------------------------*/ -/*--------------------------------------------------ここから--------------------------------------------------*/ -/*------------------------------------------------------------------------------------------------------------*/ - -@media screen and (max-width:1010px) { - body{ - width: 100%; - display: block; - border: none; - margin-top: 0px; - margin-bottom: 0px; - margin-left: auto; - margin-right: auto; - padding-top: 0px; - } - - .userleftbox{ - display: none; - } - - .userheader .icon{ - margin-left: 24px; - display: block; - width: auto; - } - - main{ - height: 88dvh; - overflow: auto; - border-radius: 0px; - margin-top: 0px; - margin-left: 0px; - margin-right: 0px; - width: auto; - background-color: #fff; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - border: none; - border-bottom: 1px solid #FFC832; - } - - main h1{ - color:#252525; - font-size: 32px; - font-family: 'Zen Maru Gothic', sans-serif; - } - - .sendbox .fx img{ - object-fit: cover; - margin-left: -12px; - text-align: center; - width: 58px; - height:58px; - border-radius: 50%; - } - - .sendbox p{ - line-height:20px; - text-align: left; - margin-top: 12px; - margin-bottom: 12px; - font-size: 14px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - } - - .sendbox .fxbox{ - display: flex; - } - - .sendbox label > input { - display:none; /* アップロードボタンのスタイルを無効にする */ - } - - .sendbox label{ - width:10%; - padding: 8px auto; - margin-left: 6px; - margin-right: 6px; - padding-top: 6px; - padding-bottom: 6px; - } - .sendbox label:hover{ - width:11%; - } - .sendbox label:active{ - width:9%; - } - .sendbox label img{ - vertical-align:bottom; - width: 24px; - } - .sendbox .fxbox p{ - line-height:20px; - text-align: left; - margin-top: auto; - margin-bottom: auto; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - } - - .ueusebtn{ - width:30%; - } - .ueusebtn:hover{ - width:31%; - } - .ueusebtn:active{ - width:29%; - } - - .rightbox{ - display: none; - } - - .botbox{ - display: block; - } - - .botbox .lbtnzone{ - display: flex; - width: 90%; - margin-left: auto; - margin-right: auto; - } - - - .btmbutton{ - cursor: pointer; - border: none; - display: block; - width:28%; - margin: 16px; - padding: 8px auto; - height: auto; - margin-left: 12px; - margin-right: 12px; - - padding-top: 14px; - padding-bottom: 14px; - background-color: #FFFFFF; - - border-radius: 50px; - color:#FFC832; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - border: 1px solid #FFC832; - } - .btmbutton:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:29%; - } - .btmbutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:27%; - } - - .ueuse .favbox .tuduki{ - - display: block; - width:26%; - padding: 8px auto; - - margin-left: 0px; - margin-right: 12px; - margin-top: 2px; - margin-bottom: 2px; - - - padding-top: 8px; - padding-bottom: 8px; - padding-left: 6px; - padding-right: 6px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 12px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - } - - .ueuse .favbox .tuduki:hover{ - background-color: #FFC832; - - margin-left: 0px; - margin-right: 12px; - margin-top: 2px; - margin-bottom: 2px; - - - padding-top: 8px; - padding-bottom: 8px; - padding-left: 6px; - padding-right: 6px; - - width:28%; - border-radius: 50px; - color:#FFFAE6; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - font-size: 12px; - text-decoration:none; - text-align: center; - } - - .ueuse .favbox .delbtn{ - cursor: pointer; - border: none; - display: block; - width:60px; - padding: 8px auto; - - margin-left: 6px; - margin-right: 0px; - margin-top: 2px; - margin-bottom: 2px; - - padding-top: 2px; - padding-bottom: 2px; - - - background-color: #F5F5F5; - - border-radius: 50px; - color:#FF4848; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; - } - - .ueuse .favbox .delbtn:hover{ - cursor: pointer; - border: none; - display: block; - width:60px; - padding: 8px auto; - - margin-left: 6px; - margin-right: 0px; - margin-top: 2px; - margin-bottom: 2px; - - padding-top: 2px; - padding-bottom: 2px; - - - background-color: #FF4848; - - border-radius: 50px; - color: #f5f5f5;; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; - } - - - - .ueuse .favbox .addabi{ - cursor: pointer; - border: none; - display: block; - width:auto; - padding: 8px auto; - - margin-left: auto; - margin-right: 6px; - margin-top: 2px; - margin-bottom: 2px; - - - padding-top: 2px; - padding-bottom: 2px; - padding-left: 12px; - padding-right: 12px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; - } - - .ueuse .favbox .addabi:hover{ - cursor: pointer; - border: none; - display: block; - width:auto; - - margin-left: auto; - margin-right: 6px; - margin-top: 2px; - margin-bottom: 2px; - - padding-top: 2px; - padding-bottom: 2px; - padding-left: 12px; - padding-right: 12px; - - - background-color: #FFC832; - - border-radius: 50px; - color: #FFFAE6;; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; - } - - - .ueuse .favbox img{ - margin-left: 0px; - width: 24px; - } - - .leftbox{ - display: block; - border-radius: 17px; - margin-top: 12px; - margin-left: 12px; - margin-right: 12px; - margin-bottom: 12px; - background-color: #FFFFFF; - width: 18%; - height: 100%; - margin-left: 0px; - padding: 32px; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - border: 1px solid #FFC832; - } - - .leftbox h1{ - font-family: 'Zen Maru Gothic', sans-serif; - margin-left: 20px; - color:#fff; - font-size: 32px; - } - .leftbox .logo{ - display: flex; - } - - .leftbox .logo img{ - - margin-left: auto; - margin-right: auto; - margin-top: 16px; - width: 72%; - - - } - .leftbox .logo p{ - color:#FFC832; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 32px; - margin-left: 8px; - margin-top: auto; - margin-bottom: -4px; - } - - .imgbtn{ - width:40%; - } - .imgbtn:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:35%; - } - .imgebtn:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; - } - - .imgbtn2{ - cursor: pointer; - border: none; - display: block; - width:20%; - padding: 8px auto; - margin-top: -64px; - margin-left: 12px; - margin-right: auto; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; - } - .imgbtn2:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:19%; - } - .imgebtn2:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:21%; - } - - .topbox { - position: absolute; - - top: 0; - left: 0; - width: 90%; - margin-left: 0px; - margin-right: 0px; - height: 44px; - padding-top: 0.0%; - padding-bottom: 0.2%; - padding-left: 10%; - } - - .topbox .logo img{ - margin-left: 0px; - margin-right: auto; - margin-top: 2px; - width: 120px; - } - - .terms{ - overflow-wrap: break-word; - margin-left: auto; - margin-right: auto; - width: 90%; - margin-top: 64px; - margin-bottom: 64px; - background-color: #f7f7f7; - } - - .terms h1{ - line-height:52px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 48px; - text-align: left; - color: #252525; - } - - .terms h2{ - line-height:52px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 48px; - text-align: left; - color: #252525; - } - - .terms h3{ - line-height:36px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 32px; - text-align: left; - color: #252525; - } - - .terms h4{ - line-height:24px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 24px; - text-align: left; - color: #252525; - } - - .terms p{ - margin-top: 2px; - margin-bottom: 2px; - line-height:24px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 16px; - text-align: left; - color: #252525; - } - - .terms img{ - - object-fit: cover; - width: auto; - height: auto; - margin-top: 12px; - margin-bottom: 12px; - margin-left: auto; - margin-right: auto; - border-radius: 15px; - } - - .terms .code{ - background-color: #252525; - border-radius: 15px; - padding: 12px; - } - - .terms .code p{ - line-height:24px; - margin-right: 12px; - margin-left: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 16px; - text-align: left; - color: #FFFFFF; - } - - - .terms .p2c{ - margin-top: 0px; - margin-bottom: 10px; - text-align: left; - word-wrap: break-word; - line-height: 20px; - color: #868686; - font-size: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - } - - .terms .p3{ - margin-top: 24px; - text-align: left; - word-wrap: break-word; - line-height: 24px; - color: #252525; - font-size: 22px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - } - - .terms .err404 h1{ - margin-top: 128px; - line-height:64px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 64px; - text-align: center; - color: #252525; - } - - - .ueuse .photo1 img{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 100%; - height: auto; - border: 1px solid #EEE; - } - - .ueuse .photo2{ - display: flex; - } - - .ueuse .photo2 img{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 47%; - height: auto; - border: 1px solid #EEE; - } - - .ueuse .video1 video{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 100%; - height: auto; - border: 1px solid #EEE; - } - -} - -/*------------------------------------------------------------------------------------------------------------*/ -/*--------------------------------------------------ダークモード--------------------------------------------------*/ -/*--------------------------------------------------ここから--------------------------------------------------*/ -/*------------------------------------------------------------------------------------------------------------*/ - -@media (prefers-color-scheme: dark) { - - body{ - background-color: #0c0c0c; - } - .errmsg{ - background-color: #3a3333; - color:#ff4848; - border: 1px solid #FF4848; - } - .rolebox{ - background-color: #0c0c0c; - border: 1px solid #FFC832; - } - - .userleftbox{ - background-color: #181616; - border: none; - } - - .leftbutton{ - background-color: #181616; - color:#FFFAE6; - } - .leftbutton:hover{ - background-color: #FFFAE6; - color: #0c0c0c; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:75%; - } - .leftbutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:65%; - } - - main{ - background-color: #0c0c0c; - border: none; - } - - main h1{ - color:#FFFAE6; - font-size: 32px; - font-family: 'Zen Maru Gothic', sans-serif; - } - - - .ueuse{ - background-color: #181616; - border: none; - } - .ueuse .flebox a{ - color:#FFFAE6; - } - - .ueuse .flebox .idbox{ - background-color: #302c2c; - border: none; - } - .ueuse .flebox .idbox a{ - color:#CCC; - } - - .ueuse p{ - color:#FFF; - } - - - .ueuse h1{ - color:#FFF; - } - - .ueuse h2{ - color:#FFF; - } - - .ueuse h3{ - color:#FFF; - } - - .ueuse center{ - color:#FFF; - } - - .ueuse a{ - color:#FFC832; - } - - .ueuse .flebox .time{ - color:#CCC; - } - - .ueuse .photo1 img{ - border: none; - } - - .ueuse .photo2{ - display: flex; - } - - .ueuse .photo2 img{ - border: none; - } - - .ueuse .video1 video{ - border: none; - } - - .ueuse .abi{ - background-color: #0c0c0c; - border: none; - } - - .ueuse .abi p{ - color:#FFFAE6; - } - - .ueuse .abi .back{ - background-color: #FFC832; - border: none; - } - - .ueuse .abi .back h1{ - color:#252525; - } - .ueuse .abi h3{ - color:#CCC; - } - .ueuse .favbox .favbtn{ - background-color: #0c0c0c; - color:#FFC832; - } - .ueuse .favbox .favbtn_after{ - background-color: #FFC832; - color:#FFFAE6; - } - .ueuse .favbox .tuduki{ - background-color: #0c0c0c; - color:#FFC832; - } - .ueuse .favbox .tuduki:hover{ - background-color: #FFC832; - color:#FFFAE6; - } - .ueuse .favbox .delbtn{ - background-color: #0c0c0c; - color:#FF4848; - } - .ueuse .favbox .delbtn:hover{ - background-color: #FF4848; - color: #f5f5f5;; - } - .ueuse .favbox .addabi{ - background-color: #0c0c0c; - color:#FFC832; - } - .ueuse .favbox .addabi:hover{ - background-color: #FFC832; - color: #FFFAE6;; - } - .ueuse hr{ - border-top: 1px solid #CCC; - } - - .userheader h2{ - color:#FFFAE6; - } - - .userheader p{ - color: #CCC; - } - - .userheader .profile p{ - color:#FFFAE6; - } - - .userheader .rolebox{ - background-color: #181616; - border: 1px solid #FFC832; - } - - .fzone .follow .fbtn{ - background-color: #FFC832; - color:#FFFAE6; - } - .fzone .follow .fbtn:hover{ - background-color: #FFC832; - color: #FFFAE6; - } - - .fzone .follow .fbtn_no{ - background-color: #181616; - color:#FFC832; - border: 1px solid #FFC832; - } - .fzone .follow .fbtn_no:hover{ - background-color: #181616; - color: #FFC832; - } - .fzone .time p{ - color:#CCC; - } - .fzone .time a{ - color:#CCC; - } - .fzone .follow_yes{ - background-color: #181616; - } - .fzone .follow_yes p{ - color:#FFFAE6; - } - - - .rightbox{ - background-color: #0c0c0c; - border:none; - } - - .rightbox h1{ - color: #CCC; - } - - .rightbox .noticebox{ - background-color: #181616; - border: none; - } - - .rightbox .noticebox h4{ - color: #FFF; - } - - .rightbox .noticebox p{ - color: #FFF; - } - - .rightbox .noticebox .makeup p{ - color:#FFFAE6;; - } - - .rightbox .noticebox .makeup a{ - color:#FFC832; - } - .rightbox .noticebox .time p{ - color:#CCC; - } - .rightbox .btmbox h2{ - color: #CCC; - } - - .rightbox .btmbox h3{ - color: #CCC; - } - - .rightbox .btmbox p{ - color: #FFF; - } - - .rightbox .btmbox a{ - color:#FFC832; - } - - .sendbox{ - background-color: #181616; - border:none; - } - - .sendbox p{ - color: #FFF;; - } - - .sendbox textarea{ - background-color: #181616; - color:#CCC; - } - .sendbox .fxbox p{ - color:#FFFAE6; - } - - - .emjtex{ - background-color: #181616; - border: none; - } - - .emjtex h3{ - color:#FFF; - } - - .emjtex p{ - color:#CCC; - } - - .formarea{ - background-color: #181616; - } - - .formarea p{ - color:#CCC; - } - - - .modal-content { - background-color: #181616; - } - - .modal-content textarea{ - background-color: #181616; - color:#CCC; - } - .modal-content p{ - color:#CCC; - } - - .modal-content h1{ - color:#FFF; - } - - .modal-content .fbtn_no{ - background-color: #181616; - color:#FFC832; - border: 1px solid #FFC832; - } - .modal-content .fbtn_no:hover{ - background-color: #181616; - color: #FFC832; - } - - .inbox { - background: #0c0c0c; - color: #FFF; - border: none; - } - - .inbox::placeholder { - color: #999; - } - - .inbox:hover { - outline: none; - border: 1px solid #FFC832; - } - - .inbox:focus { - outline: none; - border: 1px solid #FFC832; - border-bottom: 3px solid #FFC832; - } - - .btmbutton{ - background-color: #FFC832; - color:#FFFAE6; - border: none; - } - .btmbutton:hover{ - background-color: #FFC832; - color: #FFFAE6; - } - - - .terms{ - background-color: #0c0c0c; - } - - .terms h1{ - color: #CCC; - } - - .terms h2{ - color: #FFF; - } - - .terms h3{ - color: #FFF; - } - - .terms h4{ - color: #FFF; - } - - .terms p{ - color: #FFF; - } - - .terms .code{ - background-color: #CCC; - } - - .terms .code p{ - color: #252525; - } - - .terms ul{ - color: #FFF; - } - - .terms .p2c{ - color: #CCC; - } - - .terms .p3{ - color: #FFF; - } - - .terms .err404 h1{ - color: #CCC; - } - - .terms .err404 p{ - color: #FFF; - } - - .notification{ - background-color: #181616; - border: none; - } - - .notification .flebox a{ - color:#CCC5; - } - - .notification p{ - color:#FFF; - } - - .notification h3{ - color:#CCC; - } - - - .notification .flebox .time{ - color:#CCC; - } - - .notification a{ - color:#FFC832; - } - .tokonone p{ - color:#CCC; - } -} \ No newline at end of file diff --git a/css/style.css b/css/style.css deleted file mode 100644 index 1c95c43..0000000 --- a/css/style.css +++ /dev/null @@ -1,855 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=BIZ+UDPGothic:wght@400;700&family=Josefin+Sans:ital,wght@1,700&family=Kosugi+Maru&family=Zen+Maru+Gothic:wght@500&display=swap'); - -body{ - display: flex; - border: none; - margin-top: 0px; - margin-bottom: 0px; - margin-left: auto; - margin-right: 0px; - background-color: #FFFFFF; - /* 画像を常に天地左右の中央に配置 */ - background-position: center center; - - /* 画像をタイル状に繰り返し表示しない */ - background-repeat: no-repeat; - - /* コンテンツの高さが画像の高さより大きい時、動かないように固定 */ - background-attachment: fixed; - - /* 表示するコンテナの大きさに基づいて、背景画像を調整 */ - background-size: cover; -} - -.leftbox{ - margin-top: 0px; - margin-bottom: 0px; - background-color: #FFC832; - width: 35%; - height: 100%; - margin-left: 0px; - padding: 32px; -} - -.leftbox h1{ - margin-left: 20px; - color:#fff; - font-size: 2em; -} -.leftbox .logo{ - display: flex; -} - -.leftbox .logo img{ - - margin-left: 16px; - margin-top: 16px; - width: 200px; - -} -.leftbox .logo p{ - color:#fff; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 32px; - margin-left: 8px; - margin-top: auto; - margin-bottom: -4px; -} - -.leftbox2{ - margin-top: 0px; - margin-bottom: 0px; - background-color: #FFC832; - width: 35%; - height: 100vh; - margin-left: 0px; - padding: 32px; -} - -.leftbox2 h1{ - margin-left: 20px; - color:#fff; - font-size: 2em; -} -.leftbox2 .logo{ - display: flex; -} - -.leftbox2 .logo img{ - - margin-left: 16px; - margin-top: 16px; - width: 200px; - -} -.leftbox2 .logo p{ - color:#fff; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 32px; - margin-left: 8px; - margin-top: auto; - margin-bottom: -4px; -} - -.textbox{ - padding: 32px; - width: auto; - margin-left: 24px; - margin-right: 24px; - margin-top: 64px; - margin-bottom: 100px; - border-radius: 25px; - background-color: #fff; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); -} - -.textbox h1{ - word-wrap: break-word; - margin: 0px; - color: #FFC832; - font-size: 32px; - font-family: 'Zen Maru Gothic', sans-serif; -} - -.textbox h2{ - word-wrap: break-word; - margin: 0px; - color: #252525; - text-align: center; - font-size: 32px; - font-family: 'Zen Maru Gothic', sans-serif; -} - -.textbox h3{ - word-wrap: break-word; - margin: 0px; - color: #252525; - text-align: center; - font-size: 18px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; -} - -.textbox p{ - word-wrap: break-word; - line-height: 20px; - color: #252525; - font-size: 16px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; -} - -.textbox .p2{ - margin-top: 0px; - margin-bottom: 10px; - word-wrap: break-word; - line-height: 20px; - color: #868686; - font-size: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; -} - -.textbox .p2c{ - margin-top: 0px; - margin-bottom: 10px; - text-align: center; - word-wrap: break-word; - line-height: 20px; - color: #868686; - font-size: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; -} - -.textbox .p3{ - margin-top: 24px; - text-align: center; - word-wrap: break-word; - line-height: 24px; - color: #252525; - font-size: 22px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.textbox .maillink{ - word-wrap: break-word; - line-height: 20px; - color: #4e4428; - text-decoration: none; - font-size: 16px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; -} - -.textbox .cntzone{ - display: flex; - width: 100%; - padding: 0px; -} - -.textbox .cntzone .usercnt{ - margin-top: 24px; - margin-left: 12px; - margin-right: 12px; - width: 43%; - height: 5dvh; - border-radius: 15px; - background-color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; - padding: 18px; -} - -.textbox .cntzone .usercnt .p1{ - display: block; - margin-top: 0px; - margin-bottom: 6px; - text-align: left; - word-wrap: break-word; - color: #868686; - font-size: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; -} - -.textbox .cntzone .usercnt p{ - margin-top: 0px; - margin-bottom: 8px; - text-align: left; - word-wrap: break-word; - line-height: 24px; - color: #252525; - font-size: 20px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.btnbox{ - padding-top: 16px; - padding-bottom: 16px; - padding-left: 32px; - padding-right: 32px; - border-radius: 15px; - background-color: #f7f7f7; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; - margin-top: 32px; - text-align: center; - margin-left: auto; - margin-right: auto; - -} - -label > input { - display:none; /* アップロードボタンのスタイルを無効にする */ -} - -.irobutton{ - cursor: pointer; - border: none; - display: block; - width:40%; - margin: 32px; - padding: 8px 10%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - background-color: #FFC832; - - text-align: center; - border-radius: 50px; - color:#fff; - font-size: 22px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; -} -.irobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:45%; -} -.irobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:35%; -} - -.sirobutton{ - cursor: pointer; - border: none; - display: block; - width:40%; - margin: 32px; - padding: 8px 10%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - - text-align: center; - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 22px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; -} -.sirobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:45%; -} -.sirobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; -} - -.formarea{ - padding-top: 16px; - padding-bottom: 16px; - padding-left: 32px; - padding-right: 32px; - border-radius: 15px; - background-color: #f7f7f7; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; - margin-top: 64px; - text-align: left; - margin-left: auto; - margin-right: auto; -} - -.formarea .iconimg{ - margin-left: auto; - margin-right: auto; - text-align: center; -} - -.formarea .iconimg img{ - margin-left: auto; - margin-right: auto; - text-align: center; - width: 100px; - height:100px; - border-radius: 50%; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); -} - -.myarea{ - padding-top: 16px; - padding-bottom: 32px; - padding-left: 32px; - padding-right: 32px; - border-radius: 15px; - background-color: #f7f7f7; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; - margin-top: 64px; - text-align: center; - margin-left: auto; - margin-right: auto; -} - -.myarea img{ - margin-left: auto; - margin-right: auto; - text-align: center; - width: 100px; - height:100px; - border-radius: 50%; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); -} - -.myarea p{ - margin-top: 32px; - margin-bottom: 10px; - word-wrap: break-word; - line-height: 20px; - color: #868686; - font-size: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; -} - -.inbox { - width: 96%; - padding: 8px 10px; - border: none; - border-radius: 10px; - background: #fff; - font-family: 'Zen Maru Gothic', sans-serif; - color: rgb(32,32,32); - font-size: 1em; - line-height: 1.5; - white-space: nowrap; - box-shadow:0px 0px 25px rgba(0,0,0,0.05) inset; - box-shadow:0px 0px 25px rgba(0,0,0,0.07); - overflow-x: scroll; - overflow-y : scroll ; - transition: border 350ms ease-in-out; - transition: border-bottom 150ms ease-out; - border: 1px solid #f1f1f1; - } - -.inbox::placeholder { - color: #999; -} - -.inbox:hover { - outline: none; - border: 1px solid #FFC832; -} - -.inbox:focus { - outline: none; - border: 1px solid #FFC832; - border-bottom: 3px solid #FFC832; -} - - -.errmsg{ - padding-top: 16px; - padding-bottom: 16px; - padding-left: 32px; - padding-right: 32px; - border-radius: 15px; - background-color: #ffebeb; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; - margin-top: 64px; - text-align: left; - margin-left: auto; - margin-right: auto; - color:#ff4848; - font-family: 'BIZ UDPGothic', sans-serif; - word-wrap: break-word; - line-height: 20px; - border: 1px solid #FF4848; -} - -.flexbtn{ - display: flex; -} - -.flexbtn .irobutton{ - border: none; - display: block; - width:20%; - margin: 32px; - padding: 8px 10%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - background-color: #FFC832; - - border-radius: 50px; - color:#fff; - font-size: 26px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; -} -.flexbtn.irobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:55%; -} -.flexbtn.irobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; -} - -.flexbtn.sirobutton{ - border: none; - display: block; - width:50%; - margin: 32px; - padding: 8px 10%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 26px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; -} -.flexbtn.sirobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:55%; -} -.flexbtn.sirobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; -} -.rolebox{ - - margin-top: 12px; - margin-bottom: 12px; - - margin-left: auto; - margin-right: auto; - - width: 120px; - padding-left: auto; - padding-right: auto; - - background-color: #fff; - border: 1px solid #FFC832; - - border-radius: 25px; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - -} - -.rolebox p{ - - color:#FFC832; - margin-top: 2px; - margin-bottom: 2px; - margin-left: 10px; - margin-right: 10px; - - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - -} - - -.userleftbox{ - margin-top: 0px; - margin-bottom: 0px; - background-color: #FFC832; - width: 10%; - height: 100%; - margin-left: 0px; - padding: 32px; -} - -.userleftbox h1{ - font-family: 'Zen Maru Gothic', sans-serif; - margin-left: 20px; - color:#fff; - font-size: 32px; -} -.userleftbox .logo{ - display: flex; -} - -.userleftbox .logo img{ - - margin-left: 16px; - margin-top: 16px; - width: 72%; - -} -.userleftbox .logo p{ - color:#fff; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 32px; - margin-left: 8px; - margin-top: auto; - margin-bottom: -4px; -} - -.leftbutton{ - cursor: pointer; - border: none; - display: block; - width:70%; - margin: 32px; - padding: 8px 10%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 20px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.leftbutton:hover{ - background-color: #FFFAE6; - color: #FFC832; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:75%; -} -.leftbutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:65%; -} - -main{ - border-radius: 25px; - margin-top: 24px; - margin-left: 24px; - margin-right: 24px; - width: 80%; - background-color: #fff; - padding: 24px; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); -} - -main h1{ - color:#252525; - font-size: 32px; - font-family: 'Zen Maru Gothic', sans-serif; -} - - -.btn_area{ - display: flex; - width: 100%; - margin-left: auto; - margin-right: auto; -} - -.fbtn{ - cursor: pointer; - border: none; - display: block; - width:50%; - padding: 8px auto; - - margin-top: 12px; - margin-left: 12px; - margin-right: 12px; - margin-bottom: 0px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - text-align: center; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.fbtn:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:55%; -} -.fbtn:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; -} - -/*------------------------------------------------------------------------------------------------------------*/ -/*--------------------------------------------------スマホ向け--------------------------------------------------*/ -/*--------------------------------------------------ここから--------------------------------------------------*/ -/*------------------------------------------------------------------------------------------------------------*/ - -@media screen and (max-width:1010px) { - - body{ - backdrop-filter: blur(10px); - } - - .leftbox{ - margin-top: 0px; - margin-bottom: 0px; - background-color: transparent; - width: 100%; - height: 100%; - margin-left: 0px; - padding: 16px; - } - - .leftbox h1{ - margin-left: 20px; - color:#fff; - font-size: 2em; - } - .leftbox .logo{ - display: flex; - background-color: #FFC832; - border-radius: 15px; - } - - .leftbox .logo img{ - - margin-left: 16px; - margin-top: 16px; - width: 200px; - - } - .leftbox .logo p{ - color:#fff; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 32px; - margin-left: 8px; - margin-top: auto; - margin-bottom: -4px; - } - - - .textbox{ - padding: 32px; - width: auto; - margin-left: 0px; - margin-right: 0px; - margin-top: 64px; - margin-bottom: 8px; - border-radius: 25px; - background-color: #fff; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - } - - .textbox h1{ - word-wrap: break-word; - margin: 0px; - color: #FFC832; - font-size: 32px; - font-family: 'Zen Maru Gothic', sans-serif; - } - - - .btnbox{ - padding-top: 12px; - padding-bottom: 12px; - padding-left: 12px; - padding-right: 12px; - border-radius: 15px; - background-color: #f7f7f7; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; - margin-top: 32px; - text-align: center; - margin-left: auto; - margin-right: auto; - - } - - .irobutton{ - width:60%; - } - .irobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:65%; - } - .irobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:55%; - } - - .sirobutton{ - width:60%; - } - .sirobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:65%; - } - .sirobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:55%; - } - - - .btn_area{ - display: block; - width: 100%; - margin-left: auto; - margin-right: auto; - } - - .fbtn{ - cursor: pointer; - border: none; - display: block; - width:50%; - padding: 8px auto; - - margin-top: 12px; - margin-left: 12px; - margin-right: 12px; - margin-bottom: 0px; - - padding-top: 12px; - padding-bottom: 12px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - text-align: center; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; - } - .fbtn:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:55%; - } - .fbtn:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; - } - - .leftbox2{ - margin-top: 0px; - margin-bottom: 0px; - background-color: #FFC832; - width: 100%; - height: 100vh; - margin-left: 0px; - padding: 32px; - } -} \ No newline at end of file From 6049da0c88d088186889e215b2503084b777a098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:56:53 +0900 Subject: [PATCH 09/51] Delete delete directory --- delete/delete.php | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 delete/delete.php diff --git a/delete/delete.php b/delete/delete.php deleted file mode 100644 index 99bb555..0000000 --- a/delete/delete.php +++ /dev/null @@ -1,27 +0,0 @@ -prepare("DELETE FROM ueuse WHERE uniqid = :uniqid"); - $deleteQuery->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); - $res = $deleteQuery->execute(); - - if ($res) { - echo json_encode(['success' => true]); - exit; - } else { - echo json_encode(['success' => false, 'error' => '削除に失敗しました。']); - exit; - } - } catch(PDOException $e) { - echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); - exit; - } -} -?> From 73e6f4bf06893e2f6e239c2720c4d76205e7a043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:57:00 +0900 Subject: [PATCH 10/51] Delete emoji directory --- emoji/addemoji.php | 360 ------------------------------------------- emoji/emojiimage.php | 75 --------- emoji/index.php | 197 ----------------------- 3 files changed, 632 deletions(-) delete mode 100644 emoji/addemoji.php delete mode 100644 emoji/emojiimage.php delete mode 100644 emoji/index.php diff --git a/emoji/addemoji.php b/emoji/addemoji.php deleted file mode 100644 index 8d347e8..0000000 --- a/emoji/addemoji.php +++ /dev/null @@ -1,360 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_SESSION['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_SESSION['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット - $username = $_SESSION['username']; // セッションに格納されている値をそのままセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_COOKIE['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_COOKIE['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_COOKIE['userid']; // クッキーから取得した値をセット - $username = $_COOKIE['username']; // クッキーから取得した値をセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} else { - // ログインが許可されていない場合、ログインページにリダイレクト - header("Location: ../login.php"); - exit; -} -if(empty($userid)){ - header("Location: ../login.php"); - exit; -} -if(empty($username)){ - header("Location: ../login.php"); - exit; -} - -if(!($res["admin"] === "yes")){ - header("Location: ../login.php"); - exit; -} - -if( !empty($pdo) ) { - - // データベース接続の設定 - $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - )); - - $userQuery = $dbh->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $userid); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - $role = $userData["role"]; - - $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - $rerole = $dbh->prepare("SELECT username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime FROM account WHERE userid = :userid"); - - $rerole->bindValue(':userid', $userid); - // SQL実行 - $rerole->execute(); - - $userdata = $rerole->fetch(); // ここでデータベースから取得した値を $role に代入する - - -} - - - -if( !empty($_POST['btn_submit']) ) { - $emojiname = $_POST['emojiname']; - $emojiinfo = $_POST['emojiinfo']; - - if (!empty($_FILES['image']['name'])) { - $img = $_FILES['image']; - }else{ - $error_message[] = '画像を選択してください~'; - } - - - - $options = array( - // SQL実行失敗時に例外をスルー - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - // デフォルトフェッチモードを連想配列形式に設定 - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) - // SELECTで得た結果に対してもrowCountメソッドを使えるようにする - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - ); - - $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - - $query = $dbh->prepare('SELECT * FROM emoji WHERE emojiname = :emojiname limit 1'); - - $query->execute(array(':emojiname' => $emojiname)); - - $result = $query->fetch(); - - // IDの入力チェック - if( empty($emojiname) ) { - $error_message[] = '絵文字IDを入力してください!'; - } else { - - // 文字数を確認 - if( 20 < mb_strlen($emojiname, 'UTF-8') ) { - $error_message[] = 'IDは20文字以内で入力してください。'; - } - - if($result > 0){ - $error_message[] = 'このID('.$emojiname.')は既に使用されています。他のIDを作成してください。'; //このE-mailは既に使用されています。 - } - - } - - if( empty($error_message) ) { - - // 書き込み日時を取得 - $datetime = date("Y-m-d H:i:s"); - - // トランザクション開始 - $pdo->beginTransaction(); - - try { - - // SQL作成 - $stmt = $pdo->prepare("INSERT INTO emoji (emojifile, emojitype, emojicontent, emojisize, emojiname, emojiinfo, emojidate) VALUES ( :emojifile, :emojitype, :emojicontent, :emojisize, :emojiname, :emojiinfo, :emojidate)"); - - - - $name = $img['name']; - $type = $img['type']; - $content = file_get_contents($img['tmp_name']); - $size = $img['size']; - - $stmt->bindValue(':emojifile', $name, PDO::PARAM_STR); - $stmt->bindValue(':emojitype', $type, PDO::PARAM_STR); - $stmt->bindValue(':emojicontent', $content, PDO::PARAM_STR); - $stmt->bindValue(':emojisize', $size, PDO::PARAM_INT); - - // 値をセット - $stmt->bindParam( ':emojiname', $emojiname, PDO::PARAM_STR); - $stmt->bindParam( ':emojiinfo', $emojiinfo, PDO::PARAM_STR); - - $stmt->bindParam( ':emojidate', $datetime, PDO::PARAM_STR); - - // SQLクエリの実行 - $res = $stmt->execute(); - - // コミット - $res = $pdo->commit(); - - } catch(Exception $e) { - - // エラーが発生した時はロールバック - $pdo->rollBack(); - } - - if( $res ) { - $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; - header("Location:".$url.""); - exit; - } else { - $error_message[] = '登録に失敗しました。'; - } - - // プリペアドステートメントを削除 - $stmt = null; - - - } - -} - - -if( !empty($_POST['logout']) ) { - if (isset($_SERVER['HTTP_COOKIE'])) { - $cookies = explode(';', $_SERVER['HTTP_COOKIE']); - foreach($cookies as $cookie) { - $parts = explode('=', $cookie); - $name = trim($parts[0]); - setcookie($name, '', time()-1000); - setcookie($name, '', time()-1000, '/'); - } - } - // リダイレクト先のURLへ転送する - $url = '../index.php'; - header('Location: ' . $url, true, 303); - - // すべての出力を終了 - exit; -} - - - -// データベースの接続を閉じる -$pdo = null; - -?> - - - - - -絵文字登録 - <?php echo file_get_contents($servernamefile);?> - - - - - -
- - -
    - -

    - -
- - -
- -

絵文字登録

- -

絵文字登録です。

- -
- - -
- - -
-

EmojiID

- -
- -
-

この絵文字について

- -
- -
- - -
- -
- - -
- - - - - - - \ No newline at end of file diff --git a/emoji/emojiimage.php b/emoji/emojiimage.php deleted file mode 100644 index 97b2eab..0000000 --- a/emoji/emojiimage.php +++ /dev/null @@ -1,75 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false -); -$pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - -//$row['userid'] = "daichimarukn"; - -$emojiname = $_GET['emoji']; - - -$options = array( - // SQL実行失敗時に例外をスルー - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - // デフォルトフェッチモードを連想配列形式に設定 - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) - // SELECTで得た結果に対してもrowCountメソッドを使えるようにする - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, -); - -if( empty($emojiname) ) { - $filePath = 'img/deficon/icon.png'; - $data = file_get_contents($filePath); - header('Content-type: image/png'); - //データを出力 - echo $data; - exit(); -}else{ - $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - - $result = $dbh->prepare("SELECT emojiname, emojicontent, emojitype, emojisize profile FROM emoji WHERE emojiname = :emojiname"); - - $result->bindValue(':emojiname', $emojiname); - // SQL実行 - $result->execute(); - - - $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する - - - - header('Content-type: ' . $row['emojitype']); - echo $row['emojicontent']; - exit(); -} -?> \ No newline at end of file diff --git a/emoji/index.php b/emoji/index.php deleted file mode 100644 index 2ec10e7..0000000 --- a/emoji/index.php +++ /dev/null @@ -1,197 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_SESSION['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_SESSION['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット - $username = $_SESSION['username']; // セッションに格納されている値をそのままセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_COOKIE['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_COOKIE['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_COOKIE['userid']; // クッキーから取得した値をセット - $username = $_COOKIE['username']; // クッキーから取得した値をセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} else { - // ログインが許可されていない場合、ログインページにリダイレクト - header("Location: ../login.php"); - exit; -} -if(empty($userid)){ - header("Location: ../login.php"); - exit; -} -if(empty($username)){ - header("Location: ../login.php"); - exit; -} - -if (!empty($pdo)) { - $sql = "SELECT emojiname,emojiinfo,emojidate FROM emoji ORDER BY emojidate DESC"; - $message_array = $pdo->query($sql); - - while ($row = $message_array->fetch(PDO::FETCH_ASSOC)) { - - $messages[] = $row; - } -} - -if( !empty($_POST['logout']) ) { - if (isset($_SERVER['HTTP_COOKIE'])) { - $cookies = explode(';', $_SERVER['HTTP_COOKIE']); - foreach($cookies as $cookie) { - $parts = explode('=', $cookie); - $name = trim($parts[0]); - setcookie($name, '', time()-1000); - setcookie($name, '', time()-1000, '/'); - } - } - // リダイレクト先のURLへ転送する - $url = '../index.php'; - header('Location: ' . $url, true, 303); - - // すべての出力を終了 - exit; -} - - - - -// データベースの接続を閉じる -$pdo = null; - -?> - - - - - - - -絵文字一覧 - <?php echo file_get_contents($servernamefile);?> - - - - - -
- -
    - -

    - -
- - -
-
-

絵文字一覧

-
- '; - echo '
'; - echo ''; - echo '

:'.$value["emojiname"].':

'; - echo '
'; - echo '

'.$value["emojiinfo"].'

'; - echo '
'; - } - }else{ - echo '

カスタム絵文字がありません

'; - } - ?> -
- -
- -
- - - - - - - \ No newline at end of file From 3ccfe365176922aafcc8d6ec6855cacfc5b49196 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:57:07 +0900 Subject: [PATCH 11/51] Delete errorpage directory --- errorpage/400.php | 54 ------------------------ errorpage/401.php | 54 ------------------------ errorpage/403.php | 54 ------------------------ errorpage/404.php | 54 ------------------------ errorpage/500.php | 54 ------------------------ errorpage/503.php | 54 ------------------------ errorpage/serverstop.php | 89 ---------------------------------------- 7 files changed, 413 deletions(-) delete mode 100644 errorpage/400.php delete mode 100644 errorpage/401.php delete mode 100644 errorpage/403.php delete mode 100644 errorpage/404.php delete mode 100644 errorpage/500.php delete mode 100644 errorpage/503.php delete mode 100644 errorpage/serverstop.php diff --git a/errorpage/400.php b/errorpage/400.php deleted file mode 100644 index b34f638..0000000 --- a/errorpage/400.php +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - -400 Bad Request - <?php echo file_get_contents($servernamefile);?> - - - - -
- -
- -
- -
-
- -
-

400 Bad Request

-

<(_ _)>
はいっ!エラーです!!!
原因はわかりません!!!!!!!!

-
- - ホームへ行く - -
- - - - - \ No newline at end of file diff --git a/errorpage/401.php b/errorpage/401.php deleted file mode 100644 index bd0de6f..0000000 --- a/errorpage/401.php +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - -401 Unauthorized - <?php echo file_get_contents($servernamefile);?> - - - - -
- -
- -
- -
-
- -
-

401 Unauthorized

-

...(* ̄0 ̄)ノ< アクセス権が無いようです()
サービス管理者によってアクセス権の変更をされた可能性がございます。

-
- - ホームへ行く - -
- - - - - \ No newline at end of file diff --git a/errorpage/403.php b/errorpage/403.php deleted file mode 100644 index d5d34ff..0000000 --- a/errorpage/403.php +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - -403 Forbidden - <?php echo file_get_contents($servernamefile);?> - - - - -
- -
- -
- -
-
- -
-

403 Forbidden

-

...(* ̄0 ̄)ノ< 閲覧権限が無いようです()
サービス管理者によって閲覧権限の変更をされた可能性がございます。

-
- - ホームへ行く - -
- - - - - \ No newline at end of file diff --git a/errorpage/404.php b/errorpage/404.php deleted file mode 100644 index 5e952e8..0000000 --- a/errorpage/404.php +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - -404 Not found - <?php echo file_get_contents($servernamefile);?> - - - - -
- -
- -
- -
-
- -
-

404 Not found

-

申し訳ございませんがお探しのページは見つかりませんでした!
ページの移動や削除が行われた可能性がございます。

-
- - ホームへ行く - -
- - - - - \ No newline at end of file diff --git a/errorpage/500.php b/errorpage/500.php deleted file mode 100644 index 0ac413d..0000000 --- a/errorpage/500.php +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - -500 Internal Server Error - <?php echo file_get_contents($servernamefile);?> - - - - -
- -
- -
- -
-
- -
-

500 Internal Server Error

-

\(^o^)/
サーバーオワタ☆

-
- - ホームへ行く - -
- - - - - \ No newline at end of file diff --git a/errorpage/503.php b/errorpage/503.php deleted file mode 100644 index bd467d8..0000000 --- a/errorpage/503.php +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - -503 Service Unavailable - <?php echo file_get_contents($servernamefile);?> - - - - -
- -
- -
- -
-
- -
-

503 Service Unavailable

-

(´。_。`;)< サーバーに過負荷がかかっているようです...
時間をおいてから再度アクセスしてください!

-
- - ホームへ行く - -
- - - - - \ No newline at end of file diff --git a/errorpage/serverstop.php b/errorpage/serverstop.php deleted file mode 100644 index 0a2327f..0000000 --- a/errorpage/serverstop.php +++ /dev/null @@ -1,89 +0,0 @@ - - -

$1

', $markdownText); - - // 画像(#img)をHTMLのimgタグに変換 - $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); - - // タイトル(#、##、###)をHTMLのhタグに変換 - $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); - - // 箇条書き(-)をHTMLのul/liタグに変換 - $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); - - // 空行の前に何もない行をHTMLのpタグに変換 - $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); - - return $markdownText; -} - -$sterms = explode("\n", $termsdata); -$htmltext = ''; // 初期化 - -foreach ($sterms as $terms) { - $markdowntext = $terms; - $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); - $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 -} - - -?> - - - - - - - - -サーバー停止 - <?php echo file_get_contents($servernamefile);?> - - - - - -
- -
- -
- -
-
-
-

サーバー停止中

-

(/´・ヮ・`\)
現在サーバーが管理者によって停止されています...
停止の理由は以下の通りです。

- -
-

- - -
- -
- - - - - \ No newline at end of file From 5bee4f06214cfdd36db693fe85642281b70a7e43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:57:13 +0900 Subject: [PATCH 12/51] Delete favicon directory --- favicon/apple-touch-icon-180x180.png | Bin 1905 -> 0 bytes favicon/icon-192x192.png | Bin 2067 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 favicon/apple-touch-icon-180x180.png delete mode 100644 favicon/icon-192x192.png diff --git a/favicon/apple-touch-icon-180x180.png b/favicon/apple-touch-icon-180x180.png deleted file mode 100644 index c1a71703a27630696dd57cddfa4da8d2cfc90cca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1905 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 From aa4306dddd5338b719c1a95198791c126b895e59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:57:19 +0900 Subject: [PATCH 13/51] Delete favorite directory --- favorite/favorite.php | 57 ------------------------------------------- 1 file changed, 57 deletions(-) delete mode 100644 favorite/favorite.php diff --git a/favorite/favorite.php b/favorite/favorite.php deleted file mode 100644 index 0882645..0000000 --- a/favorite/favorite.php +++ /dev/null @@ -1,57 +0,0 @@ -prepare("SELECT favorite FROM ueuse WHERE uniqid = :uniqid"); - $stmt->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); - $stmt->execute(); - $post = $stmt->fetch(PDO::FETCH_ASSOC); - - if ($post) { - $favoriteList = explode(',', $post['favorite']); - $index = array_search($userId, $favoriteList); - - if ($index === false) { - // ユーザーIDを追加 - $favoriteList[] = $userId; - } else { - // ユーザーIDを削除 - array_splice($favoriteList, $index, 1); - } - - // 新しいいいね情報を更新 - $newFavorite = implode(',', $favoriteList); - $updateQuery = $pdo->prepare("UPDATE ueuse SET favorite = :favorite WHERE uniqid = :uniqid"); - $updateQuery->bindValue(':favorite', $newFavorite, PDO::PARAM_STR); - $updateQuery->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); - $res = $updateQuery->execute(); - - if ($res) { - echo json_encode(['success' => true, 'newFavorite' => $newFavorite]); - exit; - } else { - echo json_encode(['success' => false, 'error' => 'いいねの更新に失敗しました。']); - exit; - } - - - } else { - echo json_encode(['success' => false, 'error' => '投稿が見つかりません。']); - exit; - } - } catch(PDOException $e) { - echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); - exit; - } -} else { - echo json_encode(['success' => false, 'error' => '必要なパラメータが提供されていません。']); - exit; -} -?> From 79c2e951394f87f0ce0e9631d7905cfb0826adc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:57:27 +0900 Subject: [PATCH 14/51] Delete home directory --- home/index.php | 612 ----------------------------------------------- home/tlimage.php | 78 ------ 2 files changed, 690 deletions(-) delete mode 100644 home/index.php delete mode 100644 home/tlimage.php diff --git a/home/index.php b/home/index.php deleted file mode 100644 index 793a49f..0000000 --- a/home/index.php +++ /dev/null @@ -1,612 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_SESSION['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_SESSION['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット - $username = $_SESSION['username']; // セッションに格納されている値をそのままセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_COOKIE['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_COOKIE['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_COOKIE['userid']; // クッキーから取得した値をセット - $username = $_COOKIE['username']; // クッキーから取得した値をセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} else { - // ログインが許可されていない場合、ログインページにリダイレクト - header("Location: ../login.php"); - exit; -} -if(empty($userid)){ - header("Location: ../login.php"); - exit; -} -if(empty($username)){ - header("Location: ../login.php"); - exit; -} - -//------------------------------------------- - -if( !empty($_POST['btn_submit']) ) { - - $ueuse = $_POST['ueuse']; - - // メッセージの入力チェック - if( empty($ueuse) ) { - $error_message[] = '内容を入力してください。'; - } else { - // 文字数を確認 - if( 1024 < mb_strlen($ueuse, 'UTF-8') ) { - $error_message[] = '内容は1024文字以内で入力してください。'; - } - } - - - if (empty($_FILES['upload_images']['name'])) { - $photo1 = "none"; - } else { - // アップロードされたファイル情報 - $uploadedFile = $_FILES['upload_images']; - - // アップロードされたファイルの拡張子を取得 - $extension = pathinfo($uploadedFile['name'], PATHINFO_EXTENSION); - - // 新しいファイル名を生成(uniqid + 拡張子) - $newFilename = uniqid() . '-'.$userid.'.' . $extension; - - // 保存先のパスを生成 - $uploadedPath = '../ueuseimages/' . $newFilename; - - // ファイルを移動 - $result = move_uploaded_file($uploadedFile['tmp_name'], $uploadedPath); - - if ($result) { - $photo1 = $uploadedPath; // 保存されたファイルのパスを使用 - } else { - $error_message[] = 'アップロード失敗!(1)エラーコード:' . $uploadedFile['error'].'
'.var_dump($_FILES['upload_images']); - } - } - - if (empty($_FILES['upload_images2']['name'])) { - $photo2 = "none"; - } else { - - if (empty($_FILES['upload_images']['name'])){ - $error_message[] = '画像1から画像を選択してください!!!'; - } - // アップロードされたファイル情報 - $uploadedFile2 = $_FILES['upload_images2']; - - if( 10000000 < $uploadedFile2["size"] ) { - $error_message[] = 'ファイルサイズが大きすぎます!'; - } - // アップロードされたファイルの拡張子を取得 - $extension2 = pathinfo($uploadedFile2['name'], PATHINFO_EXTENSION); - - // 新しいファイル名を生成(uniqid + 拡張子) - $newFilename2 = uniqid() . '-'.$userid.'.' . $extension2; - - // 保存先のパスを生成 - $uploadedPath2 = '../ueuseimages/' . $newFilename2; - - // ファイルを移動 - $result2 = move_uploaded_file($uploadedFile2['tmp_name'], $uploadedPath2); - - if ($result2) { - $photo2 = $uploadedPath2; // 保存されたファイルのパスを使用 - } else { - $error_message[] = 'アップロード失敗!(2)エラーコード:' . $uploadedFile2['error'].'
'.var_dump($_FILES['upload_images']); - } - } - - if (empty($_FILES['upload_videos1']['name'])) { - $video1 = "none"; - } else { - // アップロードされたファイル情報 - $uploadedFile3 = $_FILES['upload_videos1']; - - // アップロードされたファイルの拡張子を取得 - $extension3 = strtolower(pathinfo($uploadedFile3['name'], PATHINFO_EXTENSION)); // 小文字に変換 - - // サポートされている動画フォーマットの拡張子を配列で定義 - $supportedExtensions = array("mp4", "avi", "mov", "webm"); - - if (in_array($extension3, $supportedExtensions)) { - // 正しい拡張子の場合、新しいファイル名を生成 - $newFilename3 = uniqid() . '-'.$userid.'.' . $extension3; - // 保存先のパスを生成 - $uploadedPath3 = '../ueusevideos/' . $newFilename3; - - // ファイルを移動 - $result3 = move_uploaded_file($uploadedFile3['tmp_name'], $uploadedPath3); - - if ($result3) { - $video1 = $uploadedPath3; // 保存されたファイルのパスを使用 - } else { - $error_message[] = 'アップロード失敗!エラーコード:' . $uploadedFile3['error']; - } - } else { - $error_message[] = '対応していないファイル形式です!'; - } - - - } - - if( empty($error_message) ) { - - // 書き込み日時を取得 - $datetime = date("Y-m-d H:i:s"); - $uniqid = createUniqId(); - $abi = "none"; - - // トランザクション開始 - $pdo->beginTransaction(); - - try { - - // SQL作成 - $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, ueuse, photo1, photo2, video1, datetime, abi) VALUES (:username, :account, :uniqid, :ueuse, :photo1, :photo2, :video1, :datetime, :abi)"); - - $stmt->bindParam(':username', $username, PDO::PARAM_STR); - $stmt->bindParam(':account', $userid, PDO::PARAM_STR); - $stmt->bindParam(':uniqid', $uniqid, PDO::PARAM_STR); - $stmt->bindParam(':ueuse', $ueuse, PDO::PARAM_STR); - - $stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR); - $stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR); - $stmt->bindParam(':video1', $video1, PDO::PARAM_STR); - $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); - - $stmt->bindParam(':abi', $abi, PDO::PARAM_STR); - - // SQLクエリの実行 - $res = $stmt->execute(); - - // コミット - $res = $pdo->commit(); - - } catch(Exception $e) { - - // エラーが発生した時はロールバック - $pdo->rollBack(); - } - - if( $res ) { - $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; - header("Location:".$url.""); - exit; - } else { - $error_message[] = $e->getMessage(); - } - - // プリペアドステートメントを削除 - $stmt = null; - } -} - - - -if( !empty($_POST['logout']) ) { - if (isset($_SERVER['HTTP_COOKIE'])) { - $cookies = explode(';', $_SERVER['HTTP_COOKIE']); - foreach($cookies as $cookie) { - $parts = explode('=', $cookie); - $name = trim($parts[0]); - setcookie($name, '', time()-1000); - setcookie($name, '', time()-1000, '/'); - } - } - // リダイレクト先のURLへ転送する - $url = '../index.php'; - header('Location: ' . $url, true, 303); - - // すべての出力を終了 - exit; -} - - - - -// データベースの接続を閉じる -$pdo = null; - -?> - - - - - - - - - - - -ホーム - <?php echo file_get_contents($servernamefile);?> - - - - - - - -
- - -
    - -

    - -
- -
-
- -

画像のEXIF情報(位置情報など)は削除されません。
情報漏洩に気をつけてくださいね…

-
- - - - - -
-
-
- - -
-
- - -
-
- - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/home/tlimage.php b/home/tlimage.php deleted file mode 100644 index 91effa2..0000000 --- a/home/tlimage.php +++ /dev/null @@ -1,78 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false -); -$pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - -//$row['userid'] = "daichimarukn"; - -$userid = $_GET['account']; - - -$options = array( - // SQL実行失敗時に例外をスルー - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - // デフォルトフェッチモードを連想配列形式に設定 - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) - // SELECTで得た結果に対してもrowCountメソッドを使えるようにする - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, -); - -if( empty($userid) ) { - $filePath = 'img/deficon/icon.png'; - $data = file_get_contents($filePath); - header('Content-type: image/png'); - //データを出力 - echo $data; - exit(); -}else{ - $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - - $result = $dbh->prepare("SELECT iconname, iconcontent, icontype, iconsize profile FROM account WHERE userid = :userid"); - - $result->bindValue(':userid', $userid); - // SQL実行 - $result->execute(); - - - $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する - - - - header('Content-type: ' . $row['icontype']); - echo $row['iconcontent']; - exit(); -} \ No newline at end of file From 81f2aeff923fa1a9329667ae9d9dd487c648cc99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:57:34 +0900 Subject: [PATCH 15/51] Delete img directory --- img/defhead/head.png | Bin 8502 -> 0 bytes img/deficon/head.png | Bin 8502 -> 0 bytes img/deficon/icon.png | Bin 123586 -> 0 bytes img/logoback.png | Bin 11078 -> 0 bytes img/motto.svg | 32 ------ img/sysimage/favorite_1.svg | 1 - img/sysimage/favorite_2.svg | 1 - img/sysimage/image_1.svg | 1 - img/sysimage/video_1.svg | 1 - img/titleimg/0.png | Bin 54406 -> 0 bytes img/titleimg/1.png | Bin 64541 -> 0 bytes img/titleimg/2.png | Bin 89250 -> 0 bytes img/uwuzucolorlogo.svg | 151 ---------------------------- img/uwuzulogo.svg | 195 ------------------------------------ 14 files changed, 382 deletions(-) delete mode 100644 img/defhead/head.png delete mode 100644 img/deficon/head.png delete mode 100644 img/deficon/icon.png delete mode 100644 img/logoback.png delete mode 100644 img/motto.svg delete mode 100644 img/sysimage/favorite_1.svg delete mode 100644 img/sysimage/favorite_2.svg delete mode 100644 img/sysimage/image_1.svg delete mode 100644 img/sysimage/video_1.svg delete mode 100644 img/titleimg/0.png delete mode 100644 img/titleimg/1.png delete mode 100644 img/titleimg/2.png delete mode 100644 img/uwuzucolorlogo.svg delete mode 100644 img/uwuzulogo.svg diff --git a/img/defhead/head.png b/img/defhead/head.png deleted file mode 100644 index 2f65be74729c98006de1ace8ff16019901548092..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8502 zcmeI0KTASk6vm%>H8oQMX_5#V9o<^5-0ab8-@dOlmq0?5Zv*ap%LNM2-ot_&C569#Y6 zuGcVMo&Iu?90rX5SiBzXZVxy=97nwgP*~dVzD6Gdp!^+&LFb{rSyw$Ex14UTdzGuV zZ;UWtAO{fc@9Dw0+dB?odQ<3O$` zg(e1aWH~Z1kR!{HiGk!mazG3u2Wp@h29g8G0WpvqNDhdB9QZ$p*?s@){rT^crx0H@!+GuIaSu0`q~HJm diff --git a/img/deficon/head.png b/img/deficon/head.png deleted file mode 100644 index 2f65be74729c98006de1ace8ff16019901548092..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8502 zcmeI0KTASk6vm%>H8oQMX_5#V9o<^5-0ab8-@dOlmq0?5Zv*ap%LNM2-ot_&C569#Y6 zuGcVMo&Iu?90rX5SiBzXZVxy=97nwgP*~dVzD6Gdp!^+&LFb{rSyw$Ex14UTdzGuV zZ;UWtAO{fc@9Dw0+dB?odQ<3O$` zg(e1aWH~Z1kR!{HiGk!mazG3u2Wp@h29g8G0WpvqNDhdB9QZ$p*?s@){rT^crx0H@!+GuIaSu0`q~HJm diff --git a/img/deficon/icon.png b/img/deficon/icon.png deleted file mode 100644 index f92134699968260f82be8a8d3e0ffc4ace46e11d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123586 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

6PaNWs7UggjETx% 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 - - - - - - - - - - diff --git a/img/sysimage/favorite_1.svg b/img/sysimage/favorite_1.svg deleted file mode 100644 index 17aea16..0000000 --- a/img/sysimage/favorite_1.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/sysimage/favorite_2.svg b/img/sysimage/favorite_2.svg deleted file mode 100644 index 04c6a67..0000000 --- a/img/sysimage/favorite_2.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/sysimage/image_1.svg b/img/sysimage/image_1.svg deleted file mode 100644 index 3dd8f5a..0000000 --- a/img/sysimage/image_1.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/sysimage/video_1.svg b/img/sysimage/video_1.svg deleted file mode 100644 index 1d9d64f..0000000 --- a/img/sysimage/video_1.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/titleimg/0.png b/img/titleimg/0.png deleted file mode 100644 index b1ccf4b2fb3a47c27e3babbfe3c20e09a8fd00ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54406 zcmZ5oby$>H)E{60S4BiRgcTNP5S0=TR0fm~X#@#Hr39o)O4p#*l~7s`#sP*@NwR63o69?Wpg{Gv=YRb!%lYVQZ@u-s zcOPp+Cuwg6acCEPvHs_86zxORVAPe%!GB&u&3{{%TbTQHwdIWR@!6aXcdz1v>AaS~ zE{oRH9IHhITfdT=ifm^c(xU&cL6Q2^-+&s`_?H}!T8qyNs@Z!MqwU7gC}WKNo)r0C z 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

pz?C}HE`*_&0;F6cX2H{? zYv@*5ULF)78VS`)_^x_F?VeF?r3G3Uyqe|>2W~ifi=3(sV*Y*IiGrCop`8RYsA^oy zQaFX)cbPs2TK{We!G<_tv?_3+yfYcw|0&08FB0JOIW!SC=0YaE+W@#D2-m){# zIUlg{kXAhbO>X%&75f0|S6vC(tpkuOkb&jt}EU(luHT@9Vx&`n5o3w9{ks;`fM`YGM~8?K(+47Lk20 z4r#s4WzbM0$TiOe5|N9A5fZLdO}GusDWx2R_m4^6^P;Zkww{knTErhw*+9T$(?U0P z>wlE3jf#_fe7u9zq&L=4{5`jW=5EYv^jILtYm1Y6JqGJuJB8>-c$h_+#9K`uYI~WU z1#6Q-$De!*IM9vm?A-n?fqnX;#Yz9!$R@ael<^K`*Gt#J%$@e%*++XS&a3&^W%yH( z`8Y{fpx??f4=pM+UhNwL;>`<|Y$D~Ic+d(xP+D`5T$^+d+0!@aI%}TD+@$C6VPwWo zrk7a2cP%#Ed=4$ei<-&c93MGC`kI^!_n;SpQe&?SjxmCV_2LYpH)wTN*Cc4(-TxmS du%6vll_Hm4R~2aHriL``sOj7)yJ7j){{uj}oT~r; diff --git a/img/titleimg/1.png b/img/titleimg/1.png deleted file mode 100644 index 134f1640375052c9d48dc51d96ff608c1dab1ada..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64541 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 z 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 diff --git a/img/uwuzucolorlogo.svg b/img/uwuzucolorlogo.svg deleted file mode 100644 index e2f3880..0000000 --- a/img/uwuzucolorlogo.svg +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/img/uwuzulogo.svg b/img/uwuzulogo.svg deleted file mode 100644 index e9cd4cb..0000000 --- a/img/uwuzulogo.svg +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 493c993b74ab06aa32a85800b688cc6cc88ba60e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:57:42 +0900 Subject: [PATCH 16/51] Delete js directory --- js/back.js | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 js/back.js diff --git a/js/back.js b/js/back.js deleted file mode 100644 index 2cfab3f..0000000 --- a/js/back.js +++ /dev/null @@ -1,6 +0,0 @@ - -window.onload = function(){ -var ele = document.getElementsByTagName("body")[0]; -var n = Math.floor(Math.random() * 3); // 3枚の画像がある場合 -ele.style.backgroundImage = "url(img/titleimg/"+n+".png)"; -} From 96098e92906544076a310089410338a7c19398b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:57:48 +0900 Subject: [PATCH 17/51] Delete manifest directory --- manifest/icon-512x512.png | Bin 5221 -> 0 bytes manifest/manifest.json | 15 --------------- 2 files changed, 15 deletions(-) delete mode 100644 manifest/icon-512x512.png delete mode 100644 manifest/manifest.json diff --git a/manifest/icon-512x512.png b/manifest/icon-512x512.png deleted file mode 100644 index 1b19c276d418466e964e32c1b8beaa8c1d506384..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5221 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 diff --git a/manifest/manifest.json b/manifest/manifest.json deleted file mode 100644 index cd71091..0000000 --- a/manifest/manifest.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "short_name": "uwuzu", - "name": "uwuzu", - "theme_color": "#FFC832", - "background_color": "#FFC832", - "display": "standalone", - "start_url": "../index.php", - "icons": [ - { - "src": "icon-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} \ No newline at end of file From d67c659b56c8e399bef3aa0d30ea083ec88b3d20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:58:04 +0900 Subject: [PATCH 18/51] Delete nextpage directory --- nextpage/nextpage.php | 124 ------------------------------ nextpage/notification.php | 63 --------------- nextpage/notificationview.php | 32 -------- nextpage/searchpage.php | 131 ------------------------------- nextpage/ueusepage.php | 139 --------------------------------- nextpage/userpage.php | 140 ---------------------------------- nextpage/view.php | 85 --------------------- 7 files changed, 714 deletions(-) delete mode 100644 nextpage/nextpage.php delete mode 100644 nextpage/notification.php delete mode 100644 nextpage/notificationview.php delete mode 100644 nextpage/searchpage.php delete mode 100644 nextpage/ueusepage.php delete mode 100644 nextpage/userpage.php delete mode 100644 nextpage/view.php diff --git a/nextpage/nextpage.php b/nextpage/nextpage.php deleted file mode 100644 index 02b86d8..0000000 --- a/nextpage/nextpage.php +++ /dev/null @@ -1,124 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); -} catch (PDOException $e) { - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -$userid = $_GET['userid']; - -$itemsPerPage = 30; // 1ページあたりのユーズ数 -$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; -$offset = ($pageNumber - 1) * $itemsPerPage; - -$messages = array(); - -if (!empty($pdo)) { - - function customStripTags($html, $allowedTags) { - $allowedTagString = implode('|', $allowedTags); - $pattern = "/<(?!$allowedTagString)[^>]+>/"; - return preg_replace($pattern, '', $html); - } - $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); - - // ユーズ内の絵文字を画像に置き換える - function replaceEmojisWithImages($postText) { - // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える - $pattern = '/:(\w+):/'; - $postTextWithImages = preg_replace_callback($pattern, function($matches) { - $emojiName = $matches[1]; - return "$emojiName"; - }, $postText); - return $postTextWithImages; - } - - function replaceURLsWithLinks($postText) { - // URLを正規表現を使って検出 - $pattern = '/(https?:\/\/[^\s]+)/'; - preg_match_all($pattern, $postText, $matches); - - // 検出したURLごとに処理を行う - foreach ($matches[0] as $url) { - // ドメイン部分を抽出 - $parsedUrl = parse_url($url); - $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; - - // ドメインのみを表示するaタグを生成 - $link = "$domain"; - - // URLをドメインのみを表示するaタグで置き換え - $postText = str_replace($url, $link, $postText); - } - - return $postText; - } - - - $sql = "SELECT account, username, uniqid, rpuniqid, ueuse, datetime, photo1, photo2, video1, favorite, abi, abidate FROM ueuse WHERE rpuniqid = '' ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"; - $message_array = $pdo->query($sql); - - while ($row = $message_array->fetch(PDO::FETCH_ASSOC)) { - - $messages[] = $row; - } - - // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える - foreach ($messages as &$message) { - $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $message["account"]); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - if ($userData) { - $message['username'] = $userData['username']; - } - } - - // ユーズ内のHTMLコードに指定のタグを有効化する関数 - function replaceUnescapedHTMLTags($html) { - $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ - return customStripTags($html, $allowedTags); - } - - if(!empty($messages)){ - foreach ($messages as $value) { - - $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 - - // コンマで区切って配列に分割し、要素数を数える - $favIds = explode(',', $fav); - $value["favcnt"] = count($favIds)-1; - - $messageDisplay = new MessageDisplay($value, $userid); // $userid をコンストラクタに渡す - $messageDisplay->display(); - } - }else{ - echo '

ユーズがありません

'; - } - - $pdo = null; - -} - -?> diff --git a/nextpage/notification.php b/nextpage/notification.php deleted file mode 100644 index 1fe1d77..0000000 --- a/nextpage/notification.php +++ /dev/null @@ -1,63 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); -} catch (PDOException $e) { - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -$userid = $_GET['userid']; - -$itemsPerPage = 30; // 1ページあたりの投稿数 -$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; -$offset = ($pageNumber - 1) * $itemsPerPage; - -$messages = array(); - -if (!empty($pdo)) { - - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - )); - - $messageQuery = $dbh->prepare("SELECT title,msg,url,datetime,userchk FROM notification WHERE touserid = :userid ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"); - $messageQuery->bindValue(':userid', $userid); - $messageQuery->execute(); - $message_array = $messageQuery->fetchAll(); - - if (!empty($message_array)) { - foreach ($message_array as $value) { - $messageDisplay = new MessageDisplay($value); // userid を渡さない - $messageDisplay->display(); - } - } else { - echo '

通知はありません

'; - } - - - $pdo = null; - -} - -?> diff --git a/nextpage/notificationview.php b/nextpage/notificationview.php deleted file mode 100644 index 1717a4b..0000000 --- a/nextpage/notificationview.php +++ /dev/null @@ -1,32 +0,0 @@ -value = $value; - } - - public function display() { - echo '
'; - echo '
'; - - echo '
'; - $day = date("Ymd", strtotime(htmlspecialchars($this->value['datetime']))); - if ($day == date("Ymd")) { - echo date("今日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); - } else { - echo date("Y年m月d日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); - } - echo '
'; - - echo '
'; - - // 投稿内のHTMLコードを表示する部分 - echo '

' . htmlspecialchars($this->value['title']) . '

'; - echo '

' . htmlspecialchars($this->value['msg']) . '

'; - echo ' 続きをみる'; - - echo '
'; - } -} -?> diff --git a/nextpage/searchpage.php b/nextpage/searchpage.php deleted file mode 100644 index 2c036ef..0000000 --- a/nextpage/searchpage.php +++ /dev/null @@ -1,131 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); -} catch (PDOException $e) { - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - - -$keyword = isset($_GET['keyword']) ? $_GET['keyword'] : ''; -$userid = $_GET['userid']; - -$messages = array(); - -if (!empty($pdo)) { - - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - )); - - $messageQuery = $dbh->prepare("SELECT account,username,ueuse,uniqid,rpuniqid,datetime,photo1,photo2,video1,favorite, abi, abidate FROM ueuse WHERE ueuse LIKE :keyword OR abi LIKE :keyword ORDER BY datetime DESC"); - $messageQuery->bindValue(':keyword', '%' . $keyword . '%', PDO::PARAM_STR); - $messageQuery->execute(); - $message_array = $messageQuery->fetchAll(); - - function customStripTags($html, $allowedTags) { - $allowedTagString = implode('|', $allowedTags); - $pattern = "/<(?!$allowedTagString)[^>]+>/"; - return preg_replace($pattern, '', $html); - } - $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); - - // ユーズ内の絵文字を画像に置き換える - function replaceEmojisWithImages($postText) { - // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える - $pattern = '/:(\w+):/'; - $postTextWithImages = preg_replace_callback($pattern, function($matches) { - $emojiName = $matches[1]; - return "$emojiName"; - }, $postText); - return $postTextWithImages; - } - - function replaceURLsWithLinks($postText) { - // URLを正規表現を使って検出 - $pattern = '/(https?:\/\/[^\s]+)/'; - preg_match_all($pattern, $postText, $matches); - - // 検出したURLごとに処理を行う - foreach ($matches[0] as $url) { - // ドメイン部分を抽出 - $parsedUrl = parse_url($url); - $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; - - // ドメインのみを表示するaタグを生成 - $link = "$domain"; - - // URLをドメインのみを表示するaタグで置き換え - $postText = str_replace($url, $link, $postText); - } - - return $postText; - } - - - - - $messages = array(); - foreach ($message_array as $row) { - $messages[] = $row; - } - // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える - foreach ($messages as &$message) { - $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $message["account"]); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - if ($userData) { - $message['username'] = $userData['username']; - } - } - - // ユーズ内のHTMLコードに指定のタグを有効化する関数 - function replaceUnescapedHTMLTags($html) { - $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ - return customStripTags($html, $allowedTags); - } - - if(!empty($messages)){ - foreach ($messages as $value) { - - $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 - - // コンマで区切って配列に分割し、要素数を数える - $favIds = explode(',', $fav); - $value["favcnt"] = count($favIds)-1; - - $messageDisplay = new MessageDisplay($value, $userid); - $messageDisplay->display(); - } - }else{ - echo '

ユーズがありません

'; - } - - $pdo = null; - -} - -?> diff --git a/nextpage/ueusepage.php b/nextpage/ueusepage.php deleted file mode 100644 index b693ac1..0000000 --- a/nextpage/ueusepage.php +++ /dev/null @@ -1,139 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); -} catch (PDOException $e) { - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -$userid = $_GET['userid']; - -$ueuseid = isset($_GET['id']) ? $_GET['id'] : ''; - -$itemsPerPage = 30; // 1ページあたりの投稿数 -$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; -$offset = ($pageNumber - 1) * $itemsPerPage; - -$messages = array(); - -if (!empty($pdo)) { - - - // データベース接続の設定 - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - )); - - - - function customStripTags($html, $allowedTags) { - $allowedTagString = implode('|', $allowedTags); - $pattern = "/<(?!$allowedTagString)[^>]+>/"; - return preg_replace($pattern, '', $html); - } - $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); - // 投稿内の絵文字を画像に置き換える - function replaceEmojisWithImages($postText) { - // 投稿内で絵文字名(:emoji:)を検出して画像に置き換える - $pattern = '/:(\w+):/'; - $postTextWithImages = preg_replace_callback($pattern, function($matches) { - $emojiName = $matches[1]; - return "$emojiName"; - }, $postText); - return $postTextWithImages; - } - - function replaceURLsWithLinks($postText) { - // URLを正規表現を使って検出 - $pattern = '/(https?:\/\/[^\s]+)/'; - preg_match_all($pattern, $postText, $matches); - - // 検出したURLごとに処理を行う - foreach ($matches[0] as $url) { - // ドメイン部分を抽出 - $parsedUrl = parse_url($url); - $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; - - // ドメインのみを表示するaタグを生成 - $link = "$domain"; - - // URLをドメインのみを表示するaタグで置き換え - $postText = str_replace($url, $link, $postText); - } - - return $postText; - } - - // 投稿内容の取得(新しい順に取得) - $messageQuery = $dbh->prepare("SELECT account, username, ueuse, uniqid, rpuniqid, datetime, photo1, photo2, video1, favorite, abi, abidate FROM ueuse WHERE uniqid = :ueuseid OR rpuniqid = :rpueuseid ORDER BY datetime ASC LIMIT $offset, $itemsPerPage"); - $messageQuery->bindValue(':ueuseid', $ueuseid); - $messageQuery->bindValue(':rpueuseid', $ueuseid); - $messageQuery->execute(); - $message_array = $messageQuery->fetchAll(); - - $messages = array(); - - - - foreach ($message_array as $row) { - $messages[] = $row; - } - // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える - foreach ($messages as &$message) { - $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $message["account"]); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - if ($userData) { - $message['username'] = $userData['username']; - } - } - - // 投稿内のHTMLコードに指定のタグを有効化する関数 - function replaceUnescapedHTMLTags($html) { - $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ - return customStripTags($html, $allowedTags); - } - - if(!empty($messages)){ - foreach ($messages as $value) { - $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 - - // コンマで区切って配列に分割し、要素数を数える - $favIds = explode(',', $fav); - $value["favcnt"] = count($favIds)-1; - - $messageDisplay = new MessageDisplay($value, $userid); - $messageDisplay->display(); - } - }else{ - echo '

投稿がありません

'; - } - - $pdo = null; - -} - -?> diff --git a/nextpage/userpage.php b/nextpage/userpage.php deleted file mode 100644 index 5ad9f16..0000000 --- a/nextpage/userpage.php +++ /dev/null @@ -1,140 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); -} catch (PDOException $e) { - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - - -$uwuzuid = isset($_GET['id']) ? $_GET['id'] : ''; -$userid = $_GET['userid']; - -$itemsPerPage = 30; // 1ページあたりのユーズ数 -$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; -$offset = ($pageNumber - 1) * $itemsPerPage; - -$messages = array(); - -if (!empty($pdo)) { - - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - )); - - $userQuery = $dbh->prepare("SELECT username, userid, profile, role, follower FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $uwuzuid); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - $messageQuery = $dbh->prepare("SELECT account,username,ueuse,uniqid,rpuniqid,datetime,photo1,photo2,video1,favorite, abi, abidate FROM ueuse WHERE account = :userid AND rpuniqid = ''ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"); - $messageQuery->bindValue(':userid', $uwuzuid); - $messageQuery->execute(); - $message_array = $messageQuery->fetchAll(); - - function customStripTags($html, $allowedTags) { - $allowedTagString = implode('|', $allowedTags); - $pattern = "/<(?!$allowedTagString)[^>]+>/"; - return preg_replace($pattern, '', $html); - } - $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); - - // ユーズ内の絵文字を画像に置き換える - function replaceEmojisWithImages($postText) { - // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える - $pattern = '/:(\w+):/'; - $postTextWithImages = preg_replace_callback($pattern, function($matches) { - $emojiName = $matches[1]; - return "$emojiName"; - }, $postText); - return $postTextWithImages; - } - - function replaceURLsWithLinks($postText) { - // URLを正規表現を使って検出 - $pattern = '/(https?:\/\/[^\s]+)/'; - preg_match_all($pattern, $postText, $matches); - - // 検出したURLごとに処理を行う - foreach ($matches[0] as $url) { - // ドメイン部分を抽出 - $parsedUrl = parse_url($url); - $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; - - // ドメインのみを表示するaタグを生成 - $link = "$domain"; - - // URLをドメインのみを表示するaタグで置き換え - $postText = str_replace($url, $link, $postText); - } - - return $postText; - } - - - - - $messages = array(); - foreach ($message_array as $row) { - $messages[] = $row; - } - // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える - foreach ($messages as &$message) { - $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $message["account"]); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - if ($userData) { - $message['username'] = $userData['username']; - } - } - - // ユーズ内のHTMLコードに指定のタグを有効化する関数 - function replaceUnescapedHTMLTags($html) { - $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ - return customStripTags($html, $allowedTags); - } - - if(!empty($messages)){ - foreach ($messages as $value) { - - $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 - - // コンマで区切って配列に分割し、要素数を数える - $favIds = explode(',', $fav); - $value["favcnt"] = count($favIds)-1; - - $messageDisplay = new MessageDisplay($value, $userid); - $messageDisplay->display(); - } - }else{ - echo '

ユーズがありません

'; - } - - $pdo = null; - -} - -?> diff --git a/nextpage/view.php b/nextpage/view.php deleted file mode 100644 index 33f9131..0000000 --- a/nextpage/view.php +++ /dev/null @@ -1,85 +0,0 @@ - -value = $value; - $this->userid = $userid; - } - - public function display() { - if (empty($this->value)) { - echo '

ユーズがありません

'; - } else { - echo '
'; - if(!empty($this->value['rpuniqid'])){ - echo '

┗━ 一番上のユーズに返信

'; - } - echo '
'; - - echo ' '; - echo ' ' . htmlspecialchars($this->value['username']) . ''; - echo ' '; - echo '
'; - $day = date("Ymd", strtotime(htmlspecialchars($this->value['datetime']))); - if ($day == date("Ymd")) { - echo date("今日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); - } else { - echo date("Y年m月d日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); - } - echo '
'; - - echo '
'; - - echo '

' . replaceEmojisWithImages(replaceURLsWithLinks(nl2br(replaceUnescapedHTMLTags($this->value['ueuse'])))) . '

'; - - if (!empty($this->value['photo2']) && $this->value['photo2'] !== 'none') { - echo '
'; - echo ' 画像'; - echo ' 画像'; - echo '
'; - } elseif (!empty($this->value['photo1']) && $this->value['photo1'] !== 'none') { - echo '
'; - echo ' 画像'; - echo '
'; - } - if (!empty($this->value['video1']) && $this->value['video1'] !== 'none') { - echo '
'; - echo ' '; - echo '
'; - } - - if(!($this->value['abi'] == "none")){ - echo '
'; - echo '
'; - echo '

' . htmlspecialchars($this->value['username']) . 'さんが追記しました

'; - echo '
'; - echo '

'. htmlspecialchars($this->value['abi']) . '

'; - echo '

追記日時 : '. date("Y年m月d日 H:i", strtotime(htmlspecialchars($this->value['abidate']))) . '

'; - echo '
'; - } - - echo '
'; - echo '
'; - if (false !== strstr($this->value['favorite'], $this->userid)) { - echo ''; - }else{ - echo ''; - } - echo '返信をみる&する'; - if($this->value['account'] === $this->userid){ - if($this->value['abi'] === "none"){ - echo ''; - } - echo ''; - } - echo '
'; - echo '
'; - } - } -} -?> \ No newline at end of file From b92b2d9a61bfd2049eaea2fcb886ff14a17d30d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:58:12 +0900 Subject: [PATCH 19/51] Delete notice directory --- notice/addnotice.php | 292 ------------------------------------------- notice/notice.php | 40 ------ 2 files changed, 332 deletions(-) delete mode 100644 notice/addnotice.php delete mode 100644 notice/notice.php diff --git a/notice/addnotice.php b/notice/addnotice.php deleted file mode 100644 index d1c2018..0000000 --- a/notice/addnotice.php +++ /dev/null @@ -1,292 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_SESSION['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_SESSION['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット - $username = $_SESSION['username']; // セッションに格納されている値をそのままセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_COOKIE['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_COOKIE['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_COOKIE['userid']; // クッキーから取得した値をセット - $username = $_COOKIE['username']; // クッキーから取得した値をセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} else { - // ログインが許可されていない場合、ログインページにリダイレクト - header("Location: ../login.php"); - exit; -} -if(empty($userid)){ - header("Location: ../login.php"); - exit; -} -if(empty($username)){ - header("Location: ../login.php"); - exit; -} - -if(!($res["admin"] === "yes")){ - header("Location: ../login.php"); - exit; -} - -if( !empty($pdo) ) { - - // データベース接続の設定 - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - )); - - $userQuery = $dbh->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $userid); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - $role = $userData["role"]; - - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - $rerole = $dbh->prepare("SELECT username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime FROM account WHERE userid = :userid"); - - $rerole->bindValue(':userid', $userid); - // SQL実行 - $rerole->execute(); - - $userdata = $rerole->fetch(); // ここでデータベースから取得した値を $role に代入する - - -} - - - -if( !empty($_POST['btn_submit']) ) { - $title = $_POST['title']; - $note = $_POST['note']; - - // IDの入力チェック - if( empty($title) ) { - $error_message[] = 'タイトルを入力してください!'; - } else { - - // 文字数を確認 - if( 1024 < mb_strlen($title, 'UTF-8') ) { - $error_message[] = 'タイトルは1024文字以内で入力してください。'; - } - - } - - if( empty($error_message) ) { - - // 書き込み日時を取得 - $datetime = date("Y-m-d H:i:s"); - - // トランザクション開始 - $pdo->beginTransaction(); - - try { - - // SQL作成 - $stmt = $pdo->prepare("INSERT INTO notice (title,note,account,datetime) VALUES (:title,:note,:account,:datetime)"); - - - // 値をセット - $stmt->bindParam( ':title', $title, PDO::PARAM_STR); - $stmt->bindParam( ':note', $note, PDO::PARAM_STR); - - $stmt->bindParam( ':account', $userid, PDO::PARAM_STR); - - $stmt->bindParam( ':datetime', $datetime, PDO::PARAM_STR); - - // SQLクエリの実行 - $res = $stmt->execute(); - - // コミット - $res = $pdo->commit(); - - } catch(Exception $e) { - - // エラーが発生した時はロールバック - $pdo->rollBack(); - } - - if( $res ) { - $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; - header("Location:".$url.""); - exit; - } else { - $error_message[] = '配信に失敗しました。'; - } - - // プリペアドステートメントを削除 - $stmt = null; - - - } - -} - - -if( !empty($_POST['logout']) ) { - if (isset($_SERVER['HTTP_COOKIE'])) { - $cookies = explode(';', $_SERVER['HTTP_COOKIE']); - foreach($cookies as $cookie) { - $parts = explode('=', $cookie); - $name = trim($parts[0]); - setcookie($name, '', time()-1000); - setcookie($name, '', time()-1000, '/'); - } - } - // リダイレクト先のURLへ転送する - $url = '../index.php'; - header('Location: ' . $url, true, 303); - - // すべての出力を終了 - exit; -} - - - -// データベースの接続を閉じる -$pdo = null; - -?> - - - - - -お知らせ配信 - <?php echo file_get_contents($servernamefile);?> - - - - - -
- - -
    - -

    - -
- - -
- -

お知らせ配信

- -

タイトルと内容を入力して配信してください。
削除と編集はここからは出来ません。
DB管理画面から行ってください。

- - -
-

タイトル

- -
- -
-

この絵文字について

- -
- -
- - -
- -
- - -
- - - - - - \ No newline at end of file diff --git a/notice/notice.php b/notice/notice.php deleted file mode 100644 index b1de98d..0000000 --- a/notice/notice.php +++ /dev/null @@ -1,40 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -$sql = "SELECT title, note, account, datetime FROM notice ORDER BY datetime DESC"; -$notice_array = $pdo->query($sql); - -while ($row = $notice_array->fetch(PDO::FETCH_ASSOC)) { - - $notices[] = $row; -} - -if(!empty($notices)){ - foreach ($notices as $value) { - $uneinoticenote = $value['note']; - $uneinoticetitle = $value['title']; - $uneinoticeaccount = $value['account']; - $uneinoticedatetime = $value['datetime']; - } -}else{ - $uneinoticenote = ""; - $uneinoticetitle = "おしらせはありません"; - $uneinoticeaccount = "uwuzu"; - $uneinoticedatetime = ""; -} - From d7960cacfe5d1aa8df0a2381e84a1e864e7e59d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:58:24 +0900 Subject: [PATCH 20/51] Delete notification directory --- notification/index.php | 229 ----------------------------------------- 1 file changed, 229 deletions(-) delete mode 100644 notification/index.php diff --git a/notification/index.php b/notification/index.php deleted file mode 100644 index ee33d99..0000000 --- a/notification/index.php +++ /dev/null @@ -1,229 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_SESSION['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_SESSION['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット - $username = $_SESSION['username']; // セッションに格納されている値をそのままセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_COOKIE['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_COOKIE['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_COOKIE['userid']; // クッキーから取得した値をセット - $username = $_COOKIE['username']; // クッキーから取得した値をセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} else { - // ログインが許可されていない場合、ログインページにリダイレクト - header("Location: ../login.php"); - exit; -} -if(empty($userid)){ - header("Location: ../login.php"); - exit; -} -if(empty($username)){ - header("Location: ../login.php"); - exit; -} - -if( !empty($_POST['logout']) ) { - if (isset($_SERVER['HTTP_COOKIE'])) { - $cookies = explode(';', $_SERVER['HTTP_COOKIE']); - foreach($cookies as $cookie) { - $parts = explode('=', $cookie); - $name = trim($parts[0]); - setcookie($name, '', time()-1000); - setcookie($name, '', time()-1000, '/'); - } - } - // リダイレクト先のURLへ転送する - $url = '../index.php'; - header('Location: ' . $url, true, 303); - - // すべての出力を終了 - exit; -} - - - -// データベースの接続を閉じる -$pdo = null; - -?> - - - - - - - - -通知 - <?php echo file_get_contents($servernamefile);?> - - - - - -
- - -
    - -

    - -
- - -
-
- -
-
- - - -
- - - - - - - - - - - - \ No newline at end of file From d52874b8de4f3dbbad5d4296a1e690d080daf49e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:58:30 +0900 Subject: [PATCH 21/51] Delete others directory --- others/index.php | 300 ----------------------------------------------- 1 file changed, 300 deletions(-) delete mode 100644 others/index.php diff --git a/others/index.php b/others/index.php deleted file mode 100644 index 9bfd40e..0000000 --- a/others/index.php +++ /dev/null @@ -1,300 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_SESSION['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_SESSION['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット - $username = $_SESSION['username']; // セッションに格納されている値をそのままセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_COOKIE['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_COOKIE['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_COOKIE['userid']; // クッキーから取得した値をセット - $username = $_COOKIE['username']; // クッキーから取得した値をセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} else { - // ログインが許可されていない場合、ログインページにリダイレクト - header("Location: ../login.php"); - exit; -} -if(empty($userid)){ - header("Location: ../login.php"); - exit; -} -if(empty($username)){ - header("Location: ../login.php"); - exit; -} - -if( !empty($pdo) ) { - - // データベース接続の設定 - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - )); - - $userQuery = $dbh->prepare("SELECT userid FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $userid); - $userQuery->execute(); - $userData = $userQuery->fetch(); - -} - -if( !empty($_POST['btn_submit']) ) { - - $chkuserid = $_POST['chkuserid']; - - if( empty($chkuserid) ) { - $error_message[] = '確認用ユーザーIDを入力してください。'; - } else { - if($chkuserid === $userData["userid"]){ - $userId = $userData["userid"]; // 削除対象のユーザーID - $folderPath = "../ueuseimages/"; // フォルダのパス - - // 指定したフォルダ内でユーザーIDを含むファイルを検索 - $filesToDelete = glob($folderPath . "*-$userId.*"); // 「-ユーザーID.拡張子」というパターンを検索 - - // ファイルを順に削除 - foreach ($filesToDelete as $file) { - if (is_file($file)) { - unlink($file); // ファイルを削除 - } - } - - $folderPath2 = "../ueusevideos/"; // フォルダのパス - - // 指定したフォルダ内でユーザーIDを含むファイルを検索 - $filesToDelete2 = glob($folderPath2 . "*-$userId.*"); // 「-ユーザーID.拡張子」というパターンを検索 - - // ファイルを順に削除 - foreach ($filesToDelete2 as $file2) { - if (is_file($file2)) { - unlink($file2); // ファイルを削除 - } - } - - - try { - $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS); - - // 投稿削除クエリを実行 - $deleteQuery = $pdo->prepare("DELETE FROM ueuse WHERE account = :userid"); - $deleteQuery->bindValue(':userid', $userid, PDO::PARAM_STR); - $res = $deleteQuery->execute(); - - // アカウント削除クエリを実行 - $deleteQuery = $pdo->prepare("DELETE FROM account WHERE userid = :userid"); - $deleteQuery->bindValue(':userid', $userid, PDO::PARAM_STR); - $res = $deleteQuery->execute(); - - // フォローの更新 - $updateFollowQuery = $pdo->prepare("UPDATE account SET follow = REPLACE(follow, :userid, '') WHERE follow LIKE :pattern"); - $updateFollowQuery->bindValue(':userid', ",$userid", PDO::PARAM_STR); - $updateFollowQuery->bindValue(':pattern', "%,$userid%", PDO::PARAM_STR); - $updateFollowQuery->execute(); - - // フォロワーの更新 - $updateFollowerQuery = $pdo->prepare("UPDATE account SET follower = REPLACE(follower, :userid, '') WHERE follower LIKE :pattern"); - $updateFollowerQuery->bindValue(':userid', ",$userid", PDO::PARAM_STR); - $updateFollowerQuery->bindValue(':pattern', "%,$userid%", PDO::PARAM_STR); - $updateFollowerQuery->execute(); - - // いいねの更新 - $updateFavoriteQuery = $pdo->prepare("UPDATE ueuse SET favorite = REPLACE(favorite, :favorite, '') WHERE favorite LIKE :pattern"); - $updateFavoriteQuery->bindValue(':favorite', ",$userid", PDO::PARAM_STR); - $updateFavoriteQuery->bindValue(':pattern', "%,$userid%", PDO::PARAM_STR); - $updateFavoriteQuery->execute(); - - } catch (Exception $e) { - - // エラーが発生した時はロールバック - $pdo->rollBack(); - } - - if ($res) { - if (isset($_SERVER['HTTP_COOKIE'])) { - $cookies = explode(';', $_SERVER['HTTP_COOKIE']); - foreach($cookies as $cookie) { - $parts = explode('=', $cookie); - $name = trim($parts[0]); - setcookie($name, '', time()-1000); - setcookie($name, '', time()-1000, '/'); - } - } - header("Location:../index.php"); - exit; - } else { - $error_message[] = 'アカウント削除に失敗しました。'; - } - - - // プリペアドステートメントを削除 - $stmt = null; - }else{ - $error_message[] = '確認用ユーザーIDが違います'; - } - } - - -} - - -if( !empty($_POST['logout']) ) { - if (isset($_SERVER['HTTP_COOKIE'])) { - $cookies = explode(';', $_SERVER['HTTP_COOKIE']); - foreach($cookies as $cookie) { - $parts = explode('=', $cookie); - $name = trim($parts[0]); - setcookie($name, '', time()-1000); - setcookie($name, '', time()-1000, '/'); - } - } - // リダイレクト先のURLへ転送する - $url = '../index.php'; - header('Location: ' . $url, true, 303); - - // すべての出力を終了 - exit; -} - - -?> - - - - - - -アカウント削除ページ - <?php echo file_get_contents($servernamefile);?> - - - - - -
- - -
    - -

    - -
- -
-

アカウント削除ページ

-

アカウント誤削除を防ぐため下の入力ボックスにご自身のユーザーIDを入力する必要があります。

- - -

あなたはこのサーバーの管理者のようです。
管理者アカウントの移行は済んでいますか?
アカウントを削除しても大丈夫なのですか...?

- - -
-

確認用ユーザーID

- -
- - - - - -
-
- - - - - \ No newline at end of file From 4429576d38dfd4ade4e1702986f20373cf735c92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:58:36 +0900 Subject: [PATCH 22/51] Delete reply directory --- reply/reply.php | 202 ------------------------------------------------ 1 file changed, 202 deletions(-) delete mode 100644 reply/reply.php diff --git a/reply/reply.php b/reply/reply.php deleted file mode 100644 index c85d25b..0000000 --- a/reply/reply.php +++ /dev/null @@ -1,202 +0,0 @@ -beginTransaction(); - - try { - - // SQL作成 - $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, rpuniqid, ueuse, photo1, photo2, video1, datetime, abi) VALUES (:username, :account, :uniqid, :rpuniqid, :ueuse, :photo1, :photo2, :video1, :datetime, :abi)"); - - $stmt->bindParam(':username', $username, PDO::PARAM_STR); - $stmt->bindParam(':account', $userid, PDO::PARAM_STR); - $stmt->bindParam(':uniqid', $uniqid, PDO::PARAM_STR); - $stmt->bindParam(':rpuniqid', $rpuniqid, PDO::PARAM_STR); - $stmt->bindParam(':ueuse', $Rptext, PDO::PARAM_STR); - - $stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR); - $stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR); - $stmt->bindParam(':video1', $video1, PDO::PARAM_STR); - $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); - - $stmt->bindParam(':abi', $abi, PDO::PARAM_STR); - - // SQLクエリの実行 - $res = $stmt->execute(); - - // コミット - $res = $pdo->commit(); - - // 書き込み日時を取得 - $datetime = date("Y-m-d H:i:s"); - $title = ''.$userid.'さんが返信しました!' - $msg = ''.$userid.'さんがあなたの投稿に返信しました!' - $url = '/!'.$rpuniqid - - // トランザクション開始 - $pdo->beginTransaction(); - - $stmt = $pdo->prepare("INSERT INTO notification (touserid, title, msg, url, datetime) VALUES (:touserid, :title, :msg, :url, :datetime,)"); - - $stmt->bindParam(':touserid', $touserid, PDO::PARAM_STR); - $stmt->bindParam(':title', $title, PDO::PARAM_STR); - $stmt->bindParam(':msg', $msg, PDO::PARAM_STR); - $stmt->bindParam(':url', $url, PDO::PARAM_STR); - $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); - - $res = $stmt->execute(); - $res = $pdo->commit(); - - } catch(Exception $e) { - - // エラーが発生した時はロールバック - $pdo->rollBack(); - } - - if ($res) { - header('Content-Type: application/json'); - echo json_encode(['success' => true]); - exit; - } else { - header('Content-Type: application/json'); - echo json_encode(['success' => false, 'error' => '追加に失敗しました。']); - exit; - } - } catch(PDOException $e) { - header('Content-Type: application/json'); - echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); - exit; - } - - if (!empty($errors)) { - header('Content-Type: application/json'); - echo json_encode(['success' => false, 'errors' => $errors]); - exit; - } - - - // プリペアドステートメントを削除 - $stmt = null; -} - - -?> From bcc4b709f9e95e3a4451b062b4db4f1d36d60df5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:58:42 +0900 Subject: [PATCH 23/51] Delete require directory --- require/botbox.php | 10 ---------- require/leftbox.php | 26 ------------------------- require/rightbox.php | 45 -------------------------------------------- 3 files changed, 81 deletions(-) delete mode 100644 require/botbox.php delete mode 100644 require/leftbox.php delete mode 100644 require/rightbox.php diff --git a/require/botbox.php b/require/botbox.php deleted file mode 100644 index b5617a6..0000000 --- a/require/botbox.php +++ /dev/null @@ -1,10 +0,0 @@ - - - \ No newline at end of file diff --git a/require/leftbox.php b/require/leftbox.php deleted file mode 100644 index ac6b8e2..0000000 --- a/require/leftbox.php +++ /dev/null @@ -1,26 +0,0 @@ - - - \ No newline at end of file diff --git a/require/rightbox.php b/require/rightbox.php deleted file mode 100644 index e846a79..0000000 --- a/require/rightbox.php +++ /dev/null @@ -1,45 +0,0 @@ -
- -

お知らせ

-
- -
-

-

-

編集者 :

-

-
- -
-

サーバー情報

-
-

Server

-

-

- 利用規約プライバシーポリシー -

Software

-

-

Version :

-

Developer :

- もっと詳しく!リリースノート -
-
\ No newline at end of file From 200702b5eb7e3038d32b902c6fc09a61f4ef9865 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:58:49 +0900 Subject: [PATCH 24/51] Delete rule directory --- rule/privacypolicy.php | 80 ------------------------------------ rule/releasenotes.php | 93 ------------------------------------------ rule/terms.php | 80 ------------------------------------ rule/uwuzuabout.php | 93 ------------------------------------------ 4 files changed, 346 deletions(-) delete mode 100644 rule/privacypolicy.php delete mode 100644 rule/releasenotes.php delete mode 100644 rule/terms.php delete mode 100644 rule/uwuzuabout.php diff --git a/rule/privacypolicy.php b/rule/privacypolicy.php deleted file mode 100644 index f1b9214..0000000 --- a/rule/privacypolicy.php +++ /dev/null @@ -1,80 +0,0 @@ - - -

$1

', $markdownText); - - // 画像(#img)をHTMLのimgタグに変換 - $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); - - // タイトル(#、##、###)をHTMLのhタグに変換 - $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); - - // 箇条書き(-)をHTMLのul/liタグに変換 - $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); - - // 空行の前に何もない行をHTMLのpタグに変換 - $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); - - return $markdownText; -} - -$sprivacypolicy = explode("\n", $privacypolicydata); -$htmltext = ''; // 初期化 - -foreach ($sprivacypolicy as $privacypolicy) { - $markdowntext = $privacypolicy; - $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); - $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 -} - - -?> - - - - - - -プライバシーポリシー - <?php echo file_get_contents($servernamefile);?> - - - - -
- -
- -
- -

プライバシーポリシー

-
-
- -

- -
- - - - - \ No newline at end of file diff --git a/rule/releasenotes.php b/rule/releasenotes.php deleted file mode 100644 index 54f0a02..0000000 --- a/rule/releasenotes.php +++ /dev/null @@ -1,93 +0,0 @@ - - -

$1

', $markdownText); - - // 画像(#img)をHTMLのimgタグに変換 - $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); - - // タイトル(#、##、###)をHTMLのhタグに変換 - $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); - - // 箇条書き(-)をHTMLのul/liタグに変換 - $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); - - // 空行の前に何もない行をHTMLのpタグに変換 - $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); - - return $markdownText; -} - -$srelease = explode("\n", $releasedata); -$htmltext = ''; // 初期化 - -foreach ($srelease as $release) { - $markdowntext = $release; - $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); - $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 -} - - -?> - - - - - - -<?php echo $uwuzuinfo[0]?> リリースノート - <?php echo file_get_contents($servernamefile);?> - - - - - -
- -
- -
- -

リリースノート

-
-
-
-
Version :
Developer :
Last Update :
- - -

- -
- - - - - \ No newline at end of file diff --git a/rule/terms.php b/rule/terms.php deleted file mode 100644 index 5f09619..0000000 --- a/rule/terms.php +++ /dev/null @@ -1,80 +0,0 @@ - - -

$1

', $markdownText); - - // 画像(#img)をHTMLのimgタグに変換 - $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); - - // タイトル(#、##、###)をHTMLのhタグに変換 - $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); - - // 箇条書き(-)をHTMLのul/liタグに変換 - $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); - - // 空行の前に何もない行をHTMLのpタグに変換 - $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); - - return $markdownText; -} - -$sterms = explode("\n", $termsdata); -$htmltext = ''; // 初期化 - -foreach ($sterms as $terms) { - $markdowntext = $terms; - $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); - $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 -} - - -?> - - - - - - -利用規約 - <?php echo file_get_contents($servernamefile);?> - - - - -
- -
- -
- -

利用規約

-
-
- -

- -
- - - - - \ No newline at end of file diff --git a/rule/uwuzuabout.php b/rule/uwuzuabout.php deleted file mode 100644 index 2694f3a..0000000 --- a/rule/uwuzuabout.php +++ /dev/null @@ -1,93 +0,0 @@ - - -

$1

', $markdownText); - - // 画像(#img)をHTMLのimgタグに変換 - $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); - - // タイトル(#、##、###)をHTMLのhタグに変換 - $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); - - // 箇条書き(-)をHTMLのul/liタグに変換 - $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); - - // 空行の前に何もない行をHTMLのpタグに変換 - $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); - - return $markdownText; -} - -$sterms = explode("\n", $termsdata); -$htmltext = ''; // 初期化 - -foreach ($sterms as $terms) { - $markdowntext = $terms; - $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); - $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 -} - - -?> - - - - - - -<?php echo $uwuzuinfo[0]?>について - <?php echo file_get_contents($servernamefile);?> - - - - - -
- -
- -
- -

について

-
-
-
-
Version :
Developer :
Last Update :
- - -

- -
- - - - - \ No newline at end of file From b2881bd00d25fb59d2461579cfcd37159d741074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:58:54 +0900 Subject: [PATCH 25/51] Delete search directory --- search/index.php | 390 ----------------------------------------------- 1 file changed, 390 deletions(-) delete mode 100644 search/index.php diff --git a/search/index.php b/search/index.php deleted file mode 100644 index abe3d84..0000000 --- a/search/index.php +++ /dev/null @@ -1,390 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_SESSION['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_SESSION['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット - $username = $_SESSION['username']; // セッションに格納されている値をそのままセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_COOKIE['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_COOKIE['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_COOKIE['userid']; // クッキーから取得した値をセット - $username = $_COOKIE['username']; // クッキーから取得した値をセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} else { - // ログインが許可されていない場合、ログインページにリダイレクト - header("Location: ../login.php"); - exit; -} -if(empty($userid)){ - header("Location: ../login.php"); - exit; -} -if(empty($username)){ - header("Location: ../login.php"); - exit; -} - -//------------------------------------------- - -if( !empty($_POST['logout']) ) { - if (isset($_SERVER['HTTP_COOKIE'])) { - $cookies = explode(';', $_SERVER['HTTP_COOKIE']); - foreach($cookies as $cookie) { - $parts = explode('=', $cookie); - $name = trim($parts[0]); - setcookie($name, '', time()-1000); - setcookie($name, '', time()-1000, '/'); - } - } - // リダイレクト先のURLへ転送する - $url = '../index.php'; - header('Location: ' . $url, true, 303); - - // すべての出力を終了 - exit; -} - - - - -// データベースの接続を閉じる -$pdo = null; - -?> - - - - - - - - - -検索 - <?php echo file_get_contents($servernamefile);?> - - - - - - - -
- - -
    - -

    - -
- - - -
-

検索

-
-
- - -
- -
-
- - -
-
- - - -
- - - - - - - - - - - - - \ No newline at end of file From 4b6169ac0b043851a42e4510e3b11e8e06181cbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:59:01 +0900 Subject: [PATCH 26/51] Delete server directory --- server/admininfo.txt | 1 - server/contact.txt | 1 - server/info.txt | 3 - server/privacypolicy.txt | 1 - server/servername.txt | 1 - server/serverstop.txt | 2 - server/terms.txt | 1 - server/uwuzuabout.txt | 141 --------------------------------------- server/uwuzuinfo.txt | 4 -- server/uwuzurelease.txt | 45 ------------- 10 files changed, 200 deletions(-) delete mode 100644 server/admininfo.txt delete mode 100644 server/contact.txt delete mode 100644 server/info.txt delete mode 100644 server/privacypolicy.txt delete mode 100644 server/servername.txt delete mode 100644 server/serverstop.txt delete mode 100644 server/terms.txt delete mode 100644 server/uwuzuabout.txt delete mode 100644 server/uwuzuinfo.txt delete mode 100644 server/uwuzurelease.txt diff --git a/server/admininfo.txt b/server/admininfo.txt deleted file mode 100644 index 62573b3..0000000 --- a/server/admininfo.txt +++ /dev/null @@ -1 +0,0 @@ -TEST/@test \ No newline at end of file diff --git a/server/contact.txt b/server/contact.txt deleted file mode 100644 index beef183..0000000 --- a/server/contact.txt +++ /dev/null @@ -1 +0,0 @@ -test@test.com \ No newline at end of file diff --git a/server/info.txt b/server/info.txt deleted file mode 100644 index a4a3c6c..0000000 --- a/server/info.txt +++ /dev/null @@ -1,3 +0,0 @@ -XXXXへようこそ! -XXXXはuwuzu~~~~~~~~~ -とりあえず適当に書いてみよう! \ No newline at end of file diff --git a/server/privacypolicy.txt b/server/privacypolicy.txt deleted file mode 100644 index 9e1c9b5..0000000 --- a/server/privacypolicy.txt +++ /dev/null @@ -1 +0,0 @@ -ここもしっかり書こう \ No newline at end of file diff --git a/server/servername.txt b/server/servername.txt deleted file mode 100644 index 650af7e..0000000 --- a/server/servername.txt +++ /dev/null @@ -1 +0,0 @@ -tesutoさば \ No newline at end of file diff --git a/server/serverstop.txt b/server/serverstop.txt deleted file mode 100644 index 2a8c3b9..0000000 --- a/server/serverstop.txt +++ /dev/null @@ -1,2 +0,0 @@ -今現在サーバーは停止していません -もしサーバーを止めるならここに理由書こう \ No newline at end of file diff --git a/server/terms.txt b/server/terms.txt deleted file mode 100644 index 11bc436..0000000 --- a/server/terms.txt +++ /dev/null @@ -1 +0,0 @@ -利用規約、しっかり書こう \ No newline at end of file diff --git a/server/uwuzuabout.txt b/server/uwuzuabout.txt deleted file mode 100644 index d34fc8e..0000000 --- a/server/uwuzuabout.txt +++ /dev/null @@ -1,141 +0,0 @@ -## 1. まずそもそもuwuzuとは何か -使っている方ならわかると思いますが普通のSNSです! -これと言った大きな特徴もなく、平凡で、なんとも言えないSNSです… -あっ!特徴かもしれないのが誰でもサーバーを建てられることです!!! -詳細は5. サーバーの立て方をご覧ください! -### 1.1 作られた理由は? -uwuzuは某X社のSNSを再構築しようと考えたdaichimarukanaにより作成されたSNSです() -uwuzuの読みはゆずです。 - -## 2. 誰でもサーバーを建てれるってことは、分散型? -残念っ! -uwuzuにはActivityPubやその他の連合用機能がないため基本的に導入されたサーバー中心の中央集権型SNSです! -今後いつかはActivityPubも導入しようかと思っています... - -## 3. 名前の由来って何? -おっ!いい着眼点ですねぇ~~~ -uwuzu(ゆず)の名前の由来は、開発者のdaichimarukanaがサービス名を考えていたときに某X社のSNSに「TwitterみたいなSNS作ってるけどサービス名が全く思いつかねぇ()」と投稿したところ思ったより多くの名前の案が集まり、 -その中に「With you」という名前の案があったところから来ています。 -daichimarukana < 「うぃずゆー(With you)」「うぃじゅー(witzou)」「うずー(wuzu)」「ゆず(yuzu)」あれっ?なんか普通すぎ?そうだ!!!!これでいいやん!!!! -### 「ゆず(uwuzu)」 - -ちなみに、この案が来るまでは「Twilus」という名前にする予定だったんですよっ! - -## 4. 開発言語は? -uwuzuはPHPとJS、HTML(プログラミング言語じゃないか)、CSSで作られています! -ライブラリはjQueryを導入しています! - -## 5. サーバーの建て方 -※MySQLの設定結構めんどいです。 -まず、Apache2とPHP 8とmysql Ver 15が導入されているサーバーを準備します! -次にSQLを設定します。(InnoDB) -まず、お好きな名前でDBを作成し、その中に、account,emoji,notice,role,ueuse,notificationとテーブルを作成します。 -テーブルの中身は以下のとおりです。 -照合順序は全て標準でutf8mb4_general_ciです。 -### account -- sysid(INT)(AUTO_INCREMENT ) アカウントが追加されるとカウントされるシステム用ID -- username(varchar(500)) ユーザーネーム保存用 -- userid(varchar(500)) ユーザーID保存用 -- password(varchar(1024)) パスワード保存用(ハッシュ化されます) -- loginid(varchar(256)) 自動ログイン時に本人アカウントか確認 -- mailadds(varchar(500)) メールアドレス保存用 -- profile(TEXT) プロフィールテキスト保存用 -- iconname(varchar(256)) アイコン画像名保存用 -- iconcontent(mediumblob) アイコン画像保存用 -- icontype(varchar(256)) アイコン画像拡張子保存用 -- iconsize(INT) アイコン画像サイズ保存用 -- headname(varchar(256)) ヘッダー画像名保存用 -- headcontent(mediumblob) ヘッダー画像保存用 -- headtype(varchar(256)) ヘッダー画像拡張子保存用 -- headsize(INT) ヘッダー画像サイズ保存用 -- role(varchar(1024)) 「user」のようなロール保存用 -- datetime(datetime) アカウント作成日時保存用 -- follow(text) アカウントがフォローしている人保存用 -- follower(text) アカウントがフォローされている人保存用 -- admin(varchar(25)) 管理者アカウントなら「yes」、それ以外なら「none」と入力。 - -### emoji -- sysid(INT)(AUTO_INCREMENT) アカウントが追加されるとカウントされるシステム用ID -- emojifile(varchar(512)) 絵文字ファイル名保存用 -- emojitype(varchar(256)) 絵文字拡張子保存用 -- emojicontent(mediumblob) 絵文字画像保存用 -- emojiname(varchar(512)) 「:emoji:」のような絵文字名保存用 -- emojiinfo(text) 絵文字についての説明保存用 -- emojidate(datetime) 絵文字登録日時保存用 - -### notice -- sysid(INT)(AUTO_INCREMENT) うんえいからのおしらせが追加されるとカウントされるシステム用ID -- title(varchar(1024)) お知らせのタイトル保存用 -- note(text) お知らせの内容保存用 -- account(varchar(500)) 編集者ID保存用 -- emojidate(datetime) お知らせ登録日時保存用 - -### role -- sysid(INT)(AUTO_INCREMENT) ロールが追加されるとカウントされるシステム用ID -- rolename(varchar(512)) ロール表示名保存用 -- roleauth(varchar(256)) ロールの権限保存用 -- rolecolor(varchar(25)) ロールの色保存用 -- roleidname(varchar(512)) 「user」のようなロール指定用 - -### ueuse -- sysid(INT)(AUTO_INCREMENT) 投稿されるとカウントされるシステム用ID -- account(varchar(256)) 投稿者ID保存用 -- uniqid(varchar(256)) 投稿ID保存用 -- rpuniqid(varchar(256)) リプライ先ID保存用 -- ueuse(text) 投稿内容保存用 -- photo1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 -- photo2(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 -- video1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 -- datetime(datetime) 投稿日時保存用 -- favorite(text) いいね保存用 -- abi(text) 投稿者の追記保存用 -- abidate(datetime) 追記日時保存用 - -### notification -- sysid(INT)(AUTO_INCREMENT) 通知されるとカウントされるシステム用ID -- touserid(varchar(512)) 通知先ID保存用 -- title(varchar(1024)) 通知のタイトル -- msg(text) 通知の内容 -- datetime(datetime) 通知日時 -- userchk(varchar(25)) 通知の既読確認 - - -すべて作成完了したらGithubよりuwuzuのファイルをDLし、解凍し、それをサーバーの動作ディレクトリに置き、Apacheのhttpd.confからその動作ディレクトリを指定し、あとはApacheとphpとMy SQLを起動するだけ! -起動したらまずDBのroleにphpmyadminから「user」ロールを追加権限は「user」でOK。ロール名はとりあえず「一般ユーザー」ロールの色はHEXコード(#を除く)で000000のように指定。 -そしたら普通にuwuzuにアクセスして自分のアカウントを登録。 -それが終わったら一度サーバーを止め、uwuzuの動作ディレクトリ内のserverフォルダ内のファイルを各自設定 -ファイルの機能は以下の通り! -- admininfo.txt : 管理者名(てすとまる/@sampledayo) -- contact.txt : 管理者への連絡用メアド(sample@test.com) -- info.txt : サーバー登録時に表示されるメッセージ(好きな内容) -- privacypolicy.txt : プライバシーポリシー(サーバーのプライバシーポリシーを記載) -- servername.txt : サーバー名(てすとさば) -- terms.txt : 利用規約(サーバーの利用規約を記載) -- uwuzuabout.txt : このファイル(uwuzuを改造した場合は書き換え) -- uwuzuinfo.txt : uwuzuのバージョン等記載(uwuzuを改造した場合は書き換え) -- uwuzurelease.txt : uwuzuのバージョン等記載(uwuzuを改造した場合は書き換え) - -### これでサーバーは完成!!! -もう一度サーバーを起動してみんなに公開しよう!!! - -## 6. Android、iOS、その他OS向けのアプリについて -残念ですが今現在は公式アプリ等はなく、Webブラウザからお楽しみいただけます。 -誰かが作ってくれたらありがたいな~() - -## 7. 開発したいです!!! -uwuzuを自分の思うように改造して使いたい場合はAGPLライセンスのもと改造後ソースコードを公開するということで改造してください! -場合によってはdaichimarukanaの作る本家(?)uwuzuにも改造で追加された機能が実装されるかも...() -daichimarukanaと一緒に開発したいよ~って人は私のHPからメールとか某Xとかから連絡してくださいな~ - -## 8. ロゴは誰が作ったのですか? -ロゴはまだない。 -ロゴは下記のリンクよりuwuzuに関連しているコンテンツのみDLしてご利用いただけます。(uwuzuへ飛ぶリンクボタンなどはOK) - -### 色付き -#img ../img/uwuzucolorlogo.svg -### まっしろ -#img ../img/uwuzulogo.svg - - -編集者 : daichimarukana -最終更新日 : 2023/08/16 14:50 \ No newline at end of file diff --git a/server/uwuzuinfo.txt b/server/uwuzuinfo.txt deleted file mode 100644 index 1229135..0000000 --- a/server/uwuzuinfo.txt +++ /dev/null @@ -1,4 +0,0 @@ -uwuzu -1.1.3 -2023/08/17 -daichimarukana \ No newline at end of file diff --git a/server/uwuzurelease.txt b/server/uwuzurelease.txt deleted file mode 100644 index 051c3c2..0000000 --- a/server/uwuzurelease.txt +++ /dev/null @@ -1,45 +0,0 @@ -## リリースノートだぜぇぇぇぇぇぇい!!!!!!! -ここにはuwuzuの更新情報を載せてくぜぇ~!(いやまてテンションおかしいだろ...) - -## Version 1.1.3 -リリース日:2023/08/17 -早速脆弱性を見つけ出すとんでもない人間が出始めたので対策をしました() -部分的にUIを変更しました。 - -## Version 1.1.2 -リリース日:2023/08/17 -絵文字文字化けバグを修正しました。 - -## Version 1.1.1 -リリース日:2023/08/16 -小さなバグを修正しました。 - -## Version 1.1.0 -リリース日:2023/08/16 -超極激ヤババグを修正しました。 -ユーザーIDにハイフンが使えてしまうバグを修正しました。 - -## Version 1.0.0 -リリース日:2023/08/16 -### 初リリース!!!やったね!!!! -機能は以下の通り!遊んでみてね!!! -- 投稿(ユーズしよう!みんなに自分のつぶやきを見せつけるぞ!(?)) -- 投稿に画像添付(最大2枚まで画像を添付できるぞ!位置情報など漏洩しないよう写真にGPS情報が残っていないか厳重に注意しよう...) -- 投稿に動画添付(好きな動画を載せてみよう!) -- 投稿への追記(投稿者が追記できるよ!誤字ったりミスった時はこれを使おう!) -- フォロー(アカウントをフォロー!周りのユーザーとの交流を増やそう!) -- いいね(いいねを押してみよう!気軽にどのくらいの人が「いいね!」と思ったかがわかる優れものさ!) -- 返信(返信だ!少し手抜きで作ったから見た目はよろしくないけど十分使える機能だッ!どちらかと言えばスレッドといったほうがいいかも...) -- カスタム絵文字(自分の思うことを画像で表せるカスタム絵文字!サーバー管理者に追加してほしい絵文字を報告して追加してもらおう!) -- カスタム絵文字総合ページ(PCの人なら左側のメニューからアクセスできるかな!自分のお気に入りの絵文字をここから見つけよう!) -- 投稿の文字装飾(5つだけHTMLタグを開放したんだ!<h1>,<h2>,<h3>,<center>,<font>を使って自由に作ろう!) -- プロフィール(無いと困る機能だけど一応書いとくね~!自分や他のユーザーのプロフィールページだよッ!) -- 設定(無いと一番困る機能!少し操作が複雑だけど頑張って!) -- 検索(ユーザー検索は出来ないけど投稿は検索できるよ!「あの投稿がまた見たい...」というときに使おう!) -- 通知(今のところほぼ使い物にならないけど今後良くしていく予定!待っててくれよっ!) -- アカウント削除(消したくなったタイミングで自分の投稿やアカウントなどの情報を全て消せるよ!) -- API(開発者のみんな~!ちゃんとAPIを実装したよ!内容はユーザー情報の取得!それ以外はまだないけど...まぁ!
/api/userdata-api.php?userid=me2) -- PWA(スマホでも快適に!※動作未確認()) -- ダークモード(暗い夜でも目に優しく!) -他にも小さ~な機能は色々あるけどあまり気にならないだろうから今回はパスで! -ということで最初のバージョンであるuwuzu 1.0.0をお楽しみください! \ No newline at end of file From fac73b9981d5b5b920a445b768c155d591593111 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:59:07 +0900 Subject: [PATCH 27/51] Delete settings directory --- settings/index.php | 664 --------------------------------------------- 1 file changed, 664 deletions(-) delete mode 100644 settings/index.php diff --git a/settings/index.php b/settings/index.php deleted file mode 100644 index 36a3532..0000000 --- a/settings/index.php +++ /dev/null @@ -1,664 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_SESSION['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_SESSION['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット - $username = $_SESSION['username']; // セッションに格納されている値をそのままセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_COOKIE['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_COOKIE['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_COOKIE['userid']; // クッキーから取得した値をセット - $username = $_COOKIE['username']; // クッキーから取得した値をセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} else { - // ログインが許可されていない場合、ログインページにリダイレクト - header("Location: ../login.php"); - exit; -} -if(empty($userid)){ - header("Location: ../login.php"); - exit; -} -if(empty($username)){ - header("Location: ../login.php"); - exit; -} - -if( !empty($pdo) ) { - - // データベース接続の設定 - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - )); - - $userQuery = $dbh->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $userid); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - $role = $userData["role"]; - - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - $rerole = $dbh->prepare("SELECT username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime FROM account WHERE userid = :userid"); - - $rerole->bindValue(':userid', $userid); - // SQL実行 - $rerole->execute(); - - $userdata = $rerole->fetch(); // ここでデータベースから取得した値を $role に代入する - - -} - - - -if( !empty($_POST['btn_submit']) ) { - - // 空白除去 - $username = $_POST['username']; - - $mailadds = $_POST['mailadds']; - - $profile = $_POST['profile']; - - $options = array( - // SQL実行失敗時に例外をスルー - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - // デフォルトフェッチモードを連想配列形式に設定 - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) - // SELECTで得た結果に対してもrowCountメソッドを使えるようにする - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - ); - - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - - $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); - - $query->execute(array(':userid' => $userid)); - - $result = $query->fetch(); - - - // ユーザーネームの入力チェック - if( empty($username) ) { - $error_message[] = '表示名を入力してください。'; - } else { - // 文字数を確認 - if( 25 < mb_strlen($username, 'UTF-8') ) { - $error_message[] = 'ユーザーネームは25文字以内で入力してください。'; - } - } - - if( empty($error_message) ) { - // トランザクション開始 - $pdo->beginTransaction(); - $hashpassword = password_hash($password, PASSWORD_DEFAULT); - - try { - // SQL作成 - $stmt = $pdo->prepare("UPDATE account SET username = :username, mailadds = :mailadds, profile = :profile WHERE userid = :userid;"); - - // 他の値をセット - $stmt->bindParam(':username', $username, PDO::PARAM_STR); - $stmt->bindParam(':mailadds', $mailadds, PDO::PARAM_STR); - $stmt->bindParam(':profile', $profile, PDO::PARAM_STR); - - // 条件を指定 - // 以下の部分を適切な条件に置き換えてください - $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); - - // SQLクエリの実行 - $res = $stmt->execute(); - - // コミット - $res = $pdo->commit(); - - } catch (Exception $e) { - - // エラーが発生した時はロールバック - $pdo->rollBack(); - } - - if ($res) { - $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; - header("Location:".$url.""); - exit; - } else { - $error_message[] = '更新に失敗しました。'; - } - - // プリペアドステートメントを削除 - $stmt = null; - } -} - - - -if( !empty($_POST['pass_submit']) ) { - - $password = $_POST['password']; - - $hashpassword = password_hash($password, PASSWORD_DEFAULT); - - $options = array( - // SQL実行失敗時に例外をスルー - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - // デフォルトフェッチモードを連想配列形式に設定 - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) - // SELECTで得た結果に対してもrowCountメソッドを使えるようにする - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - ); - - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - - $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); - - $query->execute(array(':userid' => $userid)); - - $result = $query->fetch(); - - // ユーザーネームの入力チェック - if( empty($password) ) { - $error_message[] = 'パスワードを入力してください。'; - } else { - - $weakPasswords = array( - "password", - "123456", - "123456789", - "12345", - "12345678", - "123123", - "1234567890", - "1234567", - "1q2w3e", - "qwerty123", - "aa12345678", - "password1", - "1234", - "qwertyuiop", - "123321", - "12321", - "qwertyui", - "abcd1234", - "zaq12wsx", - "1q2w3e4r", - "qwer1234", - "sakura", - "asdf1234", - "asdfghjkl", - "asdfghjk", - "member", - "1qaz2wsx", - "doraemon", - "makoto", - "takeshi", - "machi1", - "machida", - "machida1", - "tokyo", - "arashi", - "dropbox", - "twitter", - "elonmusk", - "xcorp", - "1234qwer", - "japan", - "nippon", - "tukareta", - "tweet", - "discord", - "misskey", - "qwerty", - "123456789", - "abc123", - "password123", - "admin", - "letmein", - "iloveyou", - "111111", - "12345678910", - "user", - "root", - "system", - // 他にも弱いパスワードを追加できます - ); - - function isWeakPassword($passwords) { - global $weakPasswords; - return in_array($passwords, $weakPasswords); - } - - // テスト用のパスワード(実際にはユーザー入力などから取得することになります。 - - if (isWeakPassword($password)) { - $error_message[] = "パスワードが弱いです。セキュリティ上変更してください。"; - } else { - - } - // 文字数を確認 - if( 100 < mb_strlen($password, 'UTF-8') ) { - $error_message[] = 'パスワードは100文字以内で入力してください。'; - } - - if( 4 > mb_strlen($password, 'UTF-8') ) { - $error_message[] = 'パスワードは4文字以上である必要があります。'; - } - } - - if( empty($error_message) ) { - // トランザクション開始 - $pdo->beginTransaction(); - $hashpassword = password_hash($password, PASSWORD_DEFAULT); - - try { - // SQL作成 - $stmt = $pdo->prepare("UPDATE account SET password = :password WHERE userid = :userid;"); - - // 他の値をセット - $stmt->bindParam(':password', $hashpassword, PDO::PARAM_STR); - - // 条件を指定 - // 以下の部分を適切な条件に置き換えてください - $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); - - // SQLクエリの実行 - $res = $stmt->execute(); - - // コミット - $res = $pdo->commit(); - - } catch (Exception $e) { - - // エラーが発生した時はロールバック - $pdo->rollBack(); - } - - if ($res) { - $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; - header("Location:".$url.""); - exit; - } else { - $error_message[] = '更新に失敗しました。'; - } - - // プリペアドステートメントを削除 - $stmt = null; - } -} - - -if( !empty($_POST['logout']) ) { - if (isset($_SERVER['HTTP_COOKIE'])) { - $cookies = explode(';', $_SERVER['HTTP_COOKIE']); - foreach($cookies as $cookie) { - $parts = explode('=', $cookie); - $name = trim($parts[0]); - setcookie($name, '', time()-1000); - setcookie($name, '', time()-1000, '/'); - } - } - // リダイレクト先のURLへ転送する - $url = '../index.php'; - header('Location: ' . $url, true, 303); - - // すべての出力を終了 - exit; -} - - - -if( !empty($_POST['img1btn_submit']) ) { - - if (!empty($_FILES['image2s']['name'])) { - $headimg = $_FILES['image2s']; - }else{ - $error_message[] = 'ヘッダー画像を選択してください'; - } - - $options = array( - // SQL実行失敗時に例外をスルー - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - // デフォルトフェッチモードを連想配列形式に設定 - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) - // SELECTで得た結果に対してもrowCountメソッドを使えるようにする - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - ); - - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - - $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); - - $query->execute(array(':userid' => $userid)); - - $result = $query->fetch(); - - - - - if( empty($error_message) ) { - // トランザクション開始 - $pdo->beginTransaction(); - - try { - - // SQL作成 - $stmt = $pdo->prepare("UPDATE account SET headname = :headname, headtype = :headtype, headcontent = :headcontent, headsize = :headsize WHERE userid = :userid"); - - // ヘッダー画像関連の処理 - $headName = $headimg['name']; - $headType = $headimg['type']; - $headContent = file_get_contents($headimg['tmp_name']); - $headSize = $headimg['size']; - - // ヘッダー画像のバインド - $stmt->bindValue(':headname', $headName, PDO::PARAM_STR); - $stmt->bindValue(':headtype', $headType, PDO::PARAM_STR); - $stmt->bindValue(':headcontent', $headContent, PDO::PARAM_STR); - $stmt->bindValue(':headsize', $headSize, PDO::PARAM_INT); - - // ユーザーIDのバインド(WHERE句に必要) - $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); - - // SQLクエリの実行 - $res = $stmt->execute(); - - // コミット - $res = $pdo->commit(); - - - } catch (Exception $e) { - - // エラーが発生した時はロールバック - $pdo->rollBack(); - } - - if ($res) { - $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; - header("Location:".$url.""); - exit; - } else { - $error_message[] = '更新に失敗しました。'; - } - - // プリペアドステートメントを削除 - $stmt = null; - } -} - - -if( !empty($_POST['img2btn_submit']) ) { - - if (!empty($_FILES['image']['name'])) { - $img = $_FILES['image']; - }else{ - $error_message[] = 'アイコン画像を選択してください'; - } - - - $options = array( - // SQL実行失敗時に例外をスルー - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - // デフォルトフェッチモードを連想配列形式に設定 - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) - // SELECTで得た結果に対してもrowCountメソッドを使えるようにする - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - ); - - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - - $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); - - $query->execute(array(':userid' => $userid)); - - $result = $query->fetch(); - - - - - if( empty($error_message) ) { - // トランザクション開始 - $pdo->beginTransaction(); - - try { - - // SQL作成 - $stmt = $pdo->prepare("UPDATE account SET iconname = :iconname, icontype = :icontype, iconcontent = :iconcontent, iconsize = :iconsize WHERE userid = :userid"); - - $iconName = $img['name']; - $iconType = $img['type']; - $iconContent = file_get_contents($img['tmp_name']); - $iconSize = $img['size']; - - // アイコン画像のバインド - $stmt->bindValue(':iconname', $iconName, PDO::PARAM_STR); - $stmt->bindValue(':icontype', $iconType, PDO::PARAM_STR); - $stmt->bindValue(':iconcontent', $iconContent, PDO::PARAM_STR); - $stmt->bindValue(':iconsize', $iconSize, PDO::PARAM_INT); - - // ユーザーIDのバインド(WHERE句に必要) - $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); - - // SQLクエリの実行 - $res = $stmt->execute(); - - // コミット - $res = $pdo->commit(); - - - } catch (Exception $e) { - - // エラーが発生した時はロールバック - $pdo->rollBack(); - } - - if ($res) { - $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; - header("Location:".$url.""); - exit; - } else { - $error_message[] = '更新に失敗しました。'; - } - - // プリペアドステートメントを削除 - $stmt = null; - } -} - -if( !empty($_POST['logout']) ) { - if (isset($_SERVER['HTTP_COOKIE'])) { - $cookies = explode(';', $_SERVER['HTTP_COOKIE']); - foreach($cookies as $cookie) { - $parts = explode('=', $cookie); - $name = trim($parts[0]); - setcookie($name, '', time()-1000); - setcookie($name, '', time()-1000, '/'); - } - } - // リダイレクト先のURLへ転送する - $url = '../index.php'; - header('Location: ' . $url, true, 303); - - // すべての出力を終了 - exit; -} - - -// データベースの接続を閉じる -$pdo = null; - -?> - - - - - - - - -設定 - <?php echo file_get_contents($servernamefile);?> - - - - - -
- - -
    - -

    - -
- - -
-
- -
- -
- -
- - - - -
- - -
- - -
-

ユーザーネーム

- -
-
-

メールアドレス

- -
- -
-

プロフィール

- -
- - - -
-

パスワード

- -
- - - - -
-
- - - - - \ No newline at end of file From f9b533b74b8bacd6c4a85f8bb48ead85144d7ea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:59:13 +0900 Subject: [PATCH 28/51] Delete ueuse directory --- ueuse/index.php | 620 ------------------------------------------------ 1 file changed, 620 deletions(-) delete mode 100644 ueuse/index.php diff --git a/ueuse/index.php b/ueuse/index.php deleted file mode 100644 index cec3dae..0000000 --- a/ueuse/index.php +++ /dev/null @@ -1,620 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_SESSION['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_SESSION['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット - $username = $_SESSION['username']; // セッションに格納されている値をそのままセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_COOKIE['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_COOKIE['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_COOKIE['userid']; // クッキーから取得した値をセット - $username = $_COOKIE['username']; // クッキーから取得した値をセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} else { - // ログインが許可されていない場合、ログインページにリダイレクト - header("Location: ../login.php"); - exit; -} -if(empty($userid)){ - header("Location: ../login.php"); - exit; -} -if(empty($username)){ - header("Location: ../login.php"); - exit; -} - -$ueuseid = str_replace('!', '', $_GET['ueuseid']); -$touserid = str_replace('~', '', $_GET['touser']); - - -if( !empty($_POST['btn_submit']) ) { - - $ueuse = $_POST['ueuse']; - - // メッセージの入力チェック - if( empty($ueuse) ) { - $error_message[] = '内容を入力してください。'; - } else { - - // 文字数を確認 - if( 1024 < mb_strlen($ueuse, 'UTF-8') ) { - $error_message[] = '内容は1024文字以内で入力してください。'; - } - } - - - if (empty($_FILES['upload_images']['name'])) { - $photo1 = "none"; - } else { - // アップロードされたファイル情報 - $uploadedFile = $_FILES['upload_images']; - - // アップロードされたファイルの拡張子を取得 - $extension = pathinfo($uploadedFile['name'], PATHINFO_EXTENSION); - - // 新しいファイル名を生成(uniqid + 拡張子) - $newFilename = uniqid() . '-'.$userid.'.' . $extension; - - // 保存先のパスを生成 - $uploadedPath = '../ueuseimages/' . $newFilename; - - // ファイルを移動 - $result = move_uploaded_file($uploadedFile['tmp_name'], $uploadedPath); - - if ($result) { - $photo1 = $uploadedPath; // 保存されたファイルのパスを使用 - } else { - $error_message[] = 'アップロード失敗!(1)エラーコード:' . $uploadedFile['error'].'
'.var_dump($_FILES['upload_images']); - } - } - - if (empty($_FILES['upload_images2']['name'])) { - $photo2 = "none"; - } else { - - if (empty($_FILES['upload_images']['name'])){ - $error_message[] = '画像1から画像を選択してください!!!'; - } - // アップロードされたファイル情報 - $uploadedFile2 = $_FILES['upload_images2']; - - if( 10000000 < $uploadedFile2["size"] ) { - $error_message[] = 'ファイルサイズが大きすぎます!'; - } - // アップロードされたファイルの拡張子を取得 - $extension2 = pathinfo($uploadedFile2['name'], PATHINFO_EXTENSION); - - // 新しいファイル名を生成(uniqid + 拡張子) - $newFilename2 = uniqid() . '-'.$userid.'.' . $extension2; - - // 保存先のパスを生成 - $uploadedPath2 = '../ueuseimages/' . $newFilename2; - - // ファイルを移動 - $result2 = move_uploaded_file($uploadedFile2['tmp_name'], $uploadedPath2); - - if ($result2) { - $photo2 = $uploadedPath2; // 保存されたファイルのパスを使用 - } else { - $error_message[] = 'アップロード失敗!(2)エラーコード:' . $uploadedFile2['error'].'
'.var_dump($_FILES['upload_images']); - } - } - - - if (empty($_FILES['upload_videos1']['name'])) { - $video1 = "none"; - } else { - // アップロードされたファイル情報 - $uploadedFile3 = $_FILES['upload_videos1']; - - // アップロードされたファイルの拡張子を取得 - $extension3 = strtolower(pathinfo($uploadedFile3['name'], PATHINFO_EXTENSION)); // 小文字に変換 - - // サポートされている動画フォーマットの拡張子を配列で定義 - $supportedExtensions = array("mp4", "avi", "mov", "webm"); - - if (in_array($extension3, $supportedExtensions)) { - // 正しい拡張子の場合、新しいファイル名を生成 - $newFilename3 = uniqid() . '-'.$userid.'.' . $extension3; - // 保存先のパスを生成 - $uploadedPath3 = '../ueusevideos/' . $newFilename3; - - // ファイルを移動 - $result3 = move_uploaded_file($uploadedFile3['tmp_name'], $uploadedPath3); - - if ($result3) { - $video1 = $uploadedPath3; // 保存されたファイルのパスを使用 - } else { - $error_message[] = 'アップロード失敗!エラーコード:' . $uploadedFile3['error']; - } - } else { - $error_message[] = '対応していないファイル形式です!'; - } - - - } - - if( empty($error_message) ) { - - // 書き込み日時を取得 - $datetime = date("Y-m-d H:i:s"); - $uniqid = createUniqId(); - $abi = "none"; - - // トランザクション開始 - $pdo->beginTransaction(); - - try { - - // SQL作成 - $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, rpuniqid, ueuse, photo1, photo2, video1, datetime, abi) VALUES (:username, :account, :uniqid, :rpuniqid, :ueuse, :photo1, :photo2, :video1, :datetime, :abi)"); - - $stmt->bindParam(':username', $username, PDO::PARAM_STR); - $stmt->bindParam(':account', $userid, PDO::PARAM_STR); - $stmt->bindParam(':uniqid', $uniqid, PDO::PARAM_STR); - $stmt->bindParam(':rpuniqid', $ueuseid, PDO::PARAM_STR); - $stmt->bindParam(':ueuse', $ueuse, PDO::PARAM_STR); - - $stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR); - $stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR); - $stmt->bindParam(':video1', $video1, PDO::PARAM_STR); - $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); - - $stmt->bindParam(':abi', $abi, PDO::PARAM_STR); - - // SQLクエリの実行 - $res = $stmt->execute(); - - // コミット - $res = $pdo->commit(); - - $pdo->beginTransaction(); - - $msg = ''.$ueuse.''; - $title = ''.$userid.'さんが返信しました!'; - $url = $_SERVER['REQUEST_URI']; - $userchk = 'none'; - // 通知用SQL作成 - $stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)"); - - $stmt->bindParam(':touserid', $touserid, PDO::PARAM_STR); - $stmt->bindParam(':msg', $msg, PDO::PARAM_STR); - $stmt->bindParam(':url', $url, PDO::PARAM_STR); - $stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR); - $stmt->bindParam(':title', $title, PDO::PARAM_STR); - - $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); - - // SQLクエリの実行 - $res = $stmt->execute(); - - // コミット - $res = $pdo->commit(); - - } catch(Exception $e) { - - // エラーが発生した時はロールバック - $pdo->rollBack(); - } - - if( $res ) { - $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; - header("Location:".$url.""); - exit; - } else { - $error_message[] = $e->getMessage(); - } - - // プリペアドステートメントを削除 - $stmt = null; - } -} - -if( !empty($_POST['logout']) ) { - if (isset($_SERVER['HTTP_COOKIE'])) { - $cookies = explode(';', $_SERVER['HTTP_COOKIE']); - foreach($cookies as $cookie) { - $parts = explode('=', $cookie); - $name = trim($parts[0]); - setcookie($name, '', time()-1000); - setcookie($name, '', time()-1000, '/'); - } - } - // リダイレクト先のURLへ転送する - $url = '../index.php'; - header('Location: ' . $url, true, 303); - - // すべての出力を終了 - exit; -} - - - -// データベースの接続を閉じる -$pdo = null; - -?> - - - - - - - - - - -ID <?php echo htmlspecialchars($ueuseid, ENT_QUOTES, 'UTF-8'); ?> のユーズ - uwuzu - - - - - -
- -
    - -

    - -
- - -
-

返信

-
- -
-
- -

画像のEXIF情報(位置情報など)は削除されません。
情報漏洩に気をつけてくださいね…

-
- - - - - -
-
-
- - -
-
- -
-
- - - - - - -
- - - - - - \ No newline at end of file From 1151f61b02ce137e3830a2c80dfcf5e761ddfba9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:59:20 +0900 Subject: [PATCH 29/51] Delete user directory --- user/headimage.php | 78 ------ user/index.php | 646 --------------------------------------------- 2 files changed, 724 deletions(-) delete mode 100644 user/headimage.php delete mode 100644 user/index.php diff --git a/user/headimage.php b/user/headimage.php deleted file mode 100644 index ec757d1..0000000 --- a/user/headimage.php +++ /dev/null @@ -1,78 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false -); -$pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - -//$row['userid'] = "daichimarukn"; - -$userid = $_GET['account']; - - -$options = array( - // SQL実行失敗時に例外をスルー - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - // デフォルトフェッチモードを連想配列形式に設定 - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) - // SELECTで得た結果に対してもrowCountメソッドを使えるようにする - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, -); - -if( empty($userid) ) { - $filePath = 'img/deficon/icon.png'; - $data = file_get_contents($filePath); - header('Content-type: image/png'); - //データを出力 - echo $data; - exit(); -}else{ - $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - - $result = $dbh->prepare("SELECT headname, headcontent, headtype, headsize profile FROM account WHERE userid = :userid"); - - $result->bindValue(':userid', $userid); - // SQL実行 - $result->execute(); - - - $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する - - - - header('Content-type: ' . $row['headtype']); - echo $row['headcontent']; - exit(); -} \ No newline at end of file diff --git a/user/index.php b/user/index.php deleted file mode 100644 index cb1e816..0000000 --- a/user/index.php +++ /dev/null @@ -1,646 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_SESSION['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_SESSION['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット - $username = $_SESSION['username']; // セッションに格納されている値をそのままセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_COOKIE['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_COOKIE['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_COOKIE['userid']; // クッキーから取得した値をセット - $username = $_COOKIE['username']; // クッキーから取得した値をセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} else { - // ログインが許可されていない場合、ログインページにリダイレクト - header("Location: ../login.php"); - exit; -} -if(empty($userid)){ - header("Location: ../login.php"); - exit; -} -if(empty($username)){ - header("Location: ../login.php"); - exit; -} - - -function customStripTags($html, $allowedTags) { - $allowedTagsString = '<' . implode('><', $allowedTags) . '>'; - return strip_tags($html, $allowedTagsString); -} - -$allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); - -if( !empty($pdo) ) { - - // データベース接続の設定 - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - )); - - $uwuzuid = str_replace('@', '', $_GET['uwuzuid']); - - // ユーズ内の絵文字を画像に置き換える - function replaceEmojisWithImages($postText) { - // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える - $pattern = '/:(\w+):/'; - $postTextWithImages = preg_replace_callback($pattern, function($matches) { - $emojiName = $matches[1]; - return "$emojiName"; - }, $postText); - return $postTextWithImages; - } - - function replaceURLsWithLinks($postText) { - // URLを正規表現を使って検出 - $pattern = '/(https?:\/\/[^\s]+)/'; - preg_match_all($pattern, $postText, $matches); - - // 検出したURLごとに処理を行う - foreach ($matches[0] as $url) { - // ドメイン部分を抽出 - $parsedUrl = parse_url($url); - $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; - - // ドメインのみを表示するaタグを生成 - $link = "$domain"; - - // URLをドメインのみを表示するaタグで置き換え - $postText = str_replace($url, $link, $postText); - } - - return $postText; - } - - $userQuery = $dbh->prepare("SELECT username, userid, profile, role, follower FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $uwuzuid); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - - if(!empty($userData["userid"])){ - - - $roles = explode(',', $userData["role"]); // カンマで区切られたロールを配列に分割 - - $rerole = $dbh->prepare("SELECT follow, follower, username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime FROM account WHERE userid = :userid"); - - $rerole->bindValue(':userid', $uwuzuid); - // SQL実行 - $rerole->execute(); - - $userdata = $rerole->fetch(); // ここでデータベースから取得した値を $role に代入する - - $roleDataArray = array(); - - foreach ($roles as $roleId) { - $rerole = $dbh->prepare("SELECT rolename, roleauth, rolecolor FROM role WHERE roleidname = :role"); - $rerole->bindValue(':role', $roleId); - $rerole->execute(); - $roleDataArray[$roleId] = $rerole->fetch(); - } - - - //-------フォロー数--------- - $follow = $userdata['follow']; // コンマで区切られたユーザーIDを含む変数 - - // コンマで区切って配列に分割し、要素数を数える - $followIds = explode(',', $follow); - $followCount = count($followIds)-1; - - $follow_on_me = strpos($follow, $userid); - if ($follow_on_me !== false) { - $follow_yes = "フォローされています"; // worldを含む:6 - }else{ - $follow_yes = ""; // worldを含む:6 - } - - //-------フォロワー数--------- - $follower = $userdata['follower']; // コンマで区切られたユーザーIDを含む変数 - - // コンマで区切って配列に分割し、要素数を数える - $followerIds = explode(',', $follower); - $followerCount = count($followerIds)-1; - - $profileText = htmlspecialchars($userData['profile'], ENT_QUOTES, 'UTF-8'); - - }else{ - $userData["userid"] = "none"; - $userData['username'] = "ゆーざーなし"; - } -} - -if (!empty($_POST['follow'])) { - // フォローボタンが押された場合の処理 - $followerList = explode(',', $userdata['follower']); - if (!in_array($userid, $followerList)) { - // 自分が相手をフォローしていない場合、相手のfollowerカラムと自分のfollowカラムを更新 - $followerList[] = $userid; - $newFollowerList = implode(',', $followerList); - - // UPDATE文を実行してフォロー情報を更新 - $updateQuery = $pdo->prepare("UPDATE account SET follower = :follower WHERE userid = :userid"); - $updateQuery->bindValue(':follower', $newFollowerList, PDO::PARAM_STR); - $updateQuery->bindValue(':userid', $userData['userid'], PDO::PARAM_STR); - $res = $updateQuery->execute(); - - // 自分のfollowカラムを更新 - $updateQuery = $pdo->prepare("UPDATE account SET follow = CONCAT_WS(',', follow, :follow) WHERE userid = :userid"); - $updateQuery->bindValue(':follow', $userData["userid"], PDO::PARAM_STR); - $updateQuery->bindValue(':userid', $userid, PDO::PARAM_STR); - $res_follow = $updateQuery->execute(); - - if ($res && $res_follow) { - $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; - header("Location:" . $url); - exit; - } else { - $error_message[] = '更新に失敗しました。'; - } - - $stmt = null; - } -} elseif (!empty($_POST['unfollow'])) { - // フォロー解除ボタンが押された場合の処理 - $followerList = explode(',', $userdata['follower']); - if (in_array($userid, $followerList)) { - // 自分が相手をフォローしている場合、相手のfollowerカラムと自分のfollowカラムを更新 - $followerList = array_diff($followerList, array($userid)); - $newFollowerList = implode(',', $followerList); - - // UPDATE文を実行してフォロー情報を更新 - $updateQuery = $pdo->prepare("UPDATE account SET follower = :follower WHERE userid = :userid"); - $updateQuery->bindValue(':follower', $newFollowerList, PDO::PARAM_STR); - $updateQuery->bindValue(':userid', $userData['userid'], PDO::PARAM_STR); - $res = $updateQuery->execute(); - - $deluserid = ",".$userdata["userid"]; - // 自分のfollowカラムから相手のユーザーIDを削除 - $updateQuery = $pdo->prepare("UPDATE account SET follow = REPLACE(follow, :follow, '') WHERE userid = :userid"); - $updateQuery->bindValue(':follow', $deluserid, PDO::PARAM_STR); - $updateQuery->bindValue(':userid', $userid, PDO::PARAM_STR); - $res_follow = $updateQuery->execute(); - - if ($res && $res_follow) { - $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; - header("Location:" . $url); - exit; - } else { - $error_message[] = '更新に失敗しました。'; - } - - $stmt = null; - } -} - - - -if( !empty($_POST['logout']) ) { - if (isset($_SERVER['HTTP_COOKIE'])) { - $cookies = explode(';', $_SERVER['HTTP_COOKIE']); - foreach($cookies as $cookie) { - $parts = explode('=', $cookie); - $name = trim($parts[0]); - setcookie($name, '', time()-1000); - setcookie($name, '', time()-1000, '/'); - } - } - // リダイレクト先のURLへ転送する - $url = '../index.php'; - header('Location: ' . $url, true, 303); - - // すべての出力を終了 - exit; -} - - - -// データベースの接続を閉じる -$pdo = null; - -?> - - - - - - - - - - -<?php echo htmlspecialchars($userData['username'], ENT_QUOTES, 'UTF-8'); ?> さんのプロフィール - <?php echo file_get_contents($servernamefile);?> - - - - - -
- - -
    - -

    - -
- - -
- -

このユーザーは存在しません

- -
- -
-
- -

-

@

-
- -
- - -
;"> -

;"> - -

-
- -
- -
-

-
- -
-
-
-

からuwuzuを利用しています。

-

フォロー数: フォロワー数:

-
- - - - - - -
- -
- - -
- - - - - -
-
-
- -
-
- - - - - - - -
- - - - - - - - - - - \ No newline at end of file From a2b86263bf3d9df13799b148d23f20580ba404d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:59:30 +0900 Subject: [PATCH 30/51] Delete check.php --- check.php | 225 ------------------------------------------------------ 1 file changed, 225 deletions(-) delete mode 100644 check.php diff --git a/check.php b/check.php deleted file mode 100644 index 1584fe0..0000000 --- a/check.php +++ /dev/null @@ -1,225 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - - //$row['userid'] = "daichimarukn"; - - $userid = $_SESSION['userid']; - - - $options = array( - // SQL実行失敗時に例外をスルー - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - // デフォルトフェッチモードを連想配列形式に設定 - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) - // SELECTで得た結果に対してもrowCountメソッドを使えるようにする - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - ); - - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - - $result = $dbh->prepare("SELECT userid, username, profile, role FROM account WHERE userid = :userid"); - - $result->bindValue(':userid', $userid); - // SQL実行 - $result->execute(); - - - $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する - - $username = $row["username"]; - - $role = $row["role"]; - - - //-------------------------------------- - - $userQuery = $dbh->prepare("SELECT username, userid, loginid, profile, role FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $userid); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - $roles = explode(',', $userData["role"]); // カンマで区切られたロールを配列に分割 - - $roleDataArray = array(); - - foreach ($roles as $roleId) { - $rerole = $dbh->prepare("SELECT rolename, roleauth, rolecolor FROM role WHERE roleidname = :role"); - $rerole->bindValue(':role', $roleId); - $rerole->execute(); - $roleDataArray[$roleId] = $rerole->fetch(); - } - - - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - - -if( !empty($_POST['btn_submit']) ) { - - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['loginid'] = $userData["loginid"]; - - $_SESSION['username'] = $username; - $_SESSION['password'] = ""; - - // リダイレクト先のURLへ転送する - $url = '/home'; - header('Location: ' . $url, true, 303); - - // すべての出力を終了 - exit; -} - -if( !empty($_POST['btn_submit2']) ) { - - $_SESSION['admin_login'] = false; - $_SESSION['userid'] = ""; - - $_SESSION['username'] = ""; - - // リダイレクト先のURLへ転送する - $url = 'index.php'; - header('Location: ' . $url, true, 303); - - // すべての出力を終了 - exit; -} - - - - -// データベースの接続を閉じる -$pdo = null; - -?> - - - - - - - - -確認 - <?php echo file_get_contents($servernamefile);?> - - - - - -
- - -
-

確認

- -

あなたは ですか?

- - -
    - -

    - -
- - -
- -

名前

-

-
- - -
;"> -

;"> - -

-
- -
-
-

プロフィール

-

- -
- -
- - -
-
- - - - - - \ No newline at end of file From c3a5d1a87b5c362b629bd92ceefdd81c95fb39eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:59:43 +0900 Subject: [PATCH 31/51] Delete db.php --- db.php | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 db.php diff --git a/db.php b/db.php deleted file mode 100644 index bdb383b..0000000 --- a/db.php +++ /dev/null @@ -1,9 +0,0 @@ - \ No newline at end of file From bf357bd1eda15a28830aca2bc63b5b3c8e5a7675 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:59:50 +0900 Subject: [PATCH 32/51] Delete image.php --- image.php | 77 ------------------------------------------------------- 1 file changed, 77 deletions(-) delete mode 100644 image.php diff --git a/image.php b/image.php deleted file mode 100644 index c6e3564..0000000 --- a/image.php +++ /dev/null @@ -1,77 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false -); -$pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - -//$row['userid'] = "daichimarukn"; - -$userid = $_SESSION['userid']; - - -$options = array( - // SQL実行失敗時に例外をスルー - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - // デフォルトフェッチモードを連想配列形式に設定 - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) - // SELECTで得た結果に対してもrowCountメソッドを使えるようにする - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, -); - -if( empty($userid) ) { - $filePath = 'img/deficon/icon.png'; - $data = file_get_contents($filePath); - header('Content-type: image/png'); - //データを出力 - echo $data; - exit(); -}else{ - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - - $result = $dbh->prepare("SELECT iconname, iconcontent, icontype, iconsize profile FROM account WHERE userid = :userid"); - - $result->bindValue(':userid', $userid); - // SQL実行 - $result->execute(); - - - $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する - - - - header('Content-type: ' . $row['icontype']); - echo $row['iconcontent']; - exit(); -} \ No newline at end of file From 96802bf57e711a9272f13de666ce5ddb94f09c18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:59:55 +0900 Subject: [PATCH 33/51] Delete index.php --- index.php | 145 ------------------------------------------------------ 1 file changed, 145 deletions(-) delete mode 100644 index.php diff --git a/index.php b/index.php deleted file mode 100644 index f0a9172..0000000 --- a/index.php +++ /dev/null @@ -1,145 +0,0 @@ - - - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - $stmt = $pdo->prepare("SELECT COUNT(userid) FROM account"); - $stmt->execute(); - $count2 = $stmt->fetchColumn(); - - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); -$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); - -$result = $mysqli->query("SELECT userid FROM account ORDER BY datetime"); - -/* 結果セットの行数を取得します */ -$count1 = $result->num_rows; - -$result2 = $mysqli->query("SELECT uniqid FROM ueuse ORDER BY datetime"); - -/* 結果セットの行数を取得します */ -$count2 = $result2->num_rows; - -?> - - - - - - - - - - -<?php echo file_get_contents($servernamefile);?> - - - - - - - - - -
- - -
- - -
    - -

    - -
- - -

へようこそ!

-
-
- -

'; - }?>

- - お問い合わせ : - -
-
-
ユーザー数
-

"?>

-
-
-
投稿数
-

"?>

-
-
- - - - -
-
- - - - \ No newline at end of file From 4812c6c5aee1f11d9a4ad048a842cecbf71817e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 20:00:03 +0900 Subject: [PATCH 34/51] Delete login.php --- login.php | 205 ------------------------------------------------------ 1 file changed, 205 deletions(-) delete mode 100644 login.php diff --git a/login.php b/login.php deleted file mode 100644 index 99f46c1..0000000 --- a/login.php +++ /dev/null @@ -1,205 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -if( !empty($_POST['btn_submit']) ) { - - - //$row['userid'] = "daichimarukn"; - - $userid = $_POST['userid']; - $password = $_POST['password']; - - - $options = array( - // SQL実行失敗時に例外をスルー - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - // デフォルトフェッチモードを連想配列形式に設定 - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) - // SELECTで得た結果に対してもrowCountメソッドを使えるようにする - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - ); - - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - - $result = $dbh->prepare("SELECT userid, password, loginid FROM account WHERE userid = :userid"); - - $result->bindValue(':userid', $userid); - // SQL実行 - $result->execute(); - - - - // ... (前略) - // IDの入力チェック - if( empty($userid) ) { - $error_message[] = 'ユーザーIDを入力してください。'; - } else { - - if( empty($password) ) { - $error_message[] = 'パスワードを入力してください。'; - } else { - - if($result->rowCount() > 0) { - $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する - - if($row["userid"] == $userid){ - if(password_verify($password,$row["password"])){ - $_SESSION['admin_login'] = true; - - $_SESSION['userid'] = $userid; - $_SESSION['loginid'] = $row["loginid"]; - // リダイレクト先のURLへ転送する - $url = 'check.php'; - header('Location: ' . $url, true, 303); - - // すべての出力を終了 - exit; - } - else{ - $error_message[] = 'IDまたはパスワードが違います'; - } - }else{ - $error_message[] = 'IDまたはパスワードが違います'; - } - } - else { - $error_message[] = 'IDまたはパスワードが違います'; - } - } - - } - - // ... (後略) - - - -} - -// データベースの接続を閉じる -$pdo = null; - -?> - - - - - - - - -ログイン - <?php echo file_get_contents($servernamefile);?> - - - - - -
- - -
-

ログイン

- -

IDとパスワードを入力してください!

- - -
    - -

    - -
- - - - -
- - -
- - - -
- - -
- - - - -
- 戻る -
-
-
- - - - - - - \ No newline at end of file From d84f1ea175ab06225ff384a83d0ca4860aaa4c5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 20:00:09 +0900 Subject: [PATCH 35/51] Delete new.php --- new.php | 498 -------------------------------------------------------- 1 file changed, 498 deletions(-) delete mode 100644 new.php diff --git a/new.php b/new.php deleted file mode 100644 index 382078e..0000000 --- a/new.php +++ /dev/null @@ -1,498 +0,0 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -if( !empty($_POST['btn_submit']) ) { - - - //$row['userid'] = "daichimarukn"; - - // 空白除去 - $username = $_POST['username']; - $userid = $_POST['userid']; - - $password = $_POST['password']; - $chkpass = $_POST['chkpass']; - $mailadds = $_POST['mailadds']; - - $profile = $_POST['profile']; - - - //cookieに保存 - setcookie("username",$username,time()+60*60*24*14); - setcookie("userid",$userid,time()+60*60*24*14); - - setcookie("password",$password,time()+60*60*24*14); - setcookie("mailadds",$mailadds,time()+60*60*24*14); - - setcookie("profile",$profile,time()+60*60*24*14); - - if (!empty($_FILES['image']['name'])) { - $img = $_FILES['image']; - }else{ - $localFilePath = 'img/deficon/icon.png'; - $img = [ - 'name' => 'deficon.png', - 'type' => 'image/png', // 仮の Content-Type を指定(必要に応じて適切なものに変更してください) - 'tmp_name' => $localFilePath, - 'error' => 0, - 'size' => filesize($localFilePath) - ]; - } - - $localFilePathhead = 'img/defhead/head.png'; - $headimg = [ - 'name' => 'defhead.png', - 'type' => 'image/png', // 仮の Content-Type を指定(必要に応じて適切なものに変更してください) - 'tmp_name' => $localFilePathhead, - 'error' => 0, - 'size' => filesize($localFilePathhead) - ]; - - - - $options = array( - // SQL実行失敗時に例外をスルー - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - // デフォルトフェッチモードを連想配列形式に設定 - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) - // SELECTで得た結果に対してもrowCountメソッドを使えるようにする - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - ); - - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - - $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); - - $query->execute(array(':userid' => $userid)); - - $result = $query->fetch(); - - - // ユーザーネームの入力チェック - if( empty($username) ) { - $error_message[] = '表示名を入力してください。'; - } else { - // 文字数を確認 - if( 25 < mb_strlen($username, 'UTF-8') ) { - $error_message[] = 'ユーザーネームは25文字以内で入力してください。'; - } - } - - // IDの入力チェック - if( empty($userid) ) { - $error_message[] = 'ユーザーIDを入力してください。'; - } else { - - // 文字数を確認 - if( 20 < mb_strlen($userid, 'UTF-8') ) { - $error_message[] = 'IDは20文字以内で入力してください。'; - } - - if($userid === 'uwuzu_official'){ - $error_message[] = 'そのIDは登録禁止になっています。'; - } - - if($result > 0){ - $error_message[] = 'このID('.$userid.')は既に使用されています。他のIDを作成してください。'; //このE-mailは既に使用されています。 - } - - } - - // パスワードの入力チェック - if( empty($password) ) { - $error_message[] = 'パスワードを入力してください。'; - } else { - - $weakPasswords = array( - "password", - "123456", - "123456789", - "12345", - "12345678", - "123123", - "1234567890", - "1234567", - "1q2w3e", - "qwerty123", - "aa12345678", - "password1", - "1234", - "qwertyuiop", - "123321", - "12321", - "qwertyui", - "abcd1234", - "zaq12wsx", - "1q2w3e4r", - "qwer1234", - "sakura", - "asdf1234", - "asdfghjkl", - "asdfghjk", - "member", - "1qaz2wsx", - "doraemon", - "makoto", - "takeshi", - "machi1", - "machida", - "machida1", - "tokyo", - "arashi", - "dropbox", - "twitter", - "elonmusk", - "xcorp", - "1234qwer", - "japan", - "nippon", - "tukareta", - "tweet", - "discord", - "misskey", - "qwerty", - "123456789", - "abc123", - "password123", - "admin", - "letmein", - "iloveyou", - "111111", - "12345678910", - "user", - "root", - "system", - // 他にも弱いパスワードを追加できます - ); - - function isWeakPassword($passwords) { - global $weakPasswords; - return in_array($passwords, $weakPasswords); - } - - // テスト用のパスワード(実際にはユーザー入力などから取得することになります。 - - if (isWeakPassword($password)) { - $error_message[] = "パスワードが弱いです。セキュリティ上変更してください。"; - } else { - - } - - if ($chkpass == $password ){ - - }else{ - $error_message[] = '確認用パスワードが違います。'; - } - - if( 4 > mb_strlen($password, 'UTF-8') ) { - $error_message[] = 'パスワードは4文字以上である必要があります。'; - } - - // 文字数を確認 - if( 100 < mb_strlen($password, 'UTF-8') ) { - $error_message[] = 'パスワードは100文字以内で入力してください。'; - } - } - - if( empty($error_message) ) { - // トランザクション開始 - $pdo->beginTransaction(); - $datetime = date("Y-m-d H:i:s"); - - try { - - $role = "user"; - $admin = "none"; - $hashpassword = password_hash($password, PASSWORD_DEFAULT); - $loginid = sha1(uniqid(mt_rand(), true)); - - // SQL作成 - $stmt = $pdo->prepare("INSERT INTO account (username, userid, password, loginid, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime, admin) VALUES (:username, :userid, :password, :loginid, :mailadds, :profile, :iconname, :iconcontent, :icontype, :iconsize, :headname, :headcontent, :headtype, :headsize, :role, :datetime, :admin )"); - - $iconName = $img['name']; - $iconType = $img['type']; - $iconContent = file_get_contents($img['tmp_name']); - $iconSize = $img['size']; - - // アイコン画像のバインド - $stmt->bindValue(':iconname', $iconName, PDO::PARAM_STR); - $stmt->bindValue(':icontype', $iconType, PDO::PARAM_STR); - $stmt->bindValue(':iconcontent', $iconContent, PDO::PARAM_STR); - $stmt->bindValue(':iconsize', $iconSize, PDO::PARAM_INT); - - // ヘッダー画像関連の処理 - $headName = $headimg['name']; - $headType = $headimg['type']; - $headContent = file_get_contents($headimg['tmp_name']); - $headSize = $headimg['size']; - - // ヘッダー画像のバインド - $stmt->bindValue(':headname', $headName, PDO::PARAM_STR); - $stmt->bindValue(':headtype', $headType, PDO::PARAM_STR); - $stmt->bindValue(':headcontent', $headContent, PDO::PARAM_STR); - $stmt->bindValue(':headsize', $headSize, PDO::PARAM_INT); - - // 他の値をセット - $stmt->bindParam(':username', $username, PDO::PARAM_STR); - $stmt->bindParam(':userid', $userid, PDO::PARAM_STR); - $stmt->bindParam(':password', $hashpassword, PDO::PARAM_STR); - $stmt->bindParam(':loginid', $loginid, PDO::PARAM_STR); - $stmt->bindParam(':mailadds', $mailadds, PDO::PARAM_STR); - $stmt->bindParam(':profile', $profile, PDO::PARAM_STR); - $stmt->bindParam(':role', $role, PDO::PARAM_STR); - $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); - - $stmt->bindParam(':admin', $admin, PDO::PARAM_STR); - - // SQLクエリの実行 - $res = $stmt->execute(); - - // コミット - $res = $pdo->commit(); - - } catch (Exception $e) { - - // エラーが発生した時はロールバック - $pdo->rollBack(); - } - - if ($res) { - // リダイレクト先のURLへ転送する - $url = 'success.php'; - header('Location: ' . $url, true, 303); - - // すべての出力を終了 - exit; - } else { - $error_message[] = '登録に失敗しました。'; - } - - // プリペアドステートメントを削除 - $stmt = null; - } -} - -// データベースの接続を閉じる -$pdo = null; - -?> - - - - - - - - -アカウント登録 - <?php echo file_get_contents($servernamefile);?> - - - - - - - -
- - -
-

アカウント登録

- -

アカウント登録です。

-

必須項目には「*」があります。 - - -

    - -

    - -
- - -
- -
-
- -
- -
- - - - -
-

ユーザーネーム *

-
プロフィールページに掲載され公開されます。
※サービス管理者が確認できます。
- -
-
-

ユーザーID *

-
後から変更はできません。
プロフィールページに掲載され公開されます。
※サービス管理者が確認できます。
- -
- -
-

パスワード *

-
ログイン時に必要となります。
※サービス管理者が確認できません。
- -
- -
-

パスワード再確認 *

- -
- -
-

メールアドレス

-
設定しておくとアカウント復旧に利用できます。
※サービス管理者が確認できます。
- -
- -
-

プロフィール

-
プロフィールページに掲載され公開されます。
※サービス管理者が確認できます。
- -
- - - -

登録を押すと利用規約とプライバシーポリシーに同意したこととなります。
未確認の場合は上のボタンよりお読みください。

- - - -
- -
- 戻る -
-
- -
- - - - - - - - \ No newline at end of file From 2d7368b2f3d6ba0baf207adfb192b3af0ab0a344 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 20:00:15 +0900 Subject: [PATCH 36/51] Delete success.php --- success.php | 41 ----------------------------------------- 1 file changed, 41 deletions(-) delete mode 100644 success.php diff --git a/success.php b/success.php deleted file mode 100644 index d2cca35..0000000 --- a/success.php +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - -アカウント登録完了!!! - <?php echo file_get_contents($servernamefile);?> - - - - - - - -
- - -
-

アカウント作成完了!

-


いぇ~い!

-

88888888888

-

アカウント登録が完了しました!

- - -
-
- - - - \ No newline at end of file From 5e006c200719c0f9b49330b7072b6675ca3a6cc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 20:00:21 +0900 Subject: [PATCH 37/51] Delete sw.js --- sw.js | 42 ------------------------------------------ 1 file changed, 42 deletions(-) delete mode 100644 sw.js diff --git a/sw.js b/sw.js deleted file mode 100644 index 024cdc2..0000000 --- a/sw.js +++ /dev/null @@ -1,42 +0,0 @@ -var CACHE_NAME = "app_uwuzu"; -var urlsToCache = [ - "home/index.php", - "search/index.php", - "require/botbox.php", - "require/leftbox.php", - "require/rightbox.php", - "require/botbox.php", - "user/index.php", - "settings/index.php", - "rule/terms.php", - "rule/privacypolicy.php", - "rule/uwuzuabout.php", - "index.php", - "login.php", - "new.php", - "check.php", - "success.php", -]; - -self.addEventListener('install', function(event) { - event.waitUntil( - caches.open(CACHE_NAME) - .then( - function(cache){ - return cache.addAll(urlsToCache); - }) - ); -}); - -self.addEventListener('fetch', function(event) { - event.respondWith( - caches.match(event.request) - .then( - function (response) { - if (response) { - return response; - } - return fetch(event.request); - }) - ); -}); \ No newline at end of file From 77858d9c8288f7c338e5a8c3ae37cb3fc3fc0a95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 21:44:49 +0900 Subject: [PATCH 38/51] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9246538..d493659 100644 --- a/README.md +++ b/README.md @@ -98,4 +98,4 @@ AGPLライセンスです!!! - uwuzurelease.txt : uwuzuのバージョン等記載(uwuzuを改造した場合は書き換え) ### これでサーバーは完成!!! -もう一度サーバーを起動してみんなに公開しよう!!! +脆弱だから自己責任で楽しんでね~() From 38f2a3b731b228c736a8c9f5864b486d7c3bd2ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Fri, 18 Aug 2023 12:51:29 +0900 Subject: [PATCH 39/51] Update README.md --- README.md | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d493659..df80067 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ AGPLライセンスです!!! 導入方法は以下のとおりです! -## uwuzuサーバーの建て方 -※MySQLの設定結構めんどいです。 +## 5. サーバーの建て方 +※MySQLの設定結構めんどいです。脆弱です。 まず、Apache2とPHP 8とmysql Ver 15が導入されているサーバーを準備します! 次にSQLを設定します。(InnoDB) まず、お好きな名前でDBを作成し、その中に、account,emoji,notice,role,ueuse,notificationとテーブルを作成します。 @@ -81,6 +81,28 @@ AGPLライセンスです!!! - datetime(datetime) 通知日時 - userchk(varchar(25)) 通知の既読確認 +### invitation +- sysid(INT)(AUTO_INCREMENT) 追加されるとカウントされるシステム用ID +- code(varchar(512)) 招待コード +- used(varchar(25)) 使用済みかそうでないか +- datetime(datetime) 招待コード仕様日時更新用 + +すべて作成完了したらGithubよりuwuzuのファイルをDLし、解凍し、それをサーバーの動作ディレクトリに置き、Apacheのhttpd.confからその動作ディレクトリを指定し、あとはApacheとphpとMy SQLを起動するだけ! +起動したらまずDBのroleにphpmyadminから「user」ロールを追加権限は「user」でOK。ロール名はとりあえず「一般ユーザー」ロールの色はHEXコード(#を除く)で000000のように指定。 +そしたら普通にuwuzuにアクセスして自分のアカウントを登録。 +それが終わったら一度サーバーを止め、uwuzuの動作ディレクトリ内のserverフォルダ内のファイルを各自設定 +ファイルの機能は以下の通り! +- admininfo.txt : 管理者名(てすとまる/@sampledayo) +- contact.txt : 管理者への連絡用メアド(sample@test.com) +- info.txt : サーバー登録時に表示されるメッセージ(好きな内容) +- privacypolicy.txt : プライバシーポリシー(サーバーのプライバシーポリシーを記載) +- servername.txt : サーバー名(てすとさば) +- terms.txt : 利用規約(サーバーの利用規約を記載) +- uwuzuabout.txt : このファイル(uwuzuを改造した場合は書き換え) +- uwuzuinfo.txt : uwuzuのバージョン等記載(uwuzuを改造した場合は書き換え) +- uwuzurelease.txt : uwuzuのバージョン等記載(uwuzuを改造した場合は書き換え) +- onlyuser.txt : 招待コード機能をオンにするかどうか、「true」でオン、「false」でオフ。招待コードはDBに直接追加。 + すべて作成完了したらGithubよりuwuzuのファイルをDLし、解凍し、それをサーバーの動作ディレクトリに置き、Apacheのhttpd.confからその動作ディレクトリを指定し、あとはApacheとphpとMy SQLを起動するだけ! 起動したらまずDBのroleにphpmyadminから「user」ロールを追加権限は「user」でOK。ロール名はとりあえず「一般ユーザー」ロールの色はHEXコード(#を除く)で000000のように指定。 From 6845f31a4a567435442aa6a47312d3cf48dfb073 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Sat, 19 Aug 2023 01:52:35 +0900 Subject: [PATCH 40/51] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index df80067..15698dd 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ AGPLライセンスです!!! - follow(text) アカウントがフォローしている人保存用 - follower(text) アカウントがフォローされている人保存用 - admin(varchar(25)) 管理者アカウントなら「yes」、それ以外なら「none」と入力。 +- authcode(varchar(256)) 二段階認証用キー保存用 ### emoji - sysid(INT)(AUTO_INCREMENT) アカウントが追加されるとカウントされるシステム用ID From 9ede52e05e30890ec544c73bb6c42abbddb49926 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Sat, 19 Aug 2023 17:49:56 +0900 Subject: [PATCH 41/51] Version 1.2.5 --- abi/addabi.php | 80 +- addauthcode.php | 224 + api/userdata-api.php | 148 +- authcode/GoogleAuthenticator.php | 252 ++ authcodechk.php | 159 + authlogin.php | 182 + check.php | 8 +- css/home.css | 7026 +++++++++++++++--------------- css/style.css | 1744 ++++---- db.php | 16 +- delete/delete.php | 54 +- emoji/addemoji.php | 4 +- emoji/emojiimage.php | 148 +- emoji/index.php | 3 + errorpage/400.php | 104 +- errorpage/401.php | 104 +- errorpage/403.php | 104 +- errorpage/404.php | 104 +- errorpage/500.php | 104 +- errorpage/503.php | 104 +- errorpage/serverstop.php | 126 +- favorite/favorite.php | 114 +- home/index.php | 32 +- home/tlimage.php | 154 +- image.php | 152 +- img/タイトルなし.png | Bin 0 -> 6256 bytes index.php | 356 +- js/back.js | 12 +- login.php | 32 +- manifest/uwuzuicon.png | Bin 0 -> 5221 bytes new.php | 62 +- nextpage/nextpage.php | 236 +- nextpage/notification.php | 126 +- nextpage/notificationview.php | 64 +- nextpage/searchpage.php | 249 +- nextpage/ueusepage.php | 264 +- nextpage/userpage.php | 265 +- nextpage/view.php | 168 +- notice/addnotice.php | 4 +- notice/notice.php | 80 +- notification/index.php | 456 +- others/index.php | 61 +- passrecovery/back.js | 6 + passrecovery/badrecovery.php | 40 + passrecovery/donerecovery.php | 40 + passrecovery/index.php | 204 + passrecovery/startrecovery.php | 298 ++ require/botbox.php | 18 +- require/leftbox.php | 50 +- require/rightbox.php | 88 +- rule/privacypolicy.php | 158 +- rule/releasenotes.php | 184 +- rule/terms.php | 158 +- rule/uwuzuabout.php | 184 +- search/index.php | 2 +- server/admininfo.txt | 1 + server/contact.txt | 1 + server/info.txt | 3 + server/onlyuser.txt | 1 + server/privacypolicy.txt | 1 + server/servername.txt | 1 + server/serverstop.txt | 2 + server/terms.txt | 1 + server/uwuzuabout.txt | 147 + server/uwuzuinfo.txt | 4 + server/uwuzurelease.txt | 105 + settings/addauthcode.php | 253 ++ settings/index.php | 67 +- settings/success.php | 156 + success.php | 80 +- sw.js | 82 +- ueuse/index.php | 50 +- user/headimage.php | 154 +- user/index.php | 20 +- 74 files changed, 9283 insertions(+), 6961 deletions(-) create mode 100644 addauthcode.php create mode 100644 authcode/GoogleAuthenticator.php create mode 100644 authcodechk.php create mode 100644 authlogin.php create mode 100644 img/タイトルなし.png create mode 100644 manifest/uwuzuicon.png create mode 100644 passrecovery/back.js create mode 100644 passrecovery/badrecovery.php create mode 100644 passrecovery/donerecovery.php create mode 100644 passrecovery/index.php create mode 100644 passrecovery/startrecovery.php create mode 100644 server/admininfo.txt create mode 100644 server/contact.txt create mode 100644 server/info.txt create mode 100644 server/onlyuser.txt create mode 100644 server/privacypolicy.txt create mode 100644 server/servername.txt create mode 100644 server/serverstop.txt create mode 100644 server/terms.txt create mode 100644 server/uwuzuabout.txt create mode 100644 server/uwuzuinfo.txt create mode 100644 server/uwuzurelease.txt create mode 100644 settings/addauthcode.php create mode 100644 settings/success.php diff --git a/abi/addabi.php b/abi/addabi.php index 6766577..021a307 100644 --- a/abi/addabi.php +++ b/abi/addabi.php @@ -1,40 +1,40 @@ -beginTransaction(); - - $stmt = $pdo->prepare("UPDATE ueuse SET abi = :abi, abidate = :abidate WHERE uniqid = :uniqid"); - $stmt->bindValue(':abi', $abitext, PDO::PARAM_STR); - $stmt->bindValue(':abidate', $abidate, PDO::PARAM_STR); - $stmt->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); - - // SQLクエリの実行 - $res = $stmt->execute(); - - // コミット - $pdo->commit(); - - if ($res) { - header('Content-Type: application/json'); - echo json_encode(['success' => true]); - exit; - } else { - header('Content-Type: application/json'); - echo json_encode(['success' => false, 'error' => '追加に失敗しました。']); - exit; - } - } catch(PDOException $e) { - header('Content-Type: application/json'); - echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); - exit; - } -} -?> +beginTransaction(); + + $stmt = $pdo->prepare("UPDATE ueuse SET abi = :abi, abidate = :abidate WHERE uniqid = :uniqid"); + $stmt->bindValue(':abi', $abitext, PDO::PARAM_STR); + $stmt->bindValue(':abidate', $abidate, PDO::PARAM_STR); + $stmt->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $pdo->commit(); + + if ($res) { + header('Content-Type: application/json'); + echo json_encode(['success' => true]); + exit; + } else { + header('Content-Type: application/json'); + echo json_encode(['success' => false, 'error' => '追加に失敗しました。']); + exit; + } + } catch(PDOException $e) { + header('Content-Type: application/json'); + echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); + exit; + } +} +?> diff --git a/addauthcode.php b/addauthcode.php new file mode 100644 index 0000000..5fc9c8d --- /dev/null +++ b/addauthcode.php @@ -0,0 +1,224 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +require_once 'authcode/GoogleAuthenticator.php'; + +if(empty($_SESSION['secretcode'])){ + $authcode = new PHPGangsta_GoogleAuthenticator(); + $secret = $authcode->createSecret(); + $_SESSION['secretcode'] = $secret; +}else{ + $authcode = new PHPGangsta_GoogleAuthenticator(); + $secret = $_SESSION['secretcode']; +} + +if( !empty($_POST['btn_submit']) ) { + $chkauthcode = new PHPGangsta_GoogleAuthenticator(); + //二段階認証の確認 + $userauthcode = $_POST['usercode']; + + $discrepancy = 2; + + $checkResult = $chkauthcode->verifyCode($secret, $userauthcode, $discrepancy); + if ($checkResult) { + if( empty($error_message) ) { + $secret = $_SESSION['secretcode']; + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("UPDATE account SET authcode = :authcode WHERE userid = :userid"); + + $stmt->bindValue(':authcode', $secret, PDO::PARAM_STR); + + // ユーザーIDのバインド(WHERE句に必要) + $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + $userid = ""; + // リダイレクト先のURLへ転送する + $url = 'success.php'; + header('Location: ' . $url, true, 303); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } + } else { + $error_message[] = "二段階認証が出来ませんでした。再度お試しください。"; + } +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +アカウント登録 - <?php echo file_get_contents($servernamefile);?> + + + + + + + +
+ + +
+

二段階認証

+ +

以下の二次元コードより二段階認証をセットアップしてください。

+

セットアップが完了したら入力ボックスにコードを入力して「次へ」ボタンを押してください!
注意:まだ二段階認証の設定は終わっていません。次へを押すと設定が完了します。

+ + +
    + +

    + +
+ + + getQRCodeGoogleUrl($name, $secret, $title); + ?> +
+ +
+ +
+
+

二段階認証コード

+
先程セットアップして出力された6桁のコードを入力してください。
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/api/userdata-api.php b/api/userdata-api.php index c9c77c2..830c928 100644 --- a/api/userdata-api.php +++ b/api/userdata-api.php @@ -1,75 +1,75 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - } catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); - } - - - if (!empty($pdo)) { - - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - )); - - $userQuery = $pdo->prepare("SELECT username,profile,datetime,follow,follower FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $search); - $userQuery->execute(); - $userdata = $userQuery->fetch(); - } -if (empty($userdata)){ - $response = array( - 'error_code' => "userid_not_found", - ); -}else{ - $followcnts = explode(',', $userdata["follow"]); - $userdata["follow_cnt"] = count($followcnts)-1; - - $followercnts = explode(',', $userdata["follower"]); - $userdata["follower_cnt"] = count($followercnts)-1; - - $response = array( - 'user_name' => $userdata["username"], - 'profile' => $userdata["profile"], - 'registered_date' => $userdata["datetime"], - 'follow' => $userdata["follow"], - 'follow_cnt' => $userdata["follow_cnt"], - 'follower' => $userdata["follower"], - 'follower_cnt' => $userdata["follower_cnt"], - ); -} -echo json_encode($response); - -}else{ - - $err = "input_not_found"; - $response = array( - 'error_code' => $err, - ); - - echo json_encode($response); -} + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + } catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); + } + + + if (!empty($pdo)) { + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $pdo->prepare("SELECT username,profile,datetime,follow,follower FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $search); + $userQuery->execute(); + $userdata = $userQuery->fetch(); + } +if (empty($userdata)){ + $response = array( + 'error_code' => "userid_not_found", + ); +}else{ + $followcnts = explode(',', $userdata["follow"]); + $userdata["follow_cnt"] = count($followcnts)-1; + + $followercnts = explode(',', $userdata["follower"]); + $userdata["follower_cnt"] = count($followercnts)-1; + + $response = array( + 'user_name' => htmlentities($userdata["username"]), + 'profile' => htmlentities($userdata["profile"]), + 'registered_date' => htmlentities($userdata["datetime"]), + 'follow' => htmlentities($userdata["follow"]), + 'follow_cnt' => htmlentities($userdata["follow_cnt"]), + 'follower' => htmlentities($userdata["follower"]), + 'follower_cnt' => htmlentities($userdata["follower_cnt"]), + ); +} +echo json_encode($response, JSON_UNESCAPED_UNICODE);; + +}else{ + + $err = "input_not_found"; + $response = array( + 'error_code' => $err, + ); + + echo json_encode($response, JSON_UNESCAPED_UNICODE); +} ?> \ No newline at end of file diff --git a/authcode/GoogleAuthenticator.php b/authcode/GoogleAuthenticator.php new file mode 100644 index 0000000..bf7d116 --- /dev/null +++ b/authcode/GoogleAuthenticator.php @@ -0,0 +1,252 @@ +_getBase32LookupTable(); + + // Valid secret lengths are 80 to 640 bits + if ($secretLength < 16 || $secretLength > 128) { + throw new Exception('Bad secret length'); + } + $secret = ''; + $rnd = false; + if (function_exists('random_bytes')) { + $rnd = random_bytes($secretLength); + } elseif (function_exists('mcrypt_create_iv')) { + $rnd = mcrypt_create_iv($secretLength, MCRYPT_DEV_URANDOM); + } elseif (function_exists('openssl_random_pseudo_bytes')) { + $rnd = openssl_random_pseudo_bytes($secretLength, $cryptoStrong); + if (!$cryptoStrong) { + $rnd = false; + } + } + if ($rnd !== false) { + for ($i = 0; $i < $secretLength; ++$i) { + $secret .= $validChars[ord($rnd[$i]) & 31]; + } + } else { + throw new Exception('No source of secure random'); + } + + return $secret; + } + + /** + * Calculate the code, with given secret and point in time. + * + * @param string $secret + * @param int|null $timeSlice + * + * @return string + */ + public function getCode($secret, $timeSlice = null) + { + if ($timeSlice === null) { + $timeSlice = floor(time() / 30); + } + + $secretkey = $this->_base32Decode($secret); + + // Pack time into binary string + $time = chr(0).chr(0).chr(0).chr(0).pack('N*', $timeSlice); + // Hash it with users secret key + $hm = hash_hmac('SHA1', $time, $secretkey, true); + // Use last nipple of result as index/offset + $offset = ord(substr($hm, -1)) & 0x0F; + // grab 4 bytes of the result + $hashpart = substr($hm, $offset, 4); + + // Unpak binary value + $value = unpack('N', $hashpart); + $value = $value[1]; + // Only 32 bits + $value = $value & 0x7FFFFFFF; + + $modulo = pow(10, $this->_codeLength); + + return str_pad($value % $modulo, $this->_codeLength, '0', STR_PAD_LEFT); + } + + /** + * Get QR-Code URL for image, from google charts. + * + * @param string $name + * @param string $secret + * @param string $title + * @param array $params + * + * @return string + */ + public function getQRCodeGoogleUrl($name, $secret, $title = null, $params = array()) + { + $width = !empty($params['width']) && (int) $params['width'] > 0 ? (int) $params['width'] : 200; + $height = !empty($params['height']) && (int) $params['height'] > 0 ? (int) $params['height'] : 200; + $level = !empty($params['level']) && array_search($params['level'], array('L', 'M', 'Q', 'H')) !== false ? $params['level'] : 'M'; + + $urlencoded = urlencode('otpauth://totp/'.$name.'?secret='.$secret.''); + if (isset($title)) { + $urlencoded .= urlencode('&issuer='.urlencode($title)); + } + + return "https://api.qrserver.com/v1/create-qr-code/?data=$urlencoded&size=${width}x${height}&ecc=$level"; + } + + /** + * Check if the code is correct. This will accept codes starting from $discrepancy*30sec ago to $discrepancy*30sec from now. + * + * @param string $secret + * @param string $code + * @param int $discrepancy This is the allowed time drift in 30 second units (8 means 4 minutes before or after) + * @param int|null $currentTimeSlice time slice if we want use other that time() + * + * @return bool + */ + public function verifyCode($secret, $code, $discrepancy = 1, $currentTimeSlice = null) + { + if ($currentTimeSlice === null) { + $currentTimeSlice = floor(time() / 30); + } + + if (strlen($code) != 6) { + return false; + } + + for ($i = -$discrepancy; $i <= $discrepancy; ++$i) { + $calculatedCode = $this->getCode($secret, $currentTimeSlice + $i); + if ($this->timingSafeEquals($calculatedCode, $code)) { + return true; + } + } + + return false; + } + + /** + * Set the code length, should be >=6. + * + * @param int $length + * + * @return PHPGangsta_GoogleAuthenticator + */ + public function setCodeLength($length) + { + $this->_codeLength = $length; + + return $this; + } + + /** + * Helper class to decode base32. + * + * @param $secret + * + * @return bool|string + */ + protected function _base32Decode($secret) + { + if (empty($secret)) { + return ''; + } + + $base32chars = $this->_getBase32LookupTable(); + $base32charsFlipped = array_flip($base32chars); + + $paddingCharCount = substr_count($secret, $base32chars[32]); + $allowedValues = array(6, 4, 3, 1, 0); + if (!in_array($paddingCharCount, $allowedValues)) { + return false; + } + for ($i = 0; $i < 4; ++$i) { + if ($paddingCharCount == $allowedValues[$i] && + substr($secret, -($allowedValues[$i])) != str_repeat($base32chars[32], $allowedValues[$i])) { + return false; + } + } + $secret = str_replace('=', '', $secret); + $secret = str_split($secret); + $binaryString = ''; + for ($i = 0; $i < count($secret); $i = $i + 8) { + $x = ''; + if (!in_array($secret[$i], $base32chars)) { + return false; + } + for ($j = 0; $j < 8; ++$j) { + $x .= str_pad(base_convert(@$base32charsFlipped[@$secret[$i + $j]], 10, 2), 5, '0', STR_PAD_LEFT); + } + $eightBits = str_split($x, 8); + for ($z = 0; $z < count($eightBits); ++$z) { + $binaryString .= (($y = chr(base_convert($eightBits[$z], 2, 10))) || ord($y) == 48) ? $y : ''; + } + } + + return $binaryString; + } + + /** + * Get array with all 32 characters for decoding from/encoding to base32. + * + * @return array + */ + protected function _getBase32LookupTable() + { + return array( + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', // 7 + 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', // 15 + 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', // 23 + 'Y', 'Z', '2', '3', '4', '5', '6', '7', // 31 + '=', // padding char + ); + } + + /** + * A timing safe equals comparison + * more info here: http://blog.ircmaxell.com/2014/11/its-all-about-time.html. + * + * @param string $safeString The internal (safe) value to be checked + * @param string $userString The user submitted (unsafe) value + * + * @return bool True if the two strings are identical + */ + private function timingSafeEquals($safeString, $userString) + { + if (function_exists('hash_equals')) { + return hash_equals($safeString, $userString); + } + $safeLen = strlen($safeString); + $userLen = strlen($userString); + + if ($userLen != $safeLen) { + return false; + } + + $result = 0; + + for ($i = 0; $i < $userLen; ++$i) { + $result |= (ord($safeString[$i]) ^ ord($userString[$i])); + } + + // They are only identical strings if $result is exactly 0... + return $result === 0; + } +} diff --git a/authcodechk.php b/authcodechk.php new file mode 100644 index 0000000..424d95a --- /dev/null +++ b/authcodechk.php @@ -0,0 +1,159 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if( !empty($_POST['btn_submit']) ) { + $_SESSION['userid'] = $userid; + // リダイレクト先のURLへ転送する + $url = 'addauthcode.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + +if( !empty($_POST['skip_submit']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + $userid = ""; + // リダイレクト先のURLへ転送する + $url = 'success.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +アカウント登録 - <?php echo file_get_contents($servernamefile);?> + + + + + + + +
+ + +
+

二段階認証

+ +

二段階認証を設定しますか?

+

二段階認証を設定することによりログイン時の一時キーが必要となりセキュリティを強化することが出来ます。
設定にはGoogleAuthenticatorなどの二段階認証アプリが必要です。

+ + +
    + +

    + +
+ + +
+ + +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/authlogin.php b/authlogin.php new file mode 100644 index 0000000..9955a46 --- /dev/null +++ b/authlogin.php @@ -0,0 +1,182 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $options); +} catch(PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = 'データベース接続エラー: ' . $e->getMessage(); +} + + +if( !empty($_POST['btn_submit']) ) { + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $options); + + require_once 'authcode/GoogleAuthenticator.php'; + + $result = $dbh->prepare("SELECT authcode,loginid,username FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + if($result->rowCount() > 0) { + $row = $result->fetch(); + + $tousercode = $row["authcode"]; + + $chkauthcode = new PHPGangsta_GoogleAuthenticator(); + + $userauthcode = $_POST['usercode']; + + if(empty($userauthcode)){ + $error_message[] = "コードを入力してください。"; + }else{ + + $discrepancy = 2; + + $checkResult = $chkauthcode->verifyCode($tousercode, $userauthcode, $discrepancy); + if ($checkResult) { + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['loginid'] = $row["loginid"]; + + $_SESSION['username'] = $row["username"]; + $_SESSION['password'] = ""; + + // リダイレクト先のURLへ転送する + $url = '/home'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; + + }else { + $error_message[] = '二段階認証が出来ませんでした。再度お試しください。'; + } + } + }else{ + $error_message[] = 'データの取得が出来ませんでした。再度お試しください。'; + } + +} + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +ログイン - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
+

二段階認証

+ +

二段階認証コードを入力してください。

+ + +
    + +

    + +
+ + +
+
+

二段階認証コード

+
6桁のコードを入力してください。
+ +
+ +
+ +
+ 戻る +
+
+
+ + + + + + + \ No newline at end of file diff --git a/check.php b/check.php index 1584fe0..9df1ee0 100644 --- a/check.php +++ b/check.php @@ -167,7 +167,7 @@ $pdo = null;

確認

-

あなたは ですか?

+

あなたは ですか?

    @@ -180,20 +180,20 @@ $pdo = null;

    名前

    -

    +

    ;">

    ;"> - +


    プロフィール

    -

    +

    diff --git a/css/home.css b/css/home.css index 8d380a2..a6c499e 100644 --- a/css/home.css +++ b/css/home.css @@ -1,3501 +1,3527 @@ -@import url('https://fonts.googleapis.com/css2?family=BIZ+UDPGothic:wght@400;700&family=Josefin+Sans:ital,wght@1,700&family=Kosugi+Maru&family=Zen+Maru+Gothic:wght@500&display=swap'); - - -::-webkit-scrollbar{ - display:none; -} -::-webkit-scrollbar:hover{ - overflow: scroll; - margin-right: 10px; - border-radius: 25px; -} -body{ - width: 70%; - display: flex; - border: none; - margin-top: 0px; - margin-bottom: 0px; - margin-left: auto; - margin-right: auto; - padding-top: 12px; - background-color: #f7f7f7; - /* 画像を常に天地左右の中央に配置 */ - background-position: center center; - - /* 画像をタイル状に繰り返し表示しない */ - background-repeat: no-repeat; - - /* コンテンツの高さが画像の高さより大きい時、動かないように固定 */ - background-attachment: fixed; - - /* 表示するコンテナの大きさに基づいて、背景画像を調整 */ - background-size: cover; -} - -.irobutton{ - cursor: pointer; - border: none; - display: block; - width:50%; - margin: 32px; - padding: 8px 5%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - background-color: #FFC832; - - text-align: center; - border-radius: 50px; - color:#fff; - font-size: 22px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; -} -.irobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:55%; -} -.irobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; -} - -.sirobutton{ - cursor: pointer; - border: none; - display: block; - width:40%; - margin: 32px; - padding: 8px 10%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - - text-align: center; - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 22px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; -} -.sirobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:45%; -} -.sirobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; -} - -.inbox { - width: 96%; - padding: 8px 10px; - border: none; - border-radius: 10px; - background: #fff; - font-family: 'Zen Maru Gothic', sans-serif; - color: rgb(32,32,32); - font-size: 1em; - line-height: 1.5; - white-space: nowrap; - box-shadow:0px 0px 25px rgba(0,0,0,0.05) inset; - box-shadow:0px 0px 25px rgba(0,0,0,0.07); - overflow-x: scroll; - overflow-y : scroll ; - transition: border 350ms ease-in-out; - transition: border-bottom 150ms ease-out; - border: 1px solid #f1f1f1; - } - -.inbox::placeholder { - color: #999; -} - -.inbox:hover { - outline: none; - border: 1px solid #FFC832; -} - -.inbox:focus { - outline: none; - border: 1px solid #FFC832; - border-bottom: 3px solid #FFC832; -} - - -.errmsg{ - padding-top: 16px; - padding-bottom: 16px; - padding-left: 32px; - padding-right: 32px; - border-radius: 10px; - background-color: #ffebeb; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; - margin: 12px; - text-align: left; - color:#ff4848; - font-family: 'BIZ UDPGothic', sans-serif; - word-wrap: break-word; - line-height: 20px; - border: 1px solid #FF4848; -} - -.flexbtn{ - display: flex; -} - -.flexbtn .irobutton{ - border: none; - display: block; - width:20%; - margin: 32px; - padding: 8px 10%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - background-color: #FFC832; - - border-radius: 50px; - color:#fff; - font-size: 26px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; -} -.flexbtn.irobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:55%; -} -.flexbtn.irobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; -} - -.flexbtn.sirobutton{ - border: none; - display: block; - width:50%; - margin: 32px; - padding: 8px 10%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 26px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; -} -.flexbtn.sirobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:55%; -} -.flexbtn.sirobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; -} - - -.rolebox{ - - margin-top: 12px; - margin-bottom: 12px; - - margin-left: auto; - margin-right: auto; - - width: 120px; - padding-left: auto; - padding-right: auto; - - background-color: #fff; - border: 1px solid #FFC832; - - border-radius: 25px; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - -} - -.rolebox p{ - - color:#FFC832; - margin-top: 2px; - margin-bottom: 2px; - margin-left: 10px; - margin-right: 10px; - - text-align: center; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - -} - - -.userleftbox{ - border-radius: 17px; - margin-top: 12px; - margin-left: 12px; - margin-right: 12px; - margin-bottom: 12px; - background-color: #FFFFFF; - width: 18%; - height: 100%; - margin-left: 0px; - padding: 32px; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - border: 1px solid #FFC832; -} - -.userleftbox h1{ - font-family: 'Zen Maru Gothic', sans-serif; - margin-left: 20px; - color:#fff; - font-size: 32px; -} -.userleftbox .logo{ - display: flex; -} - -.userleftbox .logo img{ - - margin-left: auto; - margin-right: auto; - margin-top: 16px; - width: 72%; - - -} -.userleftbox .logo p{ - color:#FFC832; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 32px; - margin-left: 8px; - margin-top: auto; - margin-bottom: -4px; -} - -.leftbutton_on{ - cursor: pointer; - border: none; - display: block; - width:70%; - margin: 16px; - padding: 8px auto; - margin-left: auto; - margin-right: auto; - - padding-left: 16px; - padding-top: 8px; - padding-bottom: 8px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 20px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: left; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.leftbutton_on:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:75%; -} -.leftbutton_on:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:65%; -} - -.leftbutton{ - cursor: pointer; - border: none; - display: block; - width:70%; - margin: 16px; - padding: 8px auto; - margin-left: auto; - margin-right: auto; - - padding-left: 16px; - padding-top: 8px; - padding-bottom: 8px; - - - background-color: #FFFFFF; - - border-radius: 50px; - color:#FFC832; - font-size: 20px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: left; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.leftbutton:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:75%; -} -.leftbutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:65%; -} - -main{ - height: 95dvh; - overflow: auto; - border-radius: 17px; - margin-top: 12px; - margin-left: 12px; - margin-right: 12px; - width: 62%; - background-color: #fff; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - border: 1px solid #FFC832; -} - -main h1{ - color:#252525; - font-size: 32px; - font-family: 'Zen Maru Gothic', sans-serif; -} - -.userheader{ - margin: 12px; - border-radius: 10px; - width: auto; - height:auto; - margin-bottom: 12px; -} - -.userheader .hed img{ - object-fit: cover; - margin-top: 0px; - margin-bottom: 0px; - margin-left: auto; - margin-right: auto; - width: 100%; - height:25vh; - border-radius: 10px; -} - -.userheader .icon{ - margin-left: 24px; - display: flex; - width: auto; -} - -.userheader .icon img{ - object-fit: cover; - margin-top: -90px; - text-align: left; - width: 148px; - height:148px; - border-radius: 50%; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); -} - -.userheader h2{ - margin-left: 12px; - margin-top: auto; - margin-bottom: auto; - color:#252525; - font-size: 32px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: 900; -} - -.userheader p{ - margin-left: 12px; - margin-right: auto; - margin-top: auto; - margin-bottom: 14px; - color: #999; - font-size: 18px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: 900; -} - -.userheader .profile p{ - text-align: left; - margin-top: 12px; - margin-bottom: auto; - margin-left: 24px; - margin-right: 24px; - word-wrap: break-word; - font-size: 18px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.userheader .roleboxes{ - margin-left: 180px; - display: flex; - padding: 0px; - flex-wrap : wrap; -} - - -.userheader .rolebox{ - - margin-top: 0px; - margin-bottom: 12px; - - margin-left: 0px; - margin-right: 12px; - - width: auto; - padding-left: auto; - padding-right: auto; - - background-color: #fff; - border: 1px solid #FFC832; - - border-radius: 25px; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - -} - - -.userheader .rolebox p{ - - color:#FFC832; - margin-top: 2px; - margin-bottom: 2px; - margin-left: 10px; - margin-right: 10px; - - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - -} - -.fzone{ - margin-left: 24px; - margin-right: 24px; - margin-bottom: 24px; - width: auto; - height: 48px; - display: flex; - padding-left: 12px; - padding-right: 12px; -} - -.fzone .follow .fbtn{ - cursor: pointer; - border: none; - display: block; - width:120px; - padding: 8px auto; - - margin-left: auto; - margin-right: 0px; - margin-top: 12px; - margin-bottom: 12px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.fzone .follow .fbtn:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:125px; -} -.fzone .follow .fbtn:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:115px; -} - -.fzone .follow .fbtn_no{ - cursor: pointer; - border: none; - display: block; - width:120px; - padding: 8px auto; - - margin-left: auto; - margin-right: 0px; - margin-top: 12px; - margin-bottom: 12px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - border: 1px solid #FFC832; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.fzone .follow .fbtn_no:hover{ - background-color: #FFFAE6; - color: #FFC832; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:125px; -} -.fzone .follow .fbtn_no:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:115px; -} - -.fzone .follow .fbtn_un{ - cursor: pointer; - border: none; - display: block; - width:120px; - padding: 8px auto; - - margin-left: auto; - margin-right: 0px; - margin-top: 12px; - margin-bottom: 12px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#4e4428; - border: none; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.fzone .follow .fbtn_un:hover{ - background-color: #FFFAE6; - color: #FFC832; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:125px; -} -.fzone .follow .fbtn_un:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:115px; -} - -.fzone .time{ - margin-top: auto; - margin-bottom: 0px; - margin-left: 0px; - margin-right: auto; -} -.fzone .time p{ - margin-top: 0px; - margin-bottom: 0px; - text-align: left; - font-size: 12px; - color:#999; - font-family: 'BIZ UDPGothic', sans-serif; -} - -.fzone .time a{ - margin-top: 0px; - margin-bottom: 0px; - text-align: left; - font-size: 12px; - color:#999; - font-family: 'BIZ UDPGothic', sans-serif; -} - -.fzone .follow_yes{ - margin-top: auto; - margin-bottom: 0px; - margin-left: auto; - margin-right: auto; - background-color: #FFFAE6; - border-radius: 10px; - padding: 12px; -} -.fzone .follow_yes p{ - margin-top: 0px; - margin-bottom: 0px; - text-align: left; - font-size: 12px; - color:#252525; - font-family: 'BIZ UDPGothic', sans-serif; -} - - - -.ueuse{ - animation: slideInY 0.5s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards; - margin: 12px; - border-radius: 10px; - padding-left: 24px; - padding-right: 24px; - padding-top: 16px; - padding-bottom: 16px; - background-color: #F5F5F5; - border: 1px solid #EEE; - width: auto; -} -@keyframes slideInY { - 0% { - transform: translateY(24px); - opacity: 0; - } - 100% { - transform: translateY(0px); - } - 40%,100% { - opacity: 1; - } -} -.ueuse .flebox{ - display: flex; -} -.ueuse .flebox img{ - object-fit: cover; - margin-left: -12px; - - text-align: center; - width: 48px; - height:48px; - border-radius: 50%; -} -.ueuse .flebox a{ - margin-top: auto; - margin-bottom: auto; - margin-left: 12px; - font-size: 18px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - - - - - -.ueuse .flebox .idbox{ - margin-top: auto; - margin-bottom: auto; - margin-left: 6px; - border-radius: 10px; - background-color: #FFF; - border: 1px solid #EEE; -} -.ueuse .flebox .idbox a{ - margin-top: 6px; - margin-bottom: 6px; - margin-left: 8px; - margin-right: 8px; - text-align: center; - font-size: 12px; - color:#999; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; -} - -.ueuse p{ - line-height:20px; - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: 60px; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - - -.ueuse h1{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: 60px; - font-size: 48px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.ueuse h2{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: 60px; - font-size: 32px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.ueuse h3{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: 60px; - font-size: 24px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.ueuse center{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: auto; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.ueuse a{ - margin-top: auto; - margin-bottom: auto; - margin-left: 6px; - font-size: 16px; - color:#4e4428; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} -.ueuse p img{ - margin-top: auto; - margin-bottom: auto; - margin-left: 4px; - margin-right: 4px; - height: 32px; - vertical-align: middle; -} - -.ueuse h1 img{ - margin-top: auto; - margin-bottom: auto; - margin-left: 4px; - margin-right: 4px; - height: 64px; - vertical-align: middle; -} - -.ueuse h2 img{ - margin-top: auto; - margin-bottom: auto; - margin-left: 4px; - margin-right: 4px; - height: 48px; - vertical-align: middle; -} - -.ueuse h3 img{ - margin-top: auto; - margin-bottom: auto; - margin-left: 4px; - margin-right: 4px; - height: 48px; - vertical-align: middle; -} - -.ueuse img{ - margin-left: 60px; - margin-top: auto; - margin-bottom: auto; - margin-right: 4px; - height: 32px; - vertical-align: middle; -} - -.ueuse .flebox .time{ - margin-top: auto; - margin-bottom: auto; - margin-left: auto; - margin-right: 12px; - text-align: right; - font-size: 12px; - color:#999; - font-family: 'BIZ UDPGothic', sans-serif; -} - -.ueuse .photo1 img{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 100%; - height: 350px; - border: 1px solid #EEE; -} - -.ueuse .photo2{ - display: flex; -} - -.ueuse .photo2 img{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 47%; - height: 350px; - border: 1px solid #EEE; -} - -.ueuse .video1 video{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 100%; - height: 350px; - border: 1px solid #EEE; -} - -.ueuse .abi{ - margin-left:auto; - margin-right: auto; - margin-top: 12px; - margin-bottom: 12px; - border-radius: 10px; - padding-left: 12px; - padding-right: 12px; - padding-top: 16px; - padding-bottom: 16px; - background-color: #FFFFFF; - border: 1px solid #EEE; - width: auto; -} - - -.ueuse .abi p{ - line-height:20px; - overflow-wrap: break-word; - margin-top: 12px; - margin-bottom: 12px; - margin-left: auto; - font-size: 14px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.ueuse .abi .back{ - background-color: #FFFAE6; - padding: 12px; - border-radius: 7px; - border: 1px solid #EEE; -} - -.ueuse .abi .back h1{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: auto; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} -.ueuse .abi h3{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: auto; - font-size: 12px; - color:#999; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} -.ueuse .favbox{ - display: flex; - margin-left: 0px; - width: 100%; -} -.ueuse .favbox .favbtn{ - cursor: pointer; - border: none; - display: block; - width:auto; - padding: 8px auto; - - margin-left: 0px; - margin-right: 12px; - margin-top: 2px; - margin-bottom: 2px; - - - padding-top: 2px; - padding-bottom: 2px; - padding-left: 12px; - padding-right: 12px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: all 250ms ease-out; -} - -.ueuse .favbox .favbtn_after{ - cursor: pointer; - border: none; - display: block; - width:auto; - padding: 8px auto; - - margin-left: 0px; - margin-right: 12px; - margin-top: 2px; - margin-bottom: 2px; - - - padding-top: 2px; - padding-bottom: 2px; - padding-left: 12px; - padding-right: 12px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: all 250ms ease-out -} - - -.ueuse .favbox .tuduki{ - cursor: pointer; - border: none; - display: block; - width:auto; - padding: 8px auto; - - margin-left: 0px; - margin-right: 12px; - margin-top: 2px; - margin-bottom: 2px; - - - padding-top: 5px; - padding-bottom: 5px; - padding-left: 12px; - padding-right: 12px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} - -.ueuse .favbox .tuduki:hover{ - cursor: pointer; - border: none; - display: block; - width:auto; - padding: 8px auto; - - margin-left: 0px; - margin-right: 12px; - margin-top: 2px; - margin-bottom: 2px; - - - padding-top: 5px; - padding-bottom: 5px; - padding-left: 12px; - padding-right: 12px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} - -.ueuse .favbox .delbtn{ - cursor: pointer; - border: none; - display: block; - width:60px; - padding: 8px auto; - - margin-left: 6px; - margin-right: 0px; - margin-top: 2px; - margin-bottom: 2px; - - padding-top: 2px; - padding-bottom: 2px; - - - background-color: #F5F5F5; - - border-radius: 50px; - color:#FF4848; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} - -.ueuse .favbox .delbtn:hover{ - cursor: pointer; - border: none; - display: block; - width:60px; - padding: 8px auto; - - margin-left: 6px; - margin-right: 0px; - margin-top: 2px; - margin-bottom: 2px; - - padding-top: 2px; - padding-bottom: 2px; - - - background-color: #FF4848; - - border-radius: 50px; - color: #f5f5f5;; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} - - - -.ueuse .favbox .addabi{ - cursor: pointer; - border: none; - display: block; - width:auto; - padding: 8px auto; - - margin-left: auto; - margin-right: 6px; - margin-top: 2px; - margin-bottom: 2px; - - - padding-top: 2px; - padding-bottom: 2px; - padding-left: 12px; - padding-right: 12px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} - -.ueuse .favbox .addabi:hover{ - cursor: pointer; - border: none; - display: block; - width:auto; - - margin-left: auto; - margin-right: 6px; - margin-top: 2px; - margin-bottom: 2px; - - padding-top: 2px; - padding-bottom: 2px; - padding-left: 12px; - padding-right: 12px; - - - background-color: #FFC832; - - border-radius: 50px; - color: #FFFAE6;; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} - - -.ueuse .favbox img{ - margin-left: 0px; - width: 24px; -} - -.ueuse hr{ - height: 0; - margin-top: 12px; - margin-bottom: 12px; - padding: 0; - border: 0; - border-top: 1px solid #999; -} - - - -.tokonone p{ - text-align: center; - margin-top: 64px; - margin-bottom: 64px; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.sendbox{ - margin: 12px; - border-radius: 10px; - padding-left: 24px; - padding-right: 24px; - padding-top: 24px; - padding-bottom: 24px; - background-color: #F5F5F5; - border: 1px solid #EEE; - width: auto; -} - -.sendbox .fx{ - display: flex; - width: 100%; -} - -.sendbox .fx img{ - object-fit: cover; - margin-left: -12px; - text-align: center; - width: 58px; - height:58px; - border-radius: 50%; -} - -.sendbox p{ - line-height:20px; - text-align: left; - margin-top: 12px; - margin-bottom: 12px; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.sendbox textarea{ - background-color: #F5F5F5; - text-align: left; - margin-left: auto; - margin-right: auto; - width:100%; - height:90px; - border-radius: 10px; - outline: none; - border: none; - resize: none; - font-size: 18px; -} - -.sendbox .fxbox{ - display: flex; -} - -.sendbox label > input { - display:none; /* アップロードボタンのスタイルを無効にする */ -} - -.sendbox label{ - cursor: pointer; - border: none; - display: block; - width:6%; - padding: 8px auto; - margin-left: 6px; - margin-right: 6px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.sendbox label:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:7%; -} -.sendbox label:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:5%; -} -.sendbox label img{ - vertical-align:bottom; - width: 24px; -} -.sendbox .fxbox p{ - line-height:20px; - text-align: left; - margin-top: auto; - margin-bottom: auto; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - - - -.ueusebtn{ - cursor: pointer; - border: none; - display: block; - width:20%; - padding: 8px auto; - margin-left: auto; - margin-right: 0px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.ueusebtn:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:21%; -} -.ueusebtn:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:19%; -} -/*--------------------------*/ - -.ueuse2{ - margin: 12px; - border-radius: 10px; - padding-left: 24px; - padding-right: 24px; - padding-top: 16px; - padding-bottom: 16px; - background-color: #F5F5F5; - border: 1px solid #EEE; - width: auto; -} -.ueuse2 .flebox{ - display: flex; -} -.ueuse2 .flebox img{ - object-fit: cover; - margin-left: -12px; - - text-align: center; - width: 64px; - height:64px; - border-radius: 50%; -} -.ueuse2 .flebox a{ - margin-top: auto; - margin-bottom: auto; - margin-left: 12px; - font-size: 26px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.ueuse2 .flebox .idbox{ - margin-top: auto; - margin-bottom: auto; - margin-left: 6px; - border-radius: 10px; - background-color: #FFF; - border: 1px solid #EEE; -} -.ueuse2 .flebox .idbox a{ - margin-top: 6px; - margin-bottom: 6px; - margin-left: 8px; - margin-right: 8px; - text-align: center; - font-size: 16px; - color:#999; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; -} - -.ueuse2 p{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: 80px; - font-size: 22px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} -.ueuse2 a{ - margin-top: auto; - margin-bottom: auto; - margin-left: 6px; - font-size: 16px; - color:#4e4428; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} -.ueuse2 p img{ - margin-top: auto; - margin-bottom: auto; - margin-left: 4px; - margin-right: 4px; - height: 32px; - vertical-align: middle; -} - -.ueuse2 .flebox .time{ - margin-top: auto; - margin-bottom: auto; - margin-left: auto; - margin-right: 12px; - text-align: right; - font-size: 12px; - color:#999; - font-family: 'BIZ UDPGothic', sans-serif; -} - -.ueuse2 .photo1 img{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 100%; - height: 25dvh; - border: 1px solid #EEE; -} - -.ueuse2 .photo2{ - display: flex; -} - -.ueuse2 .photo2 img{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 47%; - height: 350px; - border: 1px solid #EEE; -} - -.ueuse2 .video1 video{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 100%; - height: 350px; - border: 1px solid #EEE; -} - -.formarea{ - padding-top: 16px; - padding-bottom: 16px; - padding-left: 32px; - padding-right: 32px; - border-radius: 15px; - background-color: #f7f7f7; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; - text-align: left; -} - -.formarea p{ - overflow-wrap: break-word; - margin-top: 24px; - margin-bottom: 24px; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.formarea .iconimg{ - margin-left: auto; - margin-right: auto; - text-align: center; -} - -.formarea .iconimg img{ - object-fit: cover; - margin-top: -64px; - margin-left: auto; - margin-right: auto; - text-align: center; - width: 100px; - height:100px; - border-radius: 50%; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); -} -.formarea .hed img{ - object-fit: cover; - object-fit: cover; - margin-top: 0px; - margin-bottom: 0px; - margin-left: auto; - margin-right: auto; - width: 100%; - height:25vh; - border-radius: 10px; -} - -.formarea .sub{ - display: flex; - margin: 48px; - margin-left: auto; - margin-right: auto; -} -label>input { - display:none; /* アップロードボタンのスタイルを無効にする */ -} -.imgbtn{ - cursor: pointer; - border: none; - display: block; - width:25%; - padding: 8px auto; - margin-left: auto; - margin-right: auto; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.imgbtn:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:19%; -} -.imgebtn:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:21%; -} - -.imgbtn2{ - cursor: pointer; - border: none; - display: block; - width:20%; - padding: 8px auto; - margin-top: -64px; - margin-left: 12px; - margin-right: auto; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.imgbtn2:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:19%; -} -.imgebtn2:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:21%; -} - -.modal { - display: none; - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.5); - z-index: 9999; -} - -.show { - display: block; -} -.modal-content { - background-color: #fff; - padding: 16px; - border-radius: 10px; - width: 60%; - max-width: 400px; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); -} - -.modal-content textarea{ - background-color: #F5F5F5; - text-align: left; - margin-left: auto; - margin-right: auto; - width:100%; - height:90px; - border-radius: 10px; - outline: none; - border: none; - resize: none; - font-size: 18px; -} -.modal-content p{ - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.modal-content h1{ - font-size: 24px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.modal-content .btn_area{ - display: flex; - width: 70%; - margin-left: auto; - margin-right: 0px; -} - -.modal-content .fbtn{ - cursor: pointer; - border: none; - display: block; - width:120px; - padding: 8px auto; - - margin-left: auto; - margin-right: 6px; - margin-bottom: 0px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.modal-content .fbtn:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:125px; -} -.modal-content .fbtn:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:115px; -} - -.modal-content .fbtn_no{ - cursor: pointer; - border: none; - display: block; - width:120px; - padding: 8px auto; - - margin-left: auto; - margin-right: 0px; - margin-bottom: 0px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - border: 1px solid #FFC832; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.modal-content .fbtn_no:hover{ - background-color: #FFFAE6; - color: #FFC832; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:125px; -} -.modal-content .fbtn_no:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:115px; -} - -.topbox { - position: fixed; - - top: 0; - left: 0; - width: 100%; - height: 44px; - padding-top: 0.0%; - padding-bottom: 0.2%; - padding-left: 23%; - - background-color: #FFC832; - box-shadow: 0px 0px 30px rgba(0,0,0,0.1); - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 2em; - text-align: left; - color: #fff; - -} - -.topbox .logo img{ - margin-left: 0px; - margin-right: auto; - margin-top: 2px; - width: 120px; -} - -.terms{ - overflow-wrap: break-word; - margin-left: auto; - margin-right: auto; - width: 77%; - margin-top: 64px; - margin-bottom: 64px; - background-color: #f7f7f7; -} - -.terms h1{ - line-height:32px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 48px; - text-align: left; - color: #252525; -} - -.terms h2{ - line-height:32px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 48px; - text-align: left; - color: #252525; -} - -.terms h3{ - line-height:28px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 32px; - text-align: left; - color: #252525; -} - -.terms h4{ - line-height:24px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 24px; - text-align: left; - color: #252525; -} - -.terms p{ - margin-top: 2px; - margin-bottom: 2px; - line-height:24px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 16px; - text-align: left; - color: #252525; -} - -.terms img{ - background-color: #FFF; - background: linear-gradient(45deg, #CCC 25%, transparent 25%, transparent 75%, #CCC 75%), - linear-gradient(45deg, #CCC 25%, transparent 25%, transparent 75%, #CCC 75%); - background-size: 20px 20px; - background-position: 0 0, 10px 10px; - object-fit: cover; - width: auto; - height: 40dvh; - margin: 12px; - border-radius: 15px; -} -.terms .code{ - background-color: #252525; - border-radius: 15px; - padding: 12px; -} - -.terms .code p{ - line-height:24px; - margin-right: 12px; - margin-left: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 16px; - text-align: left; - color: #FFFFFF; -} - - -.terms .p2c{ - margin-top: 0px; - margin-bottom: 10px; - text-align: left; - word-wrap: break-word; - line-height: 20px; - color: #868686; - font-size: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; -} - -.terms .p3{ - margin-top: 24px; - text-align: left; - word-wrap: break-word; - line-height: 24px; - color: #252525; - font-size: 22px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.terms ul{ - margin-top: 6px; - margin-bottom: 6px; - font-family: 'BIZ UDPGothic', sans-serif; - line-height: 20px; -} - -.terms .err404 h1{ - margin-top: 256px; - line-height:64px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 64px; - text-align: center; - color: #252525; -} - -.terms .err404 p{ - margin-top: 2px; - margin-bottom: 2px; - line-height:32px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 16px; - text-align: center; - color: #252525; -} - - -.rightbox{ - position: relative; - border-radius: 17px; - margin-top: 12px; - margin-left: 12px; - margin-right: 12px; - width: 24%; - background-color: #fff; - padding: 12px; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - border: 1px solid #FFC832; -} - -.rightbox h1{ - - margin-top: 12px; - margin-bottom: 0px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 28px; - text-align: left; - color: #252525; -} - -.rightbox .noticearea{ - width: auto; - height: 52dvh; - overflow: scroll; - border-radius: 10px; -} - -.rightbox .noticebox{ - overflow-wrap: break-word; - border-radius: 10px; - margin-top: 12px; - margin-bottom: 12px; - margin-left: auto; - margin-right: auto; - width: auto; - background-color: #F5F5F5; - border: 1px solid #EEE; - width: auto; - padding: 12px; -} - -.rightbox .noticebox h4{ - margin-top: 2px; - margin-bottom: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 20px; - text-align: left; - color: #252525; -} - -.rightbox .noticebox p{ - line-height: 20px; - margin-top: 2px; - margin-bottom: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 16px; - text-align: left; - color: #252525; -} - -.rightbox .noticebox img{ - margin-top: auto; - margin-bottom: auto; - margin-left: 4px; - margin-right: 4px; - height: 32px; - vertical-align: middle; -} - -.rightbox .noticebox .makeup p{ - line-height: 20px; - margin-top: 2px; - margin-bottom: 2px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 16px; - text-align: left; - color: #252525; -} - -.rightbox .noticebox .makeup a{ - margin-top: 24px; - margin-bottom: auto; - margin-left: 0px; - font-size: 16px; - color:#4e4428; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.rightbox .noticebox .time{ - margin-top: 4px; - margin-bottom: auto; - margin-left: 0px; - margin-right: auto; -} -.rightbox .noticebox .time p{ - margin-top: 0px; - margin-bottom: 0px; - text-align: left; - font-size: 12px; - color:#999; - font-family: 'BIZ UDPGothic', sans-serif; -} - - - -.rightbox .btmbox{ - position: absolute; - bottom: 12px; /*下に固定*/ - height: 31dvh; - width: 90%; -} - -.rightbox .btmbox h2{ - margin-top: 12px; - margin-bottom: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 20px; - text-align: left; - color: #252525; -} - -.rightbox .btmbox h3{ - margin-top: 2px; - margin-bottom: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 20px; - text-align: left; - color: #252525; -} - -.rightbox .btmbox p{ - - line-height: 20px; - margin-top: 2px; - margin-bottom: 2px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 14px; - text-align: left; - color: #252525; -} - -.rightbox .btmbox a{ - margin-top: 24px; - margin-bottom: auto; - margin-left: 0px; - margin-right: 6px; - font-size: 14px; - color:#4e4428; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - - - -.loading { - text-align: center; - font-size: 48px; /* 絵文字のサイズ */ - animation: rotate 0.5s infinite linear; /* アニメーションを適用 */ -} - -@keyframes rotate { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -.emojibox{ - margin-left: 12px; - margin-right: 12px; - padding: 12px; - width: auto; -} - -.emojizone{ - margin-left: 0px; - margin-right: 0px; - margin-top: 12px; -} - -.emjtex{ - background-color: #F5F5F5; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - padding: 12px; - border-radius: 10px; - border: 1px solid #EEE; -} - -.emjtex .fx{ - display: flex; -} - -.emjtex img{ - margin-top: auto; - margin-bottom: auto; - margin-left: 4px; - margin-right: 4px; - height: 64px; -} - -.emjtex h3{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: 12px; - font-size: 24px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.emjtex p{ - overflow-wrap: break-word; - margin-top: 12px; - margin-bottom: auto; - margin-left: 12px; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.rp p{ - overflow-wrap: break-word; - margin-top: 0px; - margin-bottom: 6px; - margin-left: 12px; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - - - -.notification{ - animation: slideInY 0.5s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards; - margin: 12px; - border-radius: 10px; - padding-left: 24px; - padding-right: 24px; - padding-top: 16px; - padding-bottom: 16px; - background-color: #F5F5F5; - border: 1px solid #EEE; - width: auto; -} -@keyframes slideInY { - 0% { - transform: translateY(24px); - opacity: 0; - } - 100% { - transform: translateY(0px); - } - 40%,100% { - opacity: 1; - } -} -.notification .flebox{ - display: flex; -} - -.notification .flebox a{ - margin-top: auto; - margin-bottom: auto; - margin-left: 12px; - font-size: 18px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.notification .flebox .idbox{ - margin-top: auto; - margin-bottom: auto; - margin-left: 6px; - border-radius: 10px; - background-color: #FFF; - border: 1px solid #EEE; -} -.notification .flebox .idbox a{ - margin-top: 6px; - margin-bottom: 6px; - margin-left: 8px; - margin-right: 8px; - text-align: center; - font-size: 12px; - color:#999; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; -} - -.notification p{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: auto; - margin-left: 12px; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.notification h3{ - overflow-wrap: break-word; - margin-top: auto; - margin-bottom: 6px; - margin-left: 12px; - font-size: 24px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - - -.notification .flebox .time{ - margin-top: auto; - margin-bottom: auto; - margin-left: auto; - margin-right: 12px; - text-align: right; - font-size: 12px; - color:#999; - font-family: 'BIZ UDPGothic', sans-serif; -} - -.notification a{ - overflow-wrap: break-word; - margin-top: 24px; - margin-bottom: auto; - margin-left: 12px; - font-size: 16px; - color:#4e4428; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -hr{ - height: 0; - margin-top: 12px; - margin-bottom: 12px; - padding: 0; - border: 0; - border-top: 1px solid #FFC832; -} - - -.search_btn{ - margin-top: 24px; - cursor: pointer; - border: none; - display: block; - width:20%; - padding: 8px auto; - margin-left: auto; - margin-right: 0px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.search_btn:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:21%; -} -.search_btn:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:19%; -} - -.botbox{ - display: none; -} - -/*------------------------------------------------------------------------------------------------------------*/ -/*--------------------------------------------------スマホ向け--------------------------------------------------*/ -/*--------------------------------------------------ここから--------------------------------------------------*/ -/*------------------------------------------------------------------------------------------------------------*/ - -@media screen and (max-width:1010px) { - body{ - width: 100%; - display: block; - border: none; - margin-top: 0px; - margin-bottom: 0px; - margin-left: auto; - margin-right: auto; - padding-top: 0px; - } - - .userleftbox{ - display: none; - } - - .userheader .icon{ - margin-left: 24px; - display: block; - width: auto; - } - - main{ - height: 88dvh; - overflow: auto; - border-radius: 0px; - margin-top: 0px; - margin-left: 0px; - margin-right: 0px; - width: auto; - background-color: #fff; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - border: none; - border-bottom: 1px solid #FFC832; - } - - main h1{ - color:#252525; - font-size: 32px; - font-family: 'Zen Maru Gothic', sans-serif; - } - - .sendbox .fx img{ - object-fit: cover; - margin-left: -12px; - text-align: center; - width: 58px; - height:58px; - border-radius: 50%; - } - - .sendbox p{ - line-height:20px; - text-align: left; - margin-top: 12px; - margin-bottom: 12px; - font-size: 14px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - } - - .sendbox .fxbox{ - display: flex; - } - - .sendbox label > input { - display:none; /* アップロードボタンのスタイルを無効にする */ - } - - .sendbox label{ - width:10%; - padding: 8px auto; - margin-left: 6px; - margin-right: 6px; - padding-top: 6px; - padding-bottom: 6px; - } - .sendbox label:hover{ - width:11%; - } - .sendbox label:active{ - width:9%; - } - .sendbox label img{ - vertical-align:bottom; - width: 24px; - } - .sendbox .fxbox p{ - line-height:20px; - text-align: left; - margin-top: auto; - margin-bottom: auto; - font-size: 16px; - color:#252525; - text-decoration: none; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - } - - .ueusebtn{ - width:30%; - } - .ueusebtn:hover{ - width:31%; - } - .ueusebtn:active{ - width:29%; - } - - .rightbox{ - display: none; - } - - .botbox{ - display: block; - } - - .botbox .lbtnzone{ - display: flex; - width: 90%; - margin-left: auto; - margin-right: auto; - } - - - .btmbutton{ - cursor: pointer; - border: none; - display: block; - width:28%; - margin: 16px; - padding: 8px auto; - height: auto; - margin-left: 12px; - margin-right: 12px; - - padding-top: 14px; - padding-bottom: 14px; - background-color: #FFFFFF; - - border-radius: 50px; - color:#FFC832; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - border: 1px solid #FFC832; - } - .btmbutton:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:29%; - } - .btmbutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:27%; - } - - .ueuse .favbox .tuduki{ - - display: block; - width:26%; - padding: 8px auto; - - margin-left: 0px; - margin-right: 12px; - margin-top: 2px; - margin-bottom: 2px; - - - padding-top: 8px; - padding-bottom: 8px; - padding-left: 6px; - padding-right: 6px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 12px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - } - - .ueuse .favbox .tuduki:hover{ - background-color: #FFC832; - - margin-left: 0px; - margin-right: 12px; - margin-top: 2px; - margin-bottom: 2px; - - - padding-top: 8px; - padding-bottom: 8px; - padding-left: 6px; - padding-right: 6px; - - width:28%; - border-radius: 50px; - color:#FFFAE6; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - font-size: 12px; - text-decoration:none; - text-align: center; - } - - .ueuse .favbox .delbtn{ - cursor: pointer; - border: none; - display: block; - width:60px; - padding: 8px auto; - - margin-left: 6px; - margin-right: 0px; - margin-top: 2px; - margin-bottom: 2px; - - padding-top: 2px; - padding-bottom: 2px; - - - background-color: #F5F5F5; - - border-radius: 50px; - color:#FF4848; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; - } - - .ueuse .favbox .delbtn:hover{ - cursor: pointer; - border: none; - display: block; - width:60px; - padding: 8px auto; - - margin-left: 6px; - margin-right: 0px; - margin-top: 2px; - margin-bottom: 2px; - - padding-top: 2px; - padding-bottom: 2px; - - - background-color: #FF4848; - - border-radius: 50px; - color: #f5f5f5;; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; - } - - - - .ueuse .favbox .addabi{ - cursor: pointer; - border: none; - display: block; - width:auto; - padding: 8px auto; - - margin-left: auto; - margin-right: 6px; - margin-top: 2px; - margin-bottom: 2px; - - - padding-top: 2px; - padding-bottom: 2px; - padding-left: 12px; - padding-right: 12px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; - } - - .ueuse .favbox .addabi:hover{ - cursor: pointer; - border: none; - display: block; - width:auto; - - margin-left: auto; - margin-right: 6px; - margin-top: 2px; - margin-bottom: 2px; - - padding-top: 2px; - padding-bottom: 2px; - padding-left: 12px; - padding-right: 12px; - - - background-color: #FFC832; - - border-radius: 50px; - color: #FFFAE6;; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; - } - - - .ueuse .favbox img{ - margin-left: 0px; - width: 24px; - } - - .leftbox{ - display: block; - border-radius: 17px; - margin-top: 12px; - margin-left: 12px; - margin-right: 12px; - margin-bottom: 12px; - background-color: #FFFFFF; - width: 18%; - height: 100%; - margin-left: 0px; - padding: 32px; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - border: 1px solid #FFC832; - } - - .leftbox h1{ - font-family: 'Zen Maru Gothic', sans-serif; - margin-left: 20px; - color:#fff; - font-size: 32px; - } - .leftbox .logo{ - display: flex; - } - - .leftbox .logo img{ - - margin-left: auto; - margin-right: auto; - margin-top: 16px; - width: 72%; - - - } - .leftbox .logo p{ - color:#FFC832; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 32px; - margin-left: 8px; - margin-top: auto; - margin-bottom: -4px; - } - - .imgbtn{ - width:40%; - } - .imgbtn:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:35%; - } - .imgebtn:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; - } - - .imgbtn2{ - cursor: pointer; - border: none; - display: block; - width:20%; - padding: 8px auto; - margin-top: -64px; - margin-left: 12px; - margin-right: auto; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; - } - .imgbtn2:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:19%; - } - .imgebtn2:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:21%; - } - - .topbox { - position: absolute; - - top: 0; - left: 0; - width: 90%; - margin-left: 0px; - margin-right: 0px; - height: 44px; - padding-top: 0.0%; - padding-bottom: 0.2%; - padding-left: 10%; - } - - .topbox .logo img{ - margin-left: 0px; - margin-right: auto; - margin-top: 2px; - width: 120px; - } - - .terms{ - overflow-wrap: break-word; - margin-left: auto; - margin-right: auto; - width: 90%; - margin-top: 64px; - margin-bottom: 64px; - background-color: #f7f7f7; - } - - .terms h1{ - line-height:52px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 48px; - text-align: left; - color: #252525; - } - - .terms h2{ - line-height:52px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 48px; - text-align: left; - color: #252525; - } - - .terms h3{ - line-height:36px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 32px; - text-align: left; - color: #252525; - } - - .terms h4{ - line-height:24px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 24px; - text-align: left; - color: #252525; - } - - .terms p{ - margin-top: 2px; - margin-bottom: 2px; - line-height:24px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 16px; - text-align: left; - color: #252525; - } - - .terms img{ - - object-fit: cover; - width: auto; - height: auto; - margin-top: 12px; - margin-bottom: 12px; - margin-left: auto; - margin-right: auto; - border-radius: 15px; - } - - .terms .code{ - background-color: #252525; - border-radius: 15px; - padding: 12px; - } - - .terms .code p{ - line-height:24px; - margin-right: 12px; - margin-left: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - font-size: 16px; - text-align: left; - color: #FFFFFF; - } - - - .terms .p2c{ - margin-top: 0px; - margin-bottom: 10px; - text-align: left; - word-wrap: break-word; - line-height: 20px; - color: #868686; - font-size: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; - } - - .terms .p3{ - margin-top: 24px; - text-align: left; - word-wrap: break-word; - line-height: 24px; - color: #252525; - font-size: 22px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - } - - .terms .err404 h1{ - margin-top: 128px; - line-height:64px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 64px; - text-align: center; - color: #252525; - } - - - .ueuse .photo1 img{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 100%; - height: auto; - border: 1px solid #EEE; - } - - .ueuse .photo2{ - display: flex; - } - - .ueuse .photo2 img{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 47%; - height: auto; - border: 1px solid #EEE; - } - - .ueuse .video1 video{ - object-fit: cover; - border-radius: 10px; - margin-top: 12px; - margin-left: auto; - margin-right: auto; - width: 100%; - height: auto; - border: 1px solid #EEE; - } - -} - -/*------------------------------------------------------------------------------------------------------------*/ -/*--------------------------------------------------ダークモード--------------------------------------------------*/ -/*--------------------------------------------------ここから--------------------------------------------------*/ -/*------------------------------------------------------------------------------------------------------------*/ - -@media (prefers-color-scheme: dark) { - - body{ - background-color: #0c0c0c; - } - .errmsg{ - background-color: #3a3333; - color:#ff4848; - border: 1px solid #FF4848; - } - .rolebox{ - background-color: #0c0c0c; - border: 1px solid #FFC832; - } - - .userleftbox{ - background-color: #181616; - border: none; - } - - .leftbutton{ - background-color: #181616; - color:#FFFAE6; - } - .leftbutton:hover{ - background-color: #FFFAE6; - color: #0c0c0c; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:75%; - } - .leftbutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:65%; - } - - main{ - background-color: #0c0c0c; - border: none; - } - - main h1{ - color:#FFFAE6; - font-size: 32px; - font-family: 'Zen Maru Gothic', sans-serif; - } - - - .ueuse{ - background-color: #181616; - border: none; - } - .ueuse .flebox a{ - color:#FFFAE6; - } - - .ueuse .flebox .idbox{ - background-color: #302c2c; - border: none; - } - .ueuse .flebox .idbox a{ - color:#CCC; - } - - .ueuse p{ - color:#FFF; - } - - - .ueuse h1{ - color:#FFF; - } - - .ueuse h2{ - color:#FFF; - } - - .ueuse h3{ - color:#FFF; - } - - .ueuse center{ - color:#FFF; - } - - .ueuse a{ - color:#FFC832; - } - - .ueuse .flebox .time{ - color:#CCC; - } - - .ueuse .photo1 img{ - border: none; - } - - .ueuse .photo2{ - display: flex; - } - - .ueuse .photo2 img{ - border: none; - } - - .ueuse .video1 video{ - border: none; - } - - .ueuse .abi{ - background-color: #0c0c0c; - border: none; - } - - .ueuse .abi p{ - color:#FFFAE6; - } - - .ueuse .abi .back{ - background-color: #FFC832; - border: none; - } - - .ueuse .abi .back h1{ - color:#252525; - } - .ueuse .abi h3{ - color:#CCC; - } - .ueuse .favbox .favbtn{ - background-color: #0c0c0c; - color:#FFC832; - } - .ueuse .favbox .favbtn_after{ - background-color: #FFC832; - color:#FFFAE6; - } - .ueuse .favbox .tuduki{ - background-color: #0c0c0c; - color:#FFC832; - } - .ueuse .favbox .tuduki:hover{ - background-color: #FFC832; - color:#FFFAE6; - } - .ueuse .favbox .delbtn{ - background-color: #0c0c0c; - color:#FF4848; - } - .ueuse .favbox .delbtn:hover{ - background-color: #FF4848; - color: #f5f5f5;; - } - .ueuse .favbox .addabi{ - background-color: #0c0c0c; - color:#FFC832; - } - .ueuse .favbox .addabi:hover{ - background-color: #FFC832; - color: #FFFAE6;; - } - .ueuse hr{ - border-top: 1px solid #CCC; - } - - .userheader h2{ - color:#FFFAE6; - } - - .userheader p{ - color: #CCC; - } - - .userheader .profile p{ - color:#FFFAE6; - } - - .userheader .rolebox{ - background-color: #181616; - border: 1px solid #FFC832; - } - - .fzone .follow .fbtn{ - background-color: #FFC832; - color:#FFFAE6; - } - .fzone .follow .fbtn:hover{ - background-color: #FFC832; - color: #FFFAE6; - } - - .fzone .follow .fbtn_no{ - background-color: #181616; - color:#FFC832; - border: 1px solid #FFC832; - } - .fzone .follow .fbtn_no:hover{ - background-color: #181616; - color: #FFC832; - } - .fzone .time p{ - color:#CCC; - } - .fzone .time a{ - color:#CCC; - } - .fzone .follow_yes{ - background-color: #181616; - } - .fzone .follow_yes p{ - color:#FFFAE6; - } - - - .rightbox{ - background-color: #0c0c0c; - border:none; - } - - .rightbox h1{ - color: #CCC; - } - - .rightbox .noticebox{ - background-color: #181616; - border: none; - } - - .rightbox .noticebox h4{ - color: #FFF; - } - - .rightbox .noticebox p{ - color: #FFF; - } - - .rightbox .noticebox .makeup p{ - color:#FFFAE6;; - } - - .rightbox .noticebox .makeup a{ - color:#FFC832; - } - .rightbox .noticebox .time p{ - color:#CCC; - } - .rightbox .btmbox h2{ - color: #CCC; - } - - .rightbox .btmbox h3{ - color: #CCC; - } - - .rightbox .btmbox p{ - color: #FFF; - } - - .rightbox .btmbox a{ - color:#FFC832; - } - - .sendbox{ - background-color: #181616; - border:none; - } - - .sendbox p{ - color: #FFF;; - } - - .sendbox textarea{ - background-color: #181616; - color:#CCC; - } - .sendbox .fxbox p{ - color:#FFFAE6; - } - - - .emjtex{ - background-color: #181616; - border: none; - } - - .emjtex h3{ - color:#FFF; - } - - .emjtex p{ - color:#CCC; - } - - .formarea{ - background-color: #181616; - } - - .formarea p{ - color:#CCC; - } - - - .modal-content { - background-color: #181616; - } - - .modal-content textarea{ - background-color: #181616; - color:#CCC; - } - .modal-content p{ - color:#CCC; - } - - .modal-content h1{ - color:#FFF; - } - - .modal-content .fbtn_no{ - background-color: #181616; - color:#FFC832; - border: 1px solid #FFC832; - } - .modal-content .fbtn_no:hover{ - background-color: #181616; - color: #FFC832; - } - - .inbox { - background: #0c0c0c; - color: #FFF; - border: none; - } - - .inbox::placeholder { - color: #999; - } - - .inbox:hover { - outline: none; - border: 1px solid #FFC832; - } - - .inbox:focus { - outline: none; - border: 1px solid #FFC832; - border-bottom: 3px solid #FFC832; - } - - .btmbutton{ - background-color: #FFC832; - color:#FFFAE6; - border: none; - } - .btmbutton:hover{ - background-color: #FFC832; - color: #FFFAE6; - } - - - .terms{ - background-color: #0c0c0c; - } - - .terms h1{ - color: #CCC; - } - - .terms h2{ - color: #FFF; - } - - .terms h3{ - color: #FFF; - } - - .terms h4{ - color: #FFF; - } - - .terms p{ - color: #FFF; - } - - .terms .code{ - background-color: #CCC; - } - - .terms .code p{ - color: #252525; - } - - .terms ul{ - color: #FFF; - } - - .terms .p2c{ - color: #CCC; - } - - .terms .p3{ - color: #FFF; - } - - .terms .err404 h1{ - color: #CCC; - } - - .terms .err404 p{ - color: #FFF; - } - - .notification{ - background-color: #181616; - border: none; - } - - .notification .flebox a{ - color:#CCC5; - } - - .notification p{ - color:#FFF; - } - - .notification h3{ - color:#CCC; - } - - - .notification .flebox .time{ - color:#CCC; - } - - .notification a{ - color:#FFC832; - } - .tokonone p{ - color:#CCC; - } +@import url('https://fonts.googleapis.com/css2?family=BIZ+UDPGothic:wght@400;700&family=Josefin+Sans:ital,wght@1,700&family=Kosugi+Maru&family=Zen+Maru+Gothic:wght@500&display=swap'); + + +::-webkit-scrollbar{ + display:none; +} +::-webkit-scrollbar:hover{ + overflow: scroll; + margin-right: 10px; + border-radius: 25px; +} +body{ + width: 70%; + display: flex; + border: none; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + padding-top: 12px; + background-color: #f7f7f7; + /* 画像を常に天地左右の中央に配置 */ + background-position: center center; + + /* 画像をタイル状に繰り返し表示しない */ + background-repeat: no-repeat; + + /* コンテンツの高さが画像の高さより大きい時、動かないように固定 */ + background-attachment: fixed; + + /* 表示するコンテナの大きさに基づいて、背景画像を調整 */ + background-size: cover; +} + +.irobutton{ + cursor: pointer; + border: none; + display: block; + width:50%; + margin: 32px; + padding: 8px 5%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + background-color: #FFC832; + + text-align: center; + border-radius: 50px; + color:#fff; + font-size: 22px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.sirobutton{ + cursor: pointer; + border: none; + display: block; + width:40%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + text-align: center; + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 22px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:45%; +} +.sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.inbox { + width: 96%; + padding: 8px 10px; + border: none; + border-radius: 10px; + background: #fff; + font-family: 'Zen Maru Gothic', sans-serif; + color: rgb(32,32,32); + font-size: 1em; + line-height: 1.5; + white-space: nowrap; + box-shadow:0px 0px 25px rgba(0,0,0,0.05) inset; + box-shadow:0px 0px 25px rgba(0,0,0,0.07); + overflow-x: scroll; + overflow-y : scroll ; + transition: border 350ms ease-in-out; + transition: border-bottom 150ms ease-out; + border: 1px solid #f1f1f1; + } + +.inbox::placeholder { + color: #999; +} + +.inbox:hover { + outline: none; + border: 1px solid #FFC832; +} + +.inbox:focus { + outline: none; + border: 1px solid #FFC832; + border-bottom: 3px solid #FFC832; +} + + +.errmsg{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 10px; + background-color: #ffebeb; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin: 12px; + text-align: left; + color:#ff4848; + font-family: 'BIZ UDPGothic', sans-serif; + word-wrap: break-word; + line-height: 20px; + border: 1px solid #FF4848; +} + +.flexbtn{ + display: flex; +} + +.flexbtn .irobutton{ + border: none; + display: block; + width:20%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + background-color: #FFC832; + + border-radius: 50px; + color:#fff; + font-size: 26px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.flexbtn.irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.flexbtn.irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.flexbtn.sirobutton{ + border: none; + display: block; + width:50%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 26px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.flexbtn.sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.flexbtn.sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + + +.rolebox{ + + margin-top: 12px; + margin-bottom: 12px; + + margin-left: auto; + margin-right: auto; + + width: 120px; + padding-left: auto; + padding-right: auto; + + background-color: #fff; + border: 1px solid #FFC832; + + border-radius: 25px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + +} + +.rolebox p{ + + color:#FFC832; + margin-top: 2px; + margin-bottom: 2px; + margin-left: 10px; + margin-right: 10px; + + text-align: center; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + +} + + +.userleftbox{ + border-radius: 17px; + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + margin-bottom: 12px; + background-color: #FFFFFF; + width: 18%; + height: 100%; + margin-left: 0px; + padding: 32px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; +} + +.userleftbox h1{ + font-family: 'Zen Maru Gothic', sans-serif; + margin-left: 20px; + color:#fff; + font-size: 32px; +} +.userleftbox .logo{ + display: flex; +} + +.userleftbox .logo img{ + + margin-left: auto; + margin-right: auto; + margin-top: 16px; + width: 72%; + + +} +.userleftbox .logo p{ + color:#FFC832; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; +} + +.leftbutton_on{ + cursor: pointer; + border: none; + display: block; + width:70%; + margin: 16px; + padding: 8px auto; + margin-left: auto; + margin-right: auto; + + padding-left: 16px; + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 20px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: left; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.leftbutton_on:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:75%; +} +.leftbutton_on:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:65%; +} + +.leftbutton{ + cursor: pointer; + border: none; + display: block; + width:70%; + margin: 16px; + padding: 8px auto; + margin-left: auto; + margin-right: auto; + + padding-left: 16px; + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFFFFF; + + border-radius: 50px; + color:#FFC832; + font-size: 20px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: left; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.leftbutton:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:75%; +} +.leftbutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:65%; +} + +main{ + height: 95dvh; + overflow: auto; + border-radius: 17px; + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + width: 62%; + background-color: #fff; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; +} + +main h1{ + color:#252525; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; +} + +.userheader{ + margin: 12px; + border-radius: 10px; + width: auto; + height:auto; + margin-bottom: 12px; +} + +.userheader .hed img{ + object-fit: cover; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + width: 100%; + height:25vh; + border-radius: 10px; +} + +.userheader .icon{ + margin-left: 24px; + display: flex; + width: auto; +} + +.userheader .icon img{ + object-fit: cover; + margin-top: -90px; + text-align: left; + width: 148px; + height:148px; + border-radius: 50%; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); +} + +.userheader h2{ + margin-left: 12px; + margin-top: auto; + margin-bottom: auto; + color:#252525; + font-size: 32px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: 900; +} + +.userheader p{ + margin-left: 12px; + margin-right: auto; + margin-top: auto; + margin-bottom: 14px; + color: #999; + font-size: 18px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: 900; +} + +.userheader .profile p{ + text-align: left; + margin-top: 12px; + margin-bottom: auto; + margin-left: 24px; + margin-right: 24px; + word-wrap: break-word; + font-size: 18px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.userheader .roleboxes{ + margin-left: 180px; + display: flex; + padding: 0px; + flex-wrap : wrap; +} + + +.userheader .rolebox{ + + margin-top: 0px; + margin-bottom: 12px; + + margin-left: 0px; + margin-right: 12px; + + width: auto; + padding-left: auto; + padding-right: auto; + + background-color: #fff; + border: 1px solid #FFC832; + + border-radius: 25px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + +} + + +.userheader .rolebox p{ + + color:#FFC832; + margin-top: 2px; + margin-bottom: 2px; + margin-left: 10px; + margin-right: 10px; + + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + +} + +.fzone{ + margin-left: 24px; + margin-right: 24px; + margin-bottom: 24px; + width: auto; + height: 48px; + display: flex; + padding-left: 12px; + padding-right: 12px; +} + +.fzone .follow .fbtn{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 0px; + margin-top: 12px; + margin-bottom: 12px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.fzone .follow .fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.fzone .follow .fbtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.fzone .follow .fbtn_no{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 0px; + margin-top: 12px; + margin-bottom: 12px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + border: 1px solid #FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.fzone .follow .fbtn_no:hover{ + background-color: #FFFAE6; + color: #FFC832; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.fzone .follow .fbtn_no:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.fzone .follow .fbtn_un{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 0px; + margin-top: 12px; + margin-bottom: 12px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#4e4428; + border: none; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.fzone .follow .fbtn_un:hover{ + background-color: #FFFAE6; + color: #FFC832; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.fzone .follow .fbtn_un:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.fzone .time{ + margin-top: auto; + margin-bottom: 0px; + margin-left: 0px; + margin-right: auto; +} +.fzone .time p{ + margin-top: 0px; + margin-bottom: 0px; + text-align: left; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.fzone .time a{ + margin-top: 0px; + margin-bottom: 0px; + text-align: left; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.fzone .follow_yes{ + margin-top: auto; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + background-color: #FFFAE6; + border-radius: 10px; + padding: 12px; +} +.fzone .follow_yes p{ + margin-top: 0px; + margin-bottom: 0px; + text-align: left; + font-size: 12px; + color:#252525; + font-family: 'BIZ UDPGothic', sans-serif; +} + + + +.ueuse{ + animation: slideInY 0.5s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards; + margin: 12px; + border-radius: 10px; + padding-left: 24px; + padding-right: 24px; + padding-top: 16px; + padding-bottom: 16px; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; +} +@keyframes slideInY { + 0% { + transform: translateY(24px); + opacity: 0; + } + 100% { + transform: translateY(0px); + } + 40%,100% { + opacity: 1; + } +} +.ueuse .flebox{ + display: flex; +} +.ueuse .flebox img{ + object-fit: cover; + margin-left: -12px; + + text-align: center; + width: 48px; + height:48px; + border-radius: 50%; +} +.ueuse .flebox a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 18px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + + + + +.ueuse .flebox .idbox{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + border-radius: 10px; + background-color: #FFF; + border: 1px solid #EEE; +} +.ueuse .flebox .idbox a{ + margin-top: 6px; + margin-bottom: 6px; + margin-left: 8px; + margin-right: 8px; + text-align: center; + font-size: 12px; + color:#999; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.ueuse p{ + line-height:20px; + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 60px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + +.ueuse h1{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 60px; + font-size: 48px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse h2{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 60px; + font-size: 32px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse h3{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 60px; + font-size: 24px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse center{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + font-size: 16px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse p img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 32px; + vertical-align: middle; +} + +.ueuse h1 img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 64px; + vertical-align: middle; +} + +.ueuse h2 img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 48px; + vertical-align: middle; +} + +.ueuse h3 img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 48px; + vertical-align: middle; +} + +.ueuse img{ + margin-left: 60px; + margin-top: auto; + margin-bottom: auto; + margin-right: 4px; + height: 32px; + vertical-align: middle; +} + +.ueuse .flebox .time{ + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + margin-right: 12px; + text-align: right; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.ueuse .photo1 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: 350px; + border: 1px solid #EEE; +} + +.ueuse .photo2{ + display: flex; +} + +.ueuse .photo2 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 47%; + height: 350px; + border: 1px solid #EEE; +} + +.ueuse .video1 video{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: 350px; + border: 1px solid #EEE; +} + +.ueuse .abi{ + margin-left:auto; + margin-right: auto; + margin-top: 12px; + margin-bottom: 12px; + border-radius: 10px; + padding-left: 12px; + padding-right: 12px; + padding-top: 16px; + padding-bottom: 16px; + background-color: #FFFFFF; + border: 1px solid #EEE; + width: auto; +} + + +.ueuse .abi p{ + line-height:20px; + overflow-wrap: break-word; + margin-top: 12px; + margin-bottom: 12px; + margin-left: auto; + font-size: 14px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse .abi .back{ + background-color: #FFFAE6; + padding: 12px; + border-radius: 7px; + border: 1px solid #EEE; +} + +.ueuse .abi .back h1{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse .abi h3{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + font-size: 12px; + color:#999; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse .favbox{ + display: flex; + margin-left: 0px; + width: 100%; +} +.ueuse .favbox .favbtn{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: all 250ms ease-out; +} + +.ueuse .favbox .favbtn_after{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: all 250ms ease-out +} + + +.ueuse .favbox .tuduki{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 5px; + padding-bottom: 5px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + +.ueuse .favbox .tuduki:hover{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 5px; + padding-bottom: 5px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + +.ueuse .favbox .delbtn{ + cursor: pointer; + border: none; + display: block; + width:60px; + padding: 8px auto; + + margin-left: 6px; + margin-right: 0px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + + + background-color: #F5F5F5; + + border-radius: 50px; + color:#FF4848; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + +.ueuse .favbox .delbtn:hover{ + cursor: pointer; + border: none; + display: block; + width:60px; + padding: 8px auto; + + margin-left: 6px; + margin-right: 0px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + + + background-color: #FF4848; + + border-radius: 50px; + color: #f5f5f5;; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + + + +.ueuse .favbox .addabi{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: auto; + margin-right: 6px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + +.ueuse .favbox .addabi:hover{ + cursor: pointer; + border: none; + display: block; + width:auto; + + margin-left: auto; + margin-right: 6px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color: #FFFAE6;; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + + +.ueuse .favbox img{ + margin-left: 0px; + width: 24px; +} + +.ueuse hr{ + height: 0; + margin-top: 12px; + margin-bottom: 12px; + padding: 0; + border: 0; + border-top: 1px solid #999; +} + + + +.tokonone p{ + text-align: center; + margin-top: 64px; + margin-bottom: 64px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.sendbox{ + margin: 12px; + border-radius: 10px; + padding-left: 24px; + padding-right: 24px; + padding-top: 24px; + padding-bottom: 24px; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; +} + +.sendbox .fx{ + display: flex; + width: 100%; +} + +.sendbox .fx img{ + object-fit: cover; + margin-left: -12px; + text-align: center; + width: 58px; + height:58px; + border-radius: 50%; +} + +.sendbox p{ + line-height:20px; + text-align: left; + margin-top: 12px; + margin-bottom: 12px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.sendbox textarea{ + background-color: #F5F5F5; + text-align: left; + margin-left: auto; + margin-right: auto; + width:100%; + height:90px; + border-radius: 10px; + outline: none; + border: none; + resize: none; + font-size: 18px; +} + +.sendbox .fxbox{ + display: flex; +} + +.sendbox label > input { + display:none; /* アップロードボタンのスタイルを無効にする */ +} + +.sendbox label{ + cursor: pointer; + border: none; + display: block; + width:6%; + padding: 8px auto; + margin-left: 6px; + margin-right: 6px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.sendbox label:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:7%; +} +.sendbox label:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:5%; +} +.sendbox label img{ + vertical-align:bottom; + width: 24px; +} +.sendbox .fxbox p{ + line-height:20px; + text-align: left; + margin-top: auto; + margin-bottom: auto; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + + +.ueusebtn{ + cursor: pointer; + border: none; + display: block; + width:20%; + padding: 8px auto; + margin-left: auto; + margin-right: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.ueusebtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:21%; +} +.ueusebtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:19%; +} +/*--------------------------*/ + +.ueuse2{ + margin: 12px; + border-radius: 10px; + padding-left: 24px; + padding-right: 24px; + padding-top: 16px; + padding-bottom: 16px; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; +} +.ueuse2 .flebox{ + display: flex; +} +.ueuse2 .flebox img{ + object-fit: cover; + margin-left: -12px; + + text-align: center; + width: 64px; + height:64px; + border-radius: 50%; +} +.ueuse2 .flebox a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 26px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse2 .flebox .idbox{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + border-radius: 10px; + background-color: #FFF; + border: 1px solid #EEE; +} +.ueuse2 .flebox .idbox a{ + margin-top: 6px; + margin-bottom: 6px; + margin-left: 8px; + margin-right: 8px; + text-align: center; + font-size: 16px; + color:#999; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.ueuse2 p{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 80px; + font-size: 22px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse2 a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + font-size: 16px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse2 p img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 32px; + vertical-align: middle; +} + +.ueuse2 .flebox .time{ + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + margin-right: 12px; + text-align: right; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.ueuse2 .photo1 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: 25dvh; + border: 1px solid #EEE; +} + +.ueuse2 .photo2{ + display: flex; +} + +.ueuse2 .photo2 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 47%; + height: 350px; + border: 1px solid #EEE; +} + +.ueuse2 .video1 video{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: 350px; + border: 1px solid #EEE; +} + +.formarea{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + text-align: left; +} + +.formarea p{ + overflow-wrap: break-word; + margin-top: 24px; + margin-bottom: 24px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.formarea .iconimg{ + margin-left: auto; + margin-right: auto; + text-align: center; +} + +.formarea .iconimg img{ + object-fit: cover; + margin-top: -64px; + margin-left: auto; + margin-right: auto; + text-align: center; + width: 100px; + height:100px; + border-radius: 50%; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); +} +.formarea .hed img{ + object-fit: cover; + object-fit: cover; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + width: 100%; + height:25vh; + border-radius: 10px; +} + +.formarea .authzone{ + width: 100%; + margin-left: auto; + margin-right: auto; + text-align: center; +} + +.formarea .sub{ + display: flex; + margin: 48px; + margin-left: auto; + margin-right: auto; +} + +.formarea .p2{ + margin-top: 0px; + margin-bottom: 10px; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +label>input { + display:none; /* アップロードボタンのスタイルを無効にする */ +} +.imgbtn{ + cursor: pointer; + border: none; + display: block; + width:25%; + padding: 8px auto; + margin-left: auto; + margin-right: auto; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.imgbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:19%; +} +.imgebtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:21%; +} + +.imgbtn2{ + cursor: pointer; + border: none; + display: block; + width:20%; + padding: 8px auto; + margin-top: -64px; + margin-left: 12px; + margin-right: auto; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.imgbtn2:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:19%; +} +.imgebtn2:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:21%; +} + +.modal { + display: none; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: 9999; +} + +.show { + display: block; +} +.modal-content { + background-color: #fff; + padding: 16px; + border-radius: 10px; + width: 60%; + max-width: 400px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); +} + +.modal-content textarea{ + background-color: #F5F5F5; + text-align: left; + margin-left: auto; + margin-right: auto; + width:100%; + height:90px; + border-radius: 10px; + outline: none; + border: none; + resize: none; + font-size: 18px; +} +.modal-content p{ + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.modal-content h1{ + font-size: 24px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.modal-content .btn_area{ + display: flex; + width: 70%; + margin-left: auto; + margin-right: 0px; +} + +.modal-content .fbtn{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 6px; + margin-bottom: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.modal-content .fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.modal-content .fbtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.modal-content .fbtn_no{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 0px; + margin-bottom: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + border: 1px solid #FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.modal-content .fbtn_no:hover{ + background-color: #FFFAE6; + color: #FFC832; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.modal-content .fbtn_no:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.topbox { + position: fixed; + + top: 0; + left: 0; + width: 100%; + height: 44px; + padding-top: 0.0%; + padding-bottom: 0.2%; + padding-left: 23%; + + background-color: #FFC832; + box-shadow: 0px 0px 30px rgba(0,0,0,0.1); + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 2em; + text-align: left; + color: #fff; + +} + +.topbox .logo img{ + margin-left: 0px; + margin-right: auto; + margin-top: 2px; + width: 120px; +} + +.terms{ + overflow-wrap: break-word; + margin-left: auto; + margin-right: auto; + width: 77%; + margin-top: 64px; + margin-bottom: 64px; + background-color: #f7f7f7; +} + +.terms h1{ + line-height:32px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 48px; + text-align: left; + color: #252525; +} + +.terms h2{ + line-height:32px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 48px; + text-align: left; + color: #252525; +} + +.terms h3{ + line-height:28px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + text-align: left; + color: #252525; +} + +.terms h4{ + line-height:24px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 24px; + text-align: left; + color: #252525; +} + +.terms p{ + margin-top: 2px; + margin-bottom: 2px; + line-height:24px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #252525; +} + +.terms img{ + background-color: #FFF; + background: linear-gradient(45deg, #CCC 25%, transparent 25%, transparent 75%, #CCC 75%), + linear-gradient(45deg, #CCC 25%, transparent 25%, transparent 75%, #CCC 75%); + background-size: 20px 20px; + background-position: 0 0, 10px 10px; + object-fit: cover; + width: auto; + height: 40dvh; + margin: 12px; + border-radius: 15px; +} +.terms .code{ + background-color: #252525; + border-radius: 15px; + padding: 12px; +} + +.terms .code p{ + line-height:24px; + margin-right: 12px; + margin-left: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #FFFFFF; +} + + +.terms .p2c{ + margin-top: 0px; + margin-bottom: 10px; + text-align: left; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.terms .p3{ + margin-top: 24px; + text-align: left; + word-wrap: break-word; + line-height: 24px; + color: #252525; + font-size: 22px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.terms ul{ + margin-top: 6px; + margin-bottom: 6px; + font-family: 'BIZ UDPGothic', sans-serif; + line-height: 20px; +} + +.terms .err404 h1{ + margin-top: 256px; + line-height:64px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 64px; + text-align: center; + color: #252525; +} + +.terms .err404 p{ + margin-top: 2px; + margin-bottom: 2px; + line-height:32px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: center; + color: #252525; +} + + +.rightbox{ + position: relative; + border-radius: 17px; + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + width: 24%; + background-color: #fff; + padding: 12px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; +} + +.rightbox h1{ + + margin-top: 12px; + margin-bottom: 0px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 28px; + text-align: left; + color: #252525; +} + +.rightbox .noticearea{ + width: auto; + height: 52dvh; + overflow: scroll; + border-radius: 10px; +} + +.rightbox .noticebox{ + overflow-wrap: break-word; + border-radius: 10px; + margin-top: 12px; + margin-bottom: 12px; + margin-left: auto; + margin-right: auto; + width: auto; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; + padding: 12px; +} + +.rightbox .noticebox h4{ + margin-top: 2px; + margin-bottom: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 20px; + text-align: left; + color: #252525; +} + +.rightbox .noticebox p{ + line-height: 20px; + margin-top: 2px; + margin-bottom: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #252525; +} + +.rightbox .noticebox img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 32px; + vertical-align: middle; +} + +.rightbox .noticebox .makeup p{ + line-height: 20px; + margin-top: 2px; + margin-bottom: 2px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #252525; +} + +.rightbox .noticebox .makeup a{ + margin-top: 24px; + margin-bottom: auto; + margin-left: 0px; + font-size: 16px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.rightbox .noticebox .time{ + margin-top: 4px; + margin-bottom: auto; + margin-left: 0px; + margin-right: auto; +} +.rightbox .noticebox .time p{ + margin-top: 0px; + margin-bottom: 0px; + text-align: left; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + + + +.rightbox .btmbox{ + position: absolute; + bottom: 12px; /*下に固定*/ + height: 31dvh; + width: 90%; +} + +.rightbox .btmbox h2{ + margin-top: 12px; + margin-bottom: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 20px; + text-align: left; + color: #252525; +} + +.rightbox .btmbox h3{ + margin-top: 2px; + margin-bottom: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 20px; + text-align: left; + color: #252525; +} + +.rightbox .btmbox p{ + + line-height: 20px; + margin-top: 2px; + margin-bottom: 2px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 14px; + text-align: left; + color: #252525; +} + +.rightbox .btmbox a{ + margin-top: 24px; + margin-bottom: auto; + margin-left: 0px; + margin-right: 6px; + font-size: 14px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + + +.loading { + text-align: center; + font-size: 48px; /* 絵文字のサイズ */ + animation: rotate 0.5s infinite linear; /* アニメーションを適用 */ +} + +@keyframes rotate { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +.emojibox{ + margin-left: 12px; + margin-right: 12px; + padding: 12px; + width: auto; +} + +.emojizone{ + margin-left: 0px; + margin-right: 0px; + margin-top: 12px; +} + +.emjtex{ + background-color: #F5F5F5; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + padding: 12px; + border-radius: 10px; + border: 1px solid #EEE; +} + +.emjtex .fx{ + display: flex; +} + +.emjtex img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 64px; +} + +.emjtex h3{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 24px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.emjtex p{ + overflow-wrap: break-word; + margin-top: 12px; + margin-bottom: auto; + margin-left: 12px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.rp p{ + overflow-wrap: break-word; + margin-top: 0px; + margin-bottom: 6px; + margin-left: 12px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + + +.notification{ + animation: slideInY 0.5s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards; + margin: 12px; + border-radius: 10px; + padding-left: 24px; + padding-right: 24px; + padding-top: 16px; + padding-bottom: 16px; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; +} +@keyframes slideInY { + 0% { + transform: translateY(24px); + opacity: 0; + } + 100% { + transform: translateY(0px); + } + 40%,100% { + opacity: 1; + } +} +.notification .flebox{ + display: flex; +} + +.notification .flebox a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 18px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.notification .flebox .idbox{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + border-radius: 10px; + background-color: #FFF; + border: 1px solid #EEE; +} +.notification .flebox .idbox a{ + margin-top: 6px; + margin-bottom: 6px; + margin-left: 8px; + margin-right: 8px; + text-align: center; + font-size: 12px; + color:#999; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.notification p{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.notification h3{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: 6px; + margin-left: 12px; + font-size: 24px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + +.notification .flebox .time{ + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + margin-right: 12px; + text-align: right; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.notification a{ + overflow-wrap: break-word; + margin-top: 24px; + margin-bottom: auto; + margin-left: 12px; + font-size: 16px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +hr{ + height: 0; + margin-top: 12px; + margin-bottom: 12px; + padding: 0; + border: 0; + border-top: 1px solid #FFC832; +} + + +.search_btn{ + margin-top: 24px; + cursor: pointer; + border: none; + display: block; + width:20%; + padding: 8px auto; + margin-left: auto; + margin-right: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.search_btn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:21%; +} +.search_btn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:19%; +} + +.botbox{ + display: none; +} + +/*------------------------------------------------------------------------------------------------------------*/ +/*--------------------------------------------------スマホ向け--------------------------------------------------*/ +/*--------------------------------------------------ここから--------------------------------------------------*/ +/*------------------------------------------------------------------------------------------------------------*/ + +@media screen and (max-width:1010px) { + body{ + width: 100%; + display: block; + border: none; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + padding-top: 0px; + } + + .userleftbox{ + display: none; + } + + .userheader .icon{ + margin-left: 24px; + display: block; + width: auto; + } + + .userheader .roleboxes{ + margin-left: 24px; + display: flex; + padding: 0px; + flex-wrap : wrap; + } + + main{ + height: 88dvh; + overflow: auto; + border-radius: 0px; + margin-top: 0px; + margin-left: 0px; + margin-right: 0px; + width: auto; + background-color: #fff; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: none; + border-bottom: 1px solid #FFC832; + } + + main h1{ + color:#252525; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; + } + + .sendbox .fx img{ + object-fit: cover; + margin-left: -12px; + text-align: center; + width: 58px; + height:58px; + border-radius: 50%; + } + + .sendbox p{ + line-height:20px; + text-align: left; + margin-top: 12px; + margin-bottom: 12px; + font-size: 14px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + } + + .sendbox .fxbox{ + display: flex; + } + + .sendbox label > input { + display:none; /* アップロードボタンのスタイルを無効にする */ + } + + .sendbox label{ + width:10%; + padding: 8px auto; + margin-left: 6px; + margin-right: 6px; + padding-top: 6px; + padding-bottom: 6px; + } + .sendbox label:hover{ + width:11%; + } + .sendbox label:active{ + width:9%; + } + .sendbox label img{ + vertical-align:bottom; + width: 24px; + } + .sendbox .fxbox p{ + line-height:20px; + text-align: left; + margin-top: auto; + margin-bottom: auto; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + } + + .ueusebtn{ + width:30%; + } + .ueusebtn:hover{ + width:31%; + } + .ueusebtn:active{ + width:29%; + } + + .rightbox{ + display: none; + } + + .botbox{ + display: block; + } + + .botbox .lbtnzone{ + display: flex; + width: 90%; + margin-left: auto; + margin-right: auto; + } + + + .btmbutton{ + cursor: pointer; + border: none; + display: block; + width:28%; + margin: 16px; + padding: 8px auto; + height: auto; + margin-left: 12px; + margin-right: 12px; + + padding-top: 14px; + padding-bottom: 14px; + background-color: #FFFFFF; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; + } + .btmbutton:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:29%; + } + .btmbutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:27%; + } + + .ueuse .favbox .tuduki{ + + display: block; + width:26%; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 8px; + padding-bottom: 8px; + padding-left: 6px; + padding-right: 6px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 12px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + } + + .ueuse .favbox .tuduki:hover{ + background-color: #FFC832; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 8px; + padding-bottom: 8px; + padding-left: 6px; + padding-right: 6px; + + width:28%; + border-radius: 50px; + color:#FFFAE6; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + font-size: 12px; + text-decoration:none; + text-align: center; + } + + .ueuse .favbox .delbtn{ + cursor: pointer; + border: none; + display: block; + width:60px; + padding: 8px auto; + + margin-left: 6px; + margin-right: 0px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + + + background-color: #F5F5F5; + + border-radius: 50px; + color:#FF4848; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + + .ueuse .favbox .delbtn:hover{ + cursor: pointer; + border: none; + display: block; + width:60px; + padding: 8px auto; + + margin-left: 6px; + margin-right: 0px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + + + background-color: #FF4848; + + border-radius: 50px; + color: #f5f5f5;; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + + + + .ueuse .favbox .addabi{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: auto; + margin-right: 6px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + + .ueuse .favbox .addabi:hover{ + cursor: pointer; + border: none; + display: block; + width:auto; + + margin-left: auto; + margin-right: 6px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color: #FFFAE6;; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + + + .ueuse .favbox img{ + margin-left: 0px; + width: 24px; + } + + .leftbox{ + display: block; + border-radius: 17px; + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + margin-bottom: 12px; + background-color: #FFFFFF; + width: 18%; + height: 100%; + margin-left: 0px; + padding: 32px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; + } + + .leftbox h1{ + font-family: 'Zen Maru Gothic', sans-serif; + margin-left: 20px; + color:#fff; + font-size: 32px; + } + .leftbox .logo{ + display: flex; + } + + .leftbox .logo img{ + + margin-left: auto; + margin-right: auto; + margin-top: 16px; + width: 72%; + + + } + .leftbox .logo p{ + color:#FFC832; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; + } + + .imgbtn{ + width:40%; + } + .imgbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:35%; + } + .imgebtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; + } + + .imgbtn2{ + cursor: pointer; + border: none; + display: block; + width:20%; + padding: 8px auto; + margin-top: -64px; + margin-left: 12px; + margin-right: auto; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + .imgbtn2:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:19%; + } + .imgebtn2:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:21%; + } + + .topbox { + position: absolute; + + top: 0; + left: 0; + width: 90%; + margin-left: 0px; + margin-right: 0px; + height: 44px; + padding-top: 0.0%; + padding-bottom: 0.2%; + padding-left: 10%; + } + + .topbox .logo img{ + margin-left: 0px; + margin-right: auto; + margin-top: 2px; + width: 120px; + } + + .terms{ + overflow-wrap: break-word; + margin-left: auto; + margin-right: auto; + width: 90%; + margin-top: 64px; + margin-bottom: 64px; + background-color: #f7f7f7; + } + + .terms h1{ + line-height:52px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 48px; + text-align: left; + color: #252525; + } + + .terms h2{ + line-height:52px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 48px; + text-align: left; + color: #252525; + } + + .terms h3{ + line-height:36px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + text-align: left; + color: #252525; + } + + .terms h4{ + line-height:24px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 24px; + text-align: left; + color: #252525; + } + + .terms p{ + margin-top: 2px; + margin-bottom: 2px; + line-height:24px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #252525; + } + + .terms img{ + + object-fit: cover; + width: auto; + height: auto; + margin-top: 12px; + margin-bottom: 12px; + margin-left: auto; + margin-right: auto; + border-radius: 15px; + } + + .terms .code{ + background-color: #252525; + border-radius: 15px; + padding: 12px; + } + + .terms .code p{ + line-height:24px; + margin-right: 12px; + margin-left: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #FFFFFF; + } + + + .terms .p2c{ + margin-top: 0px; + margin-bottom: 10px; + text-align: left; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + } + + .terms .p3{ + margin-top: 24px; + text-align: left; + word-wrap: break-word; + line-height: 24px; + color: #252525; + font-size: 22px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + } + + .terms .err404 h1{ + margin-top: 128px; + line-height:64px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 64px; + text-align: center; + color: #252525; + } + + + .ueuse .photo1 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: auto; + border: 1px solid #EEE; + } + + .ueuse .photo2{ + display: flex; + } + + .ueuse .photo2 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 47%; + height: auto; + border: 1px solid #EEE; + } + + .ueuse .video1 video{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: auto; + border: 1px solid #EEE; + } + +} + +/*------------------------------------------------------------------------------------------------------------*/ +/*--------------------------------------------------ダークモード--------------------------------------------------*/ +/*--------------------------------------------------ここから--------------------------------------------------*/ +/*------------------------------------------------------------------------------------------------------------*/ + +@media (prefers-color-scheme: dark) { + + body{ + background-color: #0c0c0c; + } + .errmsg{ + background-color: #3a3333; + color:#ff4848; + border: 1px solid #FF4848; + } + .rolebox{ + background-color: #0c0c0c; + border: 1px solid #FFC832; + } + + .userleftbox{ + background-color: #181616; + border: none; + } + + .leftbutton{ + background-color: #181616; + color:#FFFAE6; + } + .leftbutton:hover{ + background-color: #FFFAE6; + color: #0c0c0c; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:75%; + } + .leftbutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:65%; + } + + main{ + background-color: #0c0c0c; + border: none; + } + + main h1{ + color:#FFFAE6; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; + } + + + .ueuse{ + background-color: #181616; + border: none; + } + .ueuse .flebox a{ + color:#FFFAE6; + } + + .ueuse .flebox .idbox{ + background-color: #302c2c; + border: none; + } + .ueuse .flebox .idbox a{ + color:#CCC; + } + + .ueuse p{ + color:#FFF; + } + + + .ueuse h1{ + color:#FFF; + } + + .ueuse h2{ + color:#FFF; + } + + .ueuse h3{ + color:#FFF; + } + + .ueuse center{ + color:#FFF; + } + + .ueuse a{ + color:#FFC832; + } + + .ueuse .flebox .time{ + color:#CCC; + } + + .ueuse .photo1 img{ + border: none; + } + + .ueuse .photo2{ + display: flex; + } + + .ueuse .photo2 img{ + border: none; + } + + .ueuse .video1 video{ + border: none; + } + + .ueuse .abi{ + background-color: #0c0c0c; + border: none; + } + + .ueuse .abi p{ + color:#FFFAE6; + } + + .ueuse .abi .back{ + background-color: #FFC832; + border: none; + } + + .ueuse .abi .back h1{ + color:#252525; + } + .ueuse .abi h3{ + color:#CCC; + } + .ueuse .favbox .favbtn{ + background-color: #0c0c0c; + color:#FFC832; + } + .ueuse .favbox .favbtn_after{ + background-color: #FFC832; + color:#FFFAE6; + } + .ueuse .favbox .tuduki{ + background-color: #0c0c0c; + color:#FFC832; + } + .ueuse .favbox .tuduki:hover{ + background-color: #FFC832; + color:#FFFAE6; + } + .ueuse .favbox .delbtn{ + background-color: #0c0c0c; + color:#FF4848; + } + .ueuse .favbox .delbtn:hover{ + background-color: #FF4848; + color: #f5f5f5;; + } + .ueuse .favbox .addabi{ + background-color: #0c0c0c; + color:#FFC832; + } + .ueuse .favbox .addabi:hover{ + background-color: #FFC832; + color: #FFFAE6;; + } + .ueuse hr{ + border-top: 1px solid #CCC; + } + + .userheader h2{ + color:#FFFAE6; + } + + .userheader p{ + color: #CCC; + } + + .userheader .profile p{ + color:#FFFAE6; + } + + .userheader .rolebox{ + background-color: #181616; + border: 1px solid #FFC832; + } + + .fzone .follow .fbtn{ + background-color: #FFC832; + color:#FFFAE6; + } + .fzone .follow .fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + } + + .fzone .follow .fbtn_no{ + background-color: #181616; + color:#FFC832; + border: 1px solid #FFC832; + } + .fzone .follow .fbtn_no:hover{ + background-color: #181616; + color: #FFC832; + } + .fzone .time p{ + color:#CCC; + } + .fzone .time a{ + color:#CCC; + } + .fzone .follow_yes{ + background-color: #181616; + } + .fzone .follow_yes p{ + color:#FFFAE6; + } + + + .rightbox{ + background-color: #0c0c0c; + border:none; + } + + .rightbox h1{ + color: #CCC; + } + + .rightbox .noticebox{ + background-color: #181616; + border: none; + } + + .rightbox .noticebox h4{ + color: #FFF; + } + + .rightbox .noticebox p{ + color: #FFF; + } + + .rightbox .noticebox .makeup p{ + color:#FFFAE6;; + } + + .rightbox .noticebox .makeup a{ + color:#FFC832; + } + .rightbox .noticebox .time p{ + color:#CCC; + } + .rightbox .btmbox h2{ + color: #CCC; + } + + .rightbox .btmbox h3{ + color: #CCC; + } + + .rightbox .btmbox p{ + color: #FFF; + } + + .rightbox .btmbox a{ + color:#FFC832; + } + + .sendbox{ + background-color: #181616; + border:none; + } + + .sendbox p{ + color: #FFF;; + } + + .sendbox textarea{ + background-color: #181616; + color:#CCC; + } + .sendbox .fxbox p{ + color:#FFFAE6; + } + + + .emjtex{ + background-color: #181616; + border: none; + } + + .emjtex h3{ + color:#FFF; + } + + .emjtex p{ + color:#CCC; + } + + .formarea{ + background-color: #181616; + } + + .formarea p{ + color:#CCC; + } + + + .modal-content { + background-color: #181616; + } + + .modal-content textarea{ + background-color: #181616; + color:#CCC; + } + .modal-content p{ + color:#CCC; + } + + .modal-content h1{ + color:#FFF; + } + + .modal-content .fbtn_no{ + background-color: #181616; + color:#FFC832; + border: 1px solid #FFC832; + } + .modal-content .fbtn_no:hover{ + background-color: #181616; + color: #FFC832; + } + + .inbox { + background: #0c0c0c; + color: #FFF; + border: none; + } + + .inbox::placeholder { + color: #999; + } + + .inbox:hover { + outline: none; + border: 1px solid #FFC832; + } + + .inbox:focus { + outline: none; + border: 1px solid #FFC832; + border-bottom: 3px solid #FFC832; + } + + .btmbutton{ + background-color: #FFC832; + color:#FFFAE6; + border: none; + } + .btmbutton:hover{ + background-color: #FFC832; + color: #FFFAE6; + } + + + .terms{ + background-color: #0c0c0c; + } + + .terms h1{ + color: #CCC; + } + + .terms h2{ + color: #FFF; + } + + .terms h3{ + color: #FFF; + } + + .terms h4{ + color: #FFF; + } + + .terms p{ + color: #FFF; + } + + .terms .code{ + background-color: #CCC; + } + + .terms .code p{ + color: #252525; + } + + .terms ul{ + color: #FFF; + } + + .terms .p2c{ + color: #CCC; + } + + .terms .p3{ + color: #FFF; + } + + .terms .err404 h1{ + color: #CCC; + } + + .terms .err404 p{ + color: #FFF; + } + + .notification{ + background-color: #181616; + border: none; + } + + .notification .flebox a{ + color:#CCC5; + } + + .notification p{ + color:#FFF; + } + + .notification h3{ + color:#CCC; + } + + + .notification .flebox .time{ + color:#CCC; + } + + .notification a{ + color:#FFC832; + } + .tokonone p{ + color:#CCC; + } } \ No newline at end of file diff --git a/css/style.css b/css/style.css index cef3fbe..ee6b954 100644 --- a/css/style.css +++ b/css/style.css @@ -1,855 +1,891 @@ -@import url('https://fonts.googleapis.com/css2?family=BIZ+UDPGothic:wght@400;700&family=Josefin+Sans:ital,wght@1,700&family=Kosugi+Maru&family=Zen+Maru+Gothic:wght@500&display=swap'); - -body{ - display: flex; - border: none; - margin-top: 0px; - margin-bottom: 0px; - margin-left: auto; - margin-right: 0px; - background-color: #FFFFFF; - /* 画像を常に天地左右の中央に配置 */ - background-position: center center; - - /* 画像をタイル状に繰り返し表示しない */ - background-repeat: no-repeat; - - /* コンテンツの高さが画像の高さより大きい時、動かないように固定 */ - background-attachment: fixed; - - /* 表示するコンテナの大きさに基づいて、背景画像を調整 */ - background-size: cover; -} - -.leftbox{ - margin-top: 0px; - margin-bottom: 0px; - background-color: #FFC832; - width: 35%; - height: 100%; - margin-left: 0px; - padding: 32px; -} - -.leftbox h1{ - margin-left: 20px; - color:#fff; - font-size: 2em; -} -.leftbox .logo{ - display: flex; -} - -.leftbox .logo img{ - - margin-left: 16px; - margin-top: 16px; - width: 200px; - -} -.leftbox .logo p{ - color:#fff; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 32px; - margin-left: 8px; - margin-top: auto; - margin-bottom: -4px; -} - -.leftbox2{ - margin-top: 0px; - margin-bottom: 0px; - background-color: #FFC832; - width: 35%; - height: 100vh; - margin-left: 0px; - padding: 32px; -} - -.leftbox2 h1{ - margin-left: 20px; - color:#fff; - font-size: 2em; -} -.leftbox2 .logo{ - display: flex; -} - -.leftbox2 .logo img{ - - margin-left: 16px; - margin-top: 16px; - width: 200px; - -} -.leftbox2 .logo p{ - color:#fff; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 32px; - margin-left: 8px; - margin-top: auto; - margin-bottom: -4px; -} - -.textbox{ - padding: 32px; - width: auto; - margin-left: 24px; - margin-right: 24px; - margin-top: 64px; - margin-bottom: 100px; - border-radius: 25px; - background-color: #fff; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); -} - -.textbox h1{ - word-wrap: break-word; - margin: 0px; - color: #FFC832; - font-size: 32px; - font-family: 'Zen Maru Gothic', sans-serif; -} - -.textbox h2{ - word-wrap: break-word; - margin: 0px; - color: #252525; - text-align: center; - font-size: 32px; - font-family: 'Zen Maru Gothic', sans-serif; -} - -.textbox h3{ - word-wrap: break-word; - margin: 0px; - color: #252525; - text-align: center; - font-size: 18px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; -} - -.textbox p{ - word-wrap: break-word; - line-height: 20px; - color: #252525; - font-size: 16px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; -} - -.textbox .p2{ - margin-top: 0px; - margin-bottom: 10px; - word-wrap: break-word; - line-height: 20px; - color: #868686; - font-size: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; -} - -.textbox .p2c{ - margin-top: 0px; - margin-bottom: 10px; - text-align: center; - word-wrap: break-word; - line-height: 20px; - color: #868686; - font-size: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; -} - -.textbox .p3{ - margin-top: 24px; - text-align: center; - word-wrap: break-word; - line-height: 24px; - color: #252525; - font-size: 22px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.textbox .maillink{ - word-wrap: break-word; - line-height: 20px; - color: #4e4428; - text-decoration: none; - font-size: 16px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; -} - -.textbox .cntzone{ - display: flex; - width: 100%; - padding: 0px; -} - -.textbox .cntzone .usercnt{ - margin-top: 24px; - margin-left: 12px; - margin-right: 12px; - width: 43%; - height: 5dvh; - border-radius: 15px; - background-color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; - padding: 18px; -} - -.textbox .cntzone .usercnt .p1{ - display: block; - margin-top: 0px; - margin-bottom: 6px; - text-align: left; - word-wrap: break-word; - color: #868686; - font-size: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; -} - -.textbox .cntzone .usercnt p{ - margin-top: 0px; - margin-bottom: 8px; - text-align: left; - word-wrap: break-word; - line-height: 24px; - color: #252525; - font-size: 20px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; -} - -.btnbox{ - padding-top: 16px; - padding-bottom: 16px; - padding-left: 32px; - padding-right: 32px; - border-radius: 15px; - background-color: #f7f7f7; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; - margin-top: 32px; - text-align: center; - margin-left: auto; - margin-right: auto; - -} - -label > input { - display:none; /* アップロードボタンのスタイルを無効にする */ -} - -.irobutton{ - cursor: pointer; - border: none; - display: block; - width:40%; - margin: 32px; - padding: 8px 10%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - background-color: #FFC832; - - text-align: center; - border-radius: 50px; - color:#fff; - font-size: 22px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; -} -.irobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:45%; -} -.irobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:35%; -} - -.sirobutton{ - cursor: pointer; - border: none; - display: block; - width:40%; - margin: 32px; - padding: 8px 10%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - - text-align: center; - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 22px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; -} -.sirobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:45%; -} -.sirobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; -} - -.formarea{ - padding-top: 16px; - padding-bottom: 16px; - padding-left: 32px; - padding-right: 32px; - border-radius: 15px; - background-color: #f7f7f7; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; - margin-top: 64px; - text-align: left; - margin-left: auto; - margin-right: auto; -} - -.formarea .iconimg{ - margin-left: auto; - margin-right: auto; - text-align: center; -} - -.formarea .iconimg img{ - margin-left: auto; - margin-right: auto; - text-align: center; - width: 100px; - height:100px; - border-radius: 50%; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); -} - -.myarea{ - padding-top: 16px; - padding-bottom: 32px; - padding-left: 32px; - padding-right: 32px; - border-radius: 15px; - background-color: #f7f7f7; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; - margin-top: 64px; - text-align: center; - margin-left: auto; - margin-right: auto; -} - -.myarea img{ - margin-left: auto; - margin-right: auto; - text-align: center; - width: 100px; - height:100px; - border-radius: 50%; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); -} - -.myarea p{ - margin-top: 32px; - margin-bottom: 10px; - word-wrap: break-word; - line-height: 20px; - color: #868686; - font-size: 12px; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: normal; -} - -.inbox { - width: 96%; - padding: 8px 10px; - border: none; - border-radius: 10px; - background: #fff; - font-family: 'Zen Maru Gothic', sans-serif; - color: rgb(32,32,32); - font-size: 1em; - line-height: 1.5; - white-space: nowrap; - box-shadow:0px 0px 25px rgba(0,0,0,0.05) inset; - box-shadow:0px 0px 25px rgba(0,0,0,0.07); - overflow-x: scroll; - overflow-y : scroll ; - transition: border 350ms ease-in-out; - transition: border-bottom 150ms ease-out; - border: 1px solid #f1f1f1; - } - -.inbox::placeholder { - color: #999; -} - -.inbox:hover { - outline: none; - border: 1px solid #FFC832; -} - -.inbox:focus { - outline: none; - border: 1px solid #FFC832; - border-bottom: 3px solid #FFC832; -} - - -.errmsg{ - padding-top: 16px; - padding-bottom: 16px; - padding-left: 32px; - padding-right: 32px; - border-radius: 15px; - background-color: #ffebeb; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; - margin-top: 64px; - text-align: left; - margin-left: auto; - margin-right: auto; - color:#ff4848; - font-family: 'BIZ UDPGothic', sans-serif; - word-wrap: break-word; - line-height: 20px; - border: 1px solid #FF4848; -} - -.flexbtn{ - display: flex; -} - -.flexbtn .irobutton{ - border: none; - display: block; - width:20%; - margin: 32px; - padding: 8px 10%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - background-color: #FFC832; - - border-radius: 50px; - color:#fff; - font-size: 26px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; -} -.flexbtn.irobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:55%; -} -.flexbtn.irobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; -} - -.flexbtn.sirobutton{ - border: none; - display: block; - width:50%; - margin: 32px; - padding: 8px 10%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - - background-color: #FFFAE6; - - border-radius: 50px; - color:#FFC832; - font-size: 26px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; -} -.flexbtn.sirobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:55%; -} -.flexbtn.sirobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; -} -.rolebox{ - - margin-top: 12px; - margin-bottom: 12px; - - margin-left: auto; - margin-right: auto; - - width: 120px; - padding-left: auto; - padding-right: auto; - - background-color: #fff; - border: 1px solid #FFC832; - - border-radius: 25px; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - -} - -.rolebox p{ - - color:#FFC832; - margin-top: 2px; - margin-bottom: 2px; - margin-left: 10px; - margin-right: 10px; - - font-size: 16px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - -} - - -.userleftbox{ - margin-top: 0px; - margin-bottom: 0px; - background-color: #FFC832; - width: 10%; - height: 100%; - margin-left: 0px; - padding: 32px; -} - -.userleftbox h1{ - font-family: 'Zen Maru Gothic', sans-serif; - margin-left: 20px; - color:#fff; - font-size: 32px; -} -.userleftbox .logo{ - display: flex; -} - -.userleftbox .logo img{ - - margin-left: 16px; - margin-top: 16px; - width: 72%; - -} -.userleftbox .logo p{ - color:#fff; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 32px; - margin-left: 8px; - margin-top: auto; - margin-bottom: -4px; -} - -.leftbutton{ - cursor: pointer; - border: none; - display: block; - width:70%; - margin: 32px; - padding: 8px 10%; - margin-left: auto; - margin-right: auto; - - padding-top: 8px; - padding-bottom: 8px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 20px; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.leftbutton:hover{ - background-color: #FFFAE6; - color: #FFC832; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:75%; -} -.leftbutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:65%; -} - -main{ - border-radius: 25px; - margin-top: 24px; - margin-left: 24px; - margin-right: 24px; - width: 80%; - background-color: #fff; - padding: 24px; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); -} - -main h1{ - color:#252525; - font-size: 32px; - font-family: 'Zen Maru Gothic', sans-serif; -} - - -.btn_area{ - display: flex; - width: 100%; - margin-left: auto; - margin-right: auto; -} - -.fbtn{ - cursor: pointer; - border: none; - display: block; - width:50%; - padding: 8px auto; - - margin-top: 12px; - margin-left: 12px; - margin-right: 12px; - margin-bottom: 0px; - - padding-top: 6px; - padding-bottom: 6px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - text-align: center; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; -} -.fbtn:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:55%; -} -.fbtn:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; -} - -/*------------------------------------------------------------------------------------------------------------*/ -/*--------------------------------------------------スマホ向け--------------------------------------------------*/ -/*--------------------------------------------------ここから--------------------------------------------------*/ -/*------------------------------------------------------------------------------------------------------------*/ - -@media screen and (max-width:1010px) { - - body{ - backdrop-filter: blur(10px); - } - - .leftbox{ - margin-top: 0px; - margin-bottom: 0px; - background-color: transparent; - width: 100%; - height: 100%; - margin-left: 0px; - padding: 16px; - } - - .leftbox h1{ - margin-left: 20px; - color:#fff; - font-size: 2em; - } - .leftbox .logo{ - display: flex; - background-color: #FFC832; - border-radius: 15px; - } - - .leftbox .logo img{ - - margin-left: 16px; - margin-top: 16px; - width: 200px; - - } - .leftbox .logo p{ - color:#fff; - font-family: 'BIZ UDPGothic', sans-serif; - font-weight: bold; - font-size: 32px; - margin-left: 8px; - margin-top: auto; - margin-bottom: -4px; - } - - - .textbox{ - padding: 32px; - width: auto; - margin-left: 0px; - margin-right: 0px; - margin-top: 64px; - margin-bottom: 8px; - border-radius: 25px; - background-color: #fff; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); - } - - .textbox h1{ - word-wrap: break-word; - margin: 0px; - color: #FFC832; - font-size: 32px; - font-family: 'Zen Maru Gothic', sans-serif; - } - - - .btnbox{ - padding-top: 12px; - padding-bottom: 12px; - padding-left: 12px; - padding-right: 12px; - border-radius: 15px; - background-color: #f7f7f7; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; - margin-top: 32px; - text-align: center; - margin-left: auto; - margin-right: auto; - - } - - .irobutton{ - width:60%; - } - .irobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:65%; - } - .irobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:55%; - } - - .sirobutton{ - width:60%; - } - .sirobutton:hover{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:65%; - } - .sirobutton:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:55%; - } - - - .btn_area{ - display: block; - width: 100%; - margin-left: auto; - margin-right: auto; - } - - .fbtn{ - cursor: pointer; - border: none; - display: block; - width:50%; - padding: 8px auto; - - margin-top: 12px; - margin-left: 12px; - margin-right: 12px; - margin-bottom: 0px; - - padding-top: 12px; - padding-bottom: 12px; - - - background-color: #FFC832; - - border-radius: 50px; - color:#FFFAE6; - font-size: 16px; - text-align: center; - font-family: 'Zen Maru Gothic', sans-serif; - font-weight: normal; - text-decoration:none; - text-align: center; - transition: box-shadow 250ms ease-in-out; - transition: width 250ms ease-out; - transition: all 250ms ease-out; - } - .fbtn:hover{ - background-color: #FFC832; - color: #FFFAE6; - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); - width:55%; - } - .fbtn:active{ - box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); - width:45%; - } - - .leftbox2{ - margin-top: 0px; - margin-bottom: 0px; - background-color: #FFC832; - width: 100%; - height: 100vh; - margin-left: 0px; - padding: 32px; - } +@import url('https://fonts.googleapis.com/css2?family=BIZ+UDPGothic:wght@400;700&family=Josefin+Sans:ital,wght@1,700&family=Kosugi+Maru&family=Zen+Maru+Gothic:wght@500&display=swap'); + +body{ + display: flex; + border: none; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: 0px; + background-color: #FFFFFF; + /* 画像を常に天地左右の中央に配置 */ + background-position: center center; + + /* 画像をタイル状に繰り返し表示しない */ + background-repeat: no-repeat; + + /* コンテンツの高さが画像の高さより大きい時、動かないように固定 */ + background-attachment: fixed; + + /* 表示するコンテナの大きさに基づいて、背景画像を調整 */ + background-size: cover; +} + +.leftbox{ + margin-top: 0px; + margin-bottom: 0px; + background-color: #FFC832; + width: 35%; + height: 100%; + margin-left: 0px; + padding: 32px; +} + +.leftbox h1{ + margin-left: 20px; + color:#fff; + font-size: 2em; +} +.leftbox .logo{ + display: flex; +} + +.leftbox .logo img{ + + margin-left: 16px; + margin-top: 16px; + width: 200px; + +} +.leftbox .logo p{ + color:#fff; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; +} + +.leftbox2{ + margin-top: 0px; + margin-bottom: 0px; + background-color: #FFC832; + width: 35%; + height: 100vh; + margin-left: 0px; + padding: 32px; +} + +.leftbox2 h1{ + margin-left: 20px; + color:#fff; + font-size: 2em; +} +.leftbox2 .logo{ + display: flex; +} + +.leftbox2 .logo img{ + + margin-left: 16px; + margin-top: 16px; + width: 200px; + +} +.leftbox2 .logo p{ + color:#fff; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; +} + +.textbox{ + padding: 32px; + width: auto; + margin-left: 24px; + margin-right: 24px; + margin-top: 64px; + margin-bottom: 100px; + border-radius: 25px; + background-color: #fff; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); +} + +.textbox h1{ + word-wrap: break-word; + margin: 0px; + color: #FFC832; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; +} + +.textbox h2{ + word-wrap: break-word; + margin: 0px; + color: #252525; + text-align: center; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; +} + +.textbox h3{ + word-wrap: break-word; + margin: 0px; + color: #252525; + text-align: center; + font-size: 18px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; +} + +.textbox p{ + word-wrap: break-word; + line-height: 20px; + color: #252525; + font-size: 16px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .p2{ + margin-top: 0px; + margin-bottom: 10px; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .p2c{ + margin-top: 0px; + margin-bottom: 10px; + text-align: center; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .p3{ + margin-top: 24px; + text-align: center; + word-wrap: break-word; + line-height: 24px; + color: #252525; + font-size: 22px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.textbox .maillink{ + word-wrap: break-word; + line-height: 20px; + color: #4e4428; + text-decoration: none; + font-size: 16px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .cntzone{ + display: flex; + width: 100%; + padding: 0px; +} + +.textbox .cntzone .usercnt{ + margin-top: 24px; + margin-left: 12px; + margin-right: 12px; + width: 43%; + height: 5dvh; + border-radius: 15px; + background-color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + padding: 18px; +} + +.textbox .cntzone .usercnt .p1{ + display: block; + margin-top: 0px; + margin-bottom: 6px; + text-align: left; + word-wrap: break-word; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .cntzone .usercnt p{ + margin-top: 0px; + margin-bottom: 8px; + text-align: left; + word-wrap: break-word; + line-height: 24px; + color: #252525; + font-size: 20px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.btnbox{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 32px; + text-align: center; + margin-left: auto; + margin-right: auto; + +} + +label > input { + display:none; /* アップロードボタンのスタイルを無効にする */ +} + +.irobutton{ + cursor: pointer; + border: none; + display: block; + width:40%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + background-color: #FFC832; + + text-align: center; + border-radius: 50px; + color:#fff; + font-size: 22px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:45%; +} +.irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:35%; +} + +.sirobutton{ + cursor: pointer; + border: none; + display: block; + width:40%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + text-align: center; + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 22px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:45%; +} +.sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.formarea{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 64px; + text-align: left; + margin-left: auto; + margin-right: auto; +} + +.formarea .iconimg{ + margin-left: auto; + margin-right: auto; + text-align: center; +} + +.formarea .iconimg img{ + margin-left: auto; + margin-right: auto; + text-align: center; + width: 100px; + height:100px; + border-radius: 50%; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); +} + +.formarea label{ + overflow-wrap: break-word; + margin-top: 24px; + margin-bottom: 24px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.myarea{ + padding-top: 16px; + padding-bottom: 32px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 64px; + text-align: center; + margin-left: auto; + margin-right: auto; +} + +.myarea img{ + margin-left: auto; + margin-right: auto; + text-align: center; + width: 100px; + height:100px; + border-radius: 50%; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); +} + +.myarea p{ + margin-top: 32px; + margin-bottom: 10px; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} +.ueuse2 a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + font-size: 16px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.inbox { + width: 96%; + padding: 8px 10px; + border: none; + border-radius: 10px; + background: #fff; + font-family: 'Zen Maru Gothic', sans-serif; + color: rgb(32,32,32); + font-size: 1em; + line-height: 1.5; + white-space: nowrap; + box-shadow:0px 0px 25px rgba(0,0,0,0.05) inset; + box-shadow:0px 0px 25px rgba(0,0,0,0.07); + overflow-x: scroll; + overflow-y : scroll ; + transition: border 350ms ease-in-out; + transition: border-bottom 150ms ease-out; + border: 1px solid #f1f1f1; + } + +.inbox::placeholder { + color: #999; +} + +.inbox:hover { + outline: none; + border: 1px solid #FFC832; +} + +.inbox:focus { + outline: none; + border: 1px solid #FFC832; + border-bottom: 3px solid #FFC832; +} + + +.errmsg{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #ffebeb; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 64px; + text-align: left; + margin-left: auto; + margin-right: auto; + color:#ff4848; + font-family: 'BIZ UDPGothic', sans-serif; + word-wrap: break-word; + line-height: 20px; + border: 1px solid #FF4848; +} + +.flexbtn{ + display: flex; +} + +.flexbtn .irobutton{ + border: none; + display: block; + width:20%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + background-color: #FFC832; + + border-radius: 50px; + color:#fff; + font-size: 26px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.flexbtn.irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.flexbtn.irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.flexbtn.sirobutton{ + border: none; + display: block; + width:50%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 26px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.flexbtn.sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.flexbtn.sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} +.rolebox{ + + margin-top: 12px; + margin-bottom: 12px; + + margin-left: auto; + margin-right: auto; + + width: 120px; + padding-left: auto; + padding-right: auto; + + background-color: #fff; + border: 1px solid #FFC832; + + border-radius: 25px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + +} + +.rolebox p{ + + color:#FFC832; + margin-top: 2px; + margin-bottom: 2px; + margin-left: 10px; + margin-right: 10px; + + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + +} + + +.userleftbox{ + margin-top: 0px; + margin-bottom: 0px; + background-color: #FFC832; + width: 10%; + height: 100%; + margin-left: 0px; + padding: 32px; +} + +.userleftbox h1{ + font-family: 'Zen Maru Gothic', sans-serif; + margin-left: 20px; + color:#fff; + font-size: 32px; +} +.userleftbox .logo{ + display: flex; +} + +.userleftbox .logo img{ + + margin-left: 16px; + margin-top: 16px; + width: 72%; + +} +.userleftbox .logo p{ + color:#fff; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; +} + +.leftbutton{ + cursor: pointer; + border: none; + display: block; + width:70%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 20px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.leftbutton:hover{ + background-color: #FFFAE6; + color: #FFC832; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:75%; +} +.leftbutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:65%; +} + +main{ + border-radius: 25px; + margin-top: 24px; + margin-left: 24px; + margin-right: 24px; + width: 80%; + background-color: #fff; + padding: 24px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); +} + +main h1{ + color:#252525; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; +} + + +.btn_area{ + display: flex; + width: 100%; + margin-left: auto; + margin-right: auto; +} + +.fbtn{ + cursor: pointer; + border: none; + display: block; + width:50%; + padding: 8px auto; + + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + margin-bottom: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + text-align: center; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.fbtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} +.textbox .authzone{ + width: 100%; + margin-top: 64px; + margin-left: auto; + margin-right: auto; + text-align: center; +} + +.textbox .authzone img{ + width: 30%; +} + +/*------------------------------------------------------------------------------------------------------------*/ +/*--------------------------------------------------スマホ向け--------------------------------------------------*/ +/*--------------------------------------------------ここから--------------------------------------------------*/ +/*------------------------------------------------------------------------------------------------------------*/ + +@media screen and (max-width:1010px) { + + body{ + backdrop-filter: blur(10px); + } + + .leftbox{ + margin-top: 0px; + margin-bottom: 0px; + background-color: transparent; + width: 100%; + height: 100%; + margin-left: 0px; + padding: 16px; + } + + .leftbox h1{ + margin-left: 20px; + color:#fff; + font-size: 2em; + } + .leftbox .logo{ + display: flex; + background-color: #FFC832; + border-radius: 15px; + } + + .leftbox .logo img{ + + margin-left: 16px; + margin-top: 16px; + width: 200px; + + } + .leftbox .logo p{ + color:#fff; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; + } + + + .textbox{ + padding: 32px; + width: auto; + margin-left: 0px; + margin-right: 0px; + margin-top: 64px; + margin-bottom: 8px; + border-radius: 25px; + background-color: #fff; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + } + + .textbox h1{ + word-wrap: break-word; + margin: 0px; + color: #FFC832; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; + } + + + .btnbox{ + padding-top: 12px; + padding-bottom: 12px; + padding-left: 12px; + padding-right: 12px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 32px; + text-align: center; + margin-left: auto; + margin-right: auto; + + } + + .irobutton{ + width:60%; + } + .irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:65%; + } + .irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:55%; + } + + .sirobutton{ + width:60%; + } + .sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:65%; + } + .sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:55%; + } + + + .btn_area{ + display: block; + width: 100%; + margin-left: auto; + margin-right: auto; + } + + .fbtn{ + cursor: pointer; + border: none; + display: block; + width:50%; + padding: 8px auto; + + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + margin-bottom: 0px; + + padding-top: 12px; + padding-bottom: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + text-align: center; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + .fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; + } + .fbtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; + } + + .leftbox2{ + margin-top: 0px; + margin-bottom: 0px; + background-color: #FFC832; + width: 100%; + height: 100vh; + margin-left: 0px; + padding: 32px; + } + + .textbox .authzone img{ + width: 80%; + } } \ No newline at end of file diff --git a/db.php b/db.php index cde25eb..bdb383b 100644 --- a/db.php +++ b/db.php @@ -1,9 +1,9 @@ - \ No newline at end of file diff --git a/delete/delete.php b/delete/delete.php index 9becbcc..de2b150 100644 --- a/delete/delete.php +++ b/delete/delete.php @@ -1,27 +1,27 @@ -prepare("DELETE FROM ueuse WHERE uniqid = :uniqid"); - $deleteQuery->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); - $res = $deleteQuery->execute(); - - if ($res) { - echo json_encode(['success' => true]); - exit; - } else { - echo json_encode(['success' => false, 'error' => '削除に失敗しました。']); - exit; - } - } catch(PDOException $e) { - echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); - exit; - } -} -?> +prepare("DELETE FROM ueuse WHERE uniqid = :uniqid"); + $deleteQuery->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); + $res = $deleteQuery->execute(); + + if ($res) { + echo json_encode(['success' => true]); + exit; + } else { + echo json_encode(['success' => false, 'error' => '削除に失敗しました。']); + exit; + } + } catch(PDOException $e) { + echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); + exit; + } +} +?> diff --git a/emoji/addemoji.php b/emoji/addemoji.php index c6ab82c..b75bd8a 100644 --- a/emoji/addemoji.php +++ b/emoji/addemoji.php @@ -25,8 +25,8 @@ $option = null; session_start(); -$userid = $_SESSION['userid']; -$username = $_SESSION['username']; +$userid = htmlentities($_SESSION['userid']); +$username = htmlentities($_SESSION['username']); try { diff --git a/emoji/emojiimage.php b/emoji/emojiimage.php index f23fc2f..fd57a8d 100644 --- a/emoji/emojiimage.php +++ b/emoji/emojiimage.php @@ -1,75 +1,75 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false -); -$pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - -//$row['userid'] = "daichimarukn"; - -$emojiname = $_GET['emoji']; - - -$options = array( - // SQL実行失敗時に例外をスルー - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - // デフォルトフェッチモードを連想配列形式に設定 - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) - // SELECTで得た結果に対してもrowCountメソッドを使えるようにする - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, -); - -if( empty($emojiname) ) { - $filePath = 'img/deficon/icon.png'; - $data = file_get_contents($filePath); - header('Content-type: image/png'); - //データを出力 - echo $data; - exit(); -}else{ - $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - - $result = $dbh->prepare("SELECT emojiname, emojicontent, emojitype, emojisize profile FROM emoji WHERE emojiname = :emojiname"); - - $result->bindValue(':emojiname', $emojiname); - // SQL実行 - $result->execute(); - - - $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する - - - - header('Content-type: ' . $row['emojitype']); - echo $row['emojicontent']; - exit(); -} + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false +); +$pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + +//$row['userid'] = "daichimarukn"; + +$emojiname = htmlentities($_GET['emoji']); + + +$options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, +); + +if( empty($emojiname) ) { + $filePath = 'img/deficon/icon.png'; + $data = file_get_contents($filePath); + header('Content-type: image/png'); + //データを出力 + echo $data; + exit(); +}else{ + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT emojiname, emojicontent, emojitype, emojisize profile FROM emoji WHERE emojiname = :emojiname"); + + $result->bindValue(':emojiname', $emojiname); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + + + header('Content-type: ' . $row['emojitype']); + echo $row['emojicontent']; + exit(); +} ?> \ No newline at end of file diff --git a/emoji/index.php b/emoji/index.php index 5c5c360..3e157df 100644 --- a/emoji/index.php +++ b/emoji/index.php @@ -23,8 +23,10 @@ $res = null; $option = null; session_start(); +session_regenerate_id(true); //------------------------------------------ + try { $option = array( @@ -107,6 +109,7 @@ if(empty($username)){ exit; } + if (!empty($pdo)) { $sql = "SELECT emojiname,emojiinfo,emojidate FROM emoji ORDER BY emojidate DESC"; $message_array = $pdo->query($sql); diff --git a/errorpage/400.php b/errorpage/400.php index eb8713f..1766454 100644 --- a/errorpage/400.php +++ b/errorpage/400.php @@ -1,54 +1,52 @@ - - - - - - - - - - - -400 Bad Request - <?php echo file_get_contents($servernamefile);?> - - - - -
    - -
    - -
    - -
    -
    - -
    -

    400 Bad Request

    -

    <(_ _)>
    はいっ!エラーです!!!
    原因はわかりません!!!!!!!!

    -
    - - ホームへ行く - -
    - - - - + + + + + + + + + +400 Bad Request - <?php echo file_get_contents($servernamefile);?> + + + + +
    + +
    + +
    + +
    +
    + +
    +

    400 Bad Request

    +

    <(_ _)>
    はいっ!エラーです!!!
    原因はわかりません!!!!!!!!

    +
    + + ホームへ行く + +
    + + + + \ No newline at end of file diff --git a/errorpage/401.php b/errorpage/401.php index badc804..b8501e8 100644 --- a/errorpage/401.php +++ b/errorpage/401.php @@ -1,54 +1,52 @@ - - - - - - - - - - - -401 Unauthorized - <?php echo file_get_contents($servernamefile);?> - - - - -
    - -
    - -
    - -
    -
    - -
    -

    401 Unauthorized

    -

    ...(* ̄0 ̄)ノ< アクセス権が無いようです()
    サービス管理者によってアクセス権の変更をされた可能性がございます。

    -
    - - ホームへ行く - -
    - - - - + + + + + + + + + +401 Unauthorized - <?php echo file_get_contents($servernamefile);?> + + + + +
    + +
    + +
    + +
    +
    + +
    +

    401 Unauthorized

    +

    ...(* ̄0 ̄)ノ< アクセス権が無いようです()
    サービス管理者によってアクセス権の変更をされた可能性がございます。

    +
    + + ホームへ行く + +
    + + + + \ No newline at end of file diff --git a/errorpage/403.php b/errorpage/403.php index 295bd00..defec80 100644 --- a/errorpage/403.php +++ b/errorpage/403.php @@ -1,54 +1,52 @@ - - - - - - - - - - - -403 Forbidden - <?php echo file_get_contents($servernamefile);?> - - - - -
    - -
    - -
    - -
    -
    - -
    -

    403 Forbidden

    -

    ...(* ̄0 ̄)ノ< 閲覧権限が無いようです()
    サービス管理者によって閲覧権限の変更をされた可能性がございます。

    -
    - - ホームへ行く - -
    - - - - + + + + + + + + + +403 Forbidden - <?php echo file_get_contents($servernamefile);?> + + + + +
    + +
    + +
    + +
    +
    + +
    +

    403 Forbidden

    +

    ...(* ̄0 ̄)ノ< 閲覧権限が無いようです()
    サービス管理者によって閲覧権限の変更をされた可能性がございます。

    +
    + + ホームへ行く + +
    + + + + \ No newline at end of file diff --git a/errorpage/404.php b/errorpage/404.php index b147077..844272f 100644 --- a/errorpage/404.php +++ b/errorpage/404.php @@ -1,54 +1,52 @@ - - - - - - - - - - - -404 Not found - <?php echo file_get_contents($servernamefile);?> - - - - -
    - -
    - -
    - -
    -
    - -
    -

    404 Not found

    -

    申し訳ございませんがお探しのページは見つかりませんでした!
    ページの移動や削除が行われた可能性がございます。

    -
    - - ホームへ行く - -
    - - - - + + + + + + + + + +404 Not found - <?php echo file_get_contents($servernamefile);?> + + + + +
    + +
    + +
    + +
    +
    + +
    +

    404 Not found

    +

    申し訳ございませんがお探しのページは見つかりませんでした!
    ページの移動や削除が行われた可能性がございます。

    +
    + + ホームへ行く + +
    + + + + \ No newline at end of file diff --git a/errorpage/500.php b/errorpage/500.php index 39a869b..57a341d 100644 --- a/errorpage/500.php +++ b/errorpage/500.php @@ -1,54 +1,52 @@ - - - - - - - - - - - -500 Internal Server Error - <?php echo file_get_contents($servernamefile);?> - - - - -
    - -
    - -
    - -
    -
    - -
    -

    500 Internal Server Error

    -

    \(^o^)/
    サーバーオワタ☆

    -
    - - ホームへ行く - -
    - - - - + + + + + + + + + +500 Internal Server Error - <?php echo file_get_contents($servernamefile);?> + + + + +
    + +
    + +
    + +
    +
    + +
    +

    500 Internal Server Error

    +

    \(^o^)/
    サーバーオワタ☆

    +
    + + ホームへ行く + +
    + + + + \ No newline at end of file diff --git a/errorpage/503.php b/errorpage/503.php index 1ac0fd9..dfb88e9 100644 --- a/errorpage/503.php +++ b/errorpage/503.php @@ -1,54 +1,52 @@ - - - - - - - - - - - -503 Service Unavailable - <?php echo file_get_contents($servernamefile);?> - - - - -
    - -
    - -
    - -
    -
    - -
    -

    503 Service Unavailable

    -

    (´。_。`;)< サーバーに過負荷がかかっているようです...
    時間をおいてから再度アクセスしてください!

    -
    - - ホームへ行く - -
    - - - - + + + + + + + + + +503 Service Unavailable - <?php echo file_get_contents($servernamefile);?> + + + + +
    + +
    + +
    + +
    +
    + +
    +

    503 Service Unavailable

    +

    (´。_。`;)< サーバーに過負荷がかかっているようです...
    時間をおいてから再度アクセスしてください!

    +
    + + ホームへ行く + +
    + + + + \ No newline at end of file diff --git a/errorpage/serverstop.php b/errorpage/serverstop.php index c5715ab..deaeedb 100644 --- a/errorpage/serverstop.php +++ b/errorpage/serverstop.php @@ -1,89 +1,39 @@ - - -

    $1

', $markdownText); - - // 画像(#img)をHTMLのimgタグに変換 - $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); - - // タイトル(#、##、###)をHTMLのhタグに変換 - $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); - - // 箇条書き(-)をHTMLのul/liタグに変換 - $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); - - // 空行の前に何もない行をHTMLのpタグに変換 - $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); - - return $markdownText; -} - -$sterms = explode("\n", $termsdata); -$htmltext = ''; // 初期化 - -foreach ($sterms as $terms) { - $markdowntext = $terms; - $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); - $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 -} - - -?> - - - - - - - - -サーバー停止 - <?php echo file_get_contents($servernamefile);?> - - - - - -
- -
- -
- -
-
-
-

サーバー停止中

-

(/´・ヮ・`\)
現在サーバーが管理者によって停止されています...
停止の理由は以下の通りです。

- -
-

- - -
- -
- - - - + + + + + + + +サーバー停止 - ゆずさば + + + + + +
+ +
+ +
+ +
ゆずさば
+
uwuzu.net
+
+

サーバー停止中

+

(/´・ヮ・`\)
現在サーバーが管理者によって停止されています...
停止の理由は以下の通りです。

+ +
+

あまりにも脆弱すぎたためサービスを止めさせていただきました。
復旧の目処はたっておりません。

+ + +
+ +
+ + + + \ No newline at end of file diff --git a/favorite/favorite.php b/favorite/favorite.php index f2b17fa..bdb7436 100644 --- a/favorite/favorite.php +++ b/favorite/favorite.php @@ -1,57 +1,57 @@ -prepare("SELECT favorite FROM ueuse WHERE uniqid = :uniqid"); - $stmt->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); - $stmt->execute(); - $post = $stmt->fetch(PDO::FETCH_ASSOC); - - if ($post) { - $favoriteList = explode(',', $post['favorite']); - $index = array_search($userId, $favoriteList); - - if ($index === false) { - // ユーザーIDを追加 - $favoriteList[] = $userId; - } else { - // ユーザーIDを削除 - array_splice($favoriteList, $index, 1); - } - - // 新しいいいね情報を更新 - $newFavorite = implode(',', $favoriteList); - $updateQuery = $pdo->prepare("UPDATE ueuse SET favorite = :favorite WHERE uniqid = :uniqid"); - $updateQuery->bindValue(':favorite', $newFavorite, PDO::PARAM_STR); - $updateQuery->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); - $res = $updateQuery->execute(); - - if ($res) { - echo json_encode(['success' => true, 'newFavorite' => $newFavorite]); - exit; - } else { - echo json_encode(['success' => false, 'error' => 'いいねの更新に失敗しました。']); - exit; - } - - - } else { - echo json_encode(['success' => false, 'error' => '投稿が見つかりません。']); - exit; - } - } catch(PDOException $e) { - echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); - exit; - } -} else { - echo json_encode(['success' => false, 'error' => '必要なパラメータが提供されていません。']); - exit; -} -?> +prepare("SELECT favorite FROM ueuse WHERE uniqid = :uniqid"); + $stmt->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); + $stmt->execute(); + $post = $stmt->fetch(PDO::FETCH_ASSOC); + + if ($post) { + $favoriteList = explode(',', $post['favorite']); + $index = array_search($userId, $favoriteList); + + if ($index === false) { + // ユーザーIDを追加 + $favoriteList[] = $userId; + } else { + // ユーザーIDを削除 + array_splice($favoriteList, $index, 1); + } + + // 新しいいいね情報を更新 + $newFavorite = implode(',', $favoriteList); + $updateQuery = $pdo->prepare("UPDATE ueuse SET favorite = :favorite WHERE uniqid = :uniqid"); + $updateQuery->bindValue(':favorite', $newFavorite, PDO::PARAM_STR); + $updateQuery->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); + $res = $updateQuery->execute(); + + if ($res) { + echo json_encode(['success' => true, 'newFavorite' => $newFavorite]); + exit; + } else { + echo json_encode(['success' => false, 'error' => 'いいねの更新に失敗しました。']); + exit; + } + + + } else { + echo json_encode(['success' => false, 'error' => '投稿が見つかりません。']); + exit; + } + } catch(PDOException $e) { + echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); + exit; + } +} else { + echo json_encode(['success' => false, 'error' => '必要なパラメータが提供されていません。']); + exit; +} +?> diff --git a/home/index.php b/home/index.php index 793a49f..41c96db 100644 --- a/home/index.php +++ b/home/index.php @@ -112,7 +112,7 @@ if(empty($username)){ if( !empty($_POST['btn_submit']) ) { - $ueuse = $_POST['ueuse']; + $ueuse = htmlentities($_POST['ueuse']); // メッセージの入力チェック if( empty($ueuse) ) { @@ -146,7 +146,15 @@ if( !empty($_POST['btn_submit']) ) { if ($result) { $photo1 = $uploadedPath; // 保存されたファイルのパスを使用 } else { - $error_message[] = 'アップロード失敗!(1)エラーコード:' . $uploadedFile['error'].'
'.var_dump($_FILES['upload_images']); + $errnum = $uploadedFile['error']; + if($errnum === 1){$errcode = "FILE_DEKASUGUI_PHP_INI_KAKUNIN";} + if($errnum === 2){$errcode = "FILE_DEKASUGUI_HTML_KAKUNIN";} + if($errnum === 3){$errcode = "FILE_SUKOSHIDAKE_UPLOAD";} + if($errnum === 4){$errcode = "FILE_UPLOAD_DEKINAKATTA";} + if($errnum === 6){$errcode = "TMP_FOLDER_NAI";} + if($errnum === 7){$errcode = "FILE_KAKIKOMI_SIPPAI";} + if($errnum === 8){$errcode = "PHPINFO()_KAKUNIN";} + $error_message[] = 'アップロード失敗!(2)エラーコード:' .$errcode.''; } } @@ -178,7 +186,15 @@ if( !empty($_POST['btn_submit']) ) { if ($result2) { $photo2 = $uploadedPath2; // 保存されたファイルのパスを使用 } else { - $error_message[] = 'アップロード失敗!(2)エラーコード:' . $uploadedFile2['error'].'
'.var_dump($_FILES['upload_images']); + $errnum = $uploadedFile2['error']; + if($errnum === 1){$errcode = "FILE_DEKASUGUI_PHP_INI_KAKUNIN";} + if($errnum === 2){$errcode = "FILE_DEKASUGUI_HTML_KAKUNIN";} + if($errnum === 3){$errcode = "FILE_SUKOSHIDAKE_UPLOAD";} + if($errnum === 4){$errcode = "FILE_UPLOAD_DEKINAKATTA";} + if($errnum === 6){$errcode = "TMP_FOLDER_NAI";} + if($errnum === 7){$errcode = "FILE_KAKIKOMI_SIPPAI";} + if($errnum === 8){$errcode = "PHPINFO()_KAKUNIN";} + $error_message[] = 'アップロード失敗!(2)エラーコード:' .$errcode.''; } } @@ -206,7 +222,15 @@ if( !empty($_POST['btn_submit']) ) { if ($result3) { $video1 = $uploadedPath3; // 保存されたファイルのパスを使用 } else { - $error_message[] = 'アップロード失敗!エラーコード:' . $uploadedFile3['error']; + $errnum = $uploadedFile3['error']; + if($errnum === 1){$errcode = "FILE_DEKASUGUI_PHP_INI_KAKUNIN";} + if($errnum === 2){$errcode = "FILE_DEKASUGUI_HTML_KAKUNIN";} + if($errnum === 3){$errcode = "FILE_SUKOSHIDAKE_UPLOAD";} + if($errnum === 4){$errcode = "FILE_UPLOAD_DEKINAKATTA";} + if($errnum === 6){$errcode = "TMP_FOLDER_NAI";} + if($errnum === 7){$errcode = "FILE_KAKIKOMI_SIPPAI";} + if($errnum === 8){$errcode = "PHPINFO()_KAKUNIN";} + $error_message[] = 'アップロード失敗!(2)エラーコード:' .$errcode.''; } } else { $error_message[] = '対応していないファイル形式です!'; diff --git a/home/tlimage.php b/home/tlimage.php index 2e4998b..9c06b75 100644 --- a/home/tlimage.php +++ b/home/tlimage.php @@ -1,78 +1,78 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false -); -$pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - -//$row['userid'] = "daichimarukn"; - -$userid = $_GET['account']; - - -$options = array( - // SQL実行失敗時に例外をスルー - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - // デフォルトフェッチモードを連想配列形式に設定 - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) - // SELECTで得た結果に対してもrowCountメソッドを使えるようにする - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, -); - -if( empty($userid) ) { - $filePath = 'img/deficon/icon.png'; - $data = file_get_contents($filePath); - header('Content-type: image/png'); - //データを出力 - echo $data; - exit(); -}else{ - $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - - $result = $dbh->prepare("SELECT iconname, iconcontent, icontype, iconsize profile FROM account WHERE userid = :userid"); - - $result->bindValue(':userid', $userid); - // SQL実行 - $result->execute(); - - - $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する - - - - header('Content-type: ' . $row['icontype']); - echo $row['iconcontent']; - exit(); + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false +); +$pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + +//$row['userid'] = "daichimarukn"; + +$userid = htmlentities($_GET['account']); + + +$options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, +); + +if( empty($userid) ) { + $filePath = 'img/deficon/icon.png'; + $data = file_get_contents($filePath); + header('Content-type: image/png'); + //データを出力 + echo $data; + exit(); +}else{ + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT iconname, iconcontent, icontype, iconsize profile FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + + + header('Content-type: ' . $row['icontype']); + echo $row['iconcontent']; + exit(); } \ No newline at end of file diff --git a/image.php b/image.php index e40c66d..c6e3564 100644 --- a/image.php +++ b/image.php @@ -1,77 +1,77 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false -); -$pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - -//$row['userid'] = "daichimarukn"; - -$userid = $_SESSION['userid']; - - -$options = array( - // SQL実行失敗時に例外をスルー - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - // デフォルトフェッチモードを連想配列形式に設定 - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) - // SELECTで得た結果に対してもrowCountメソッドを使えるようにする - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, -); - -if( empty($userid) ) { - $filePath = 'img/deficon/icon.png'; - $data = file_get_contents($filePath); - header('Content-type: image/png'); - //データを出力 - echo $data; - exit(); -}else{ - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - - $result = $dbh->prepare("SELECT iconname, iconcontent, icontype, iconsize profile FROM account WHERE userid = :userid"); - - $result->bindValue(':userid', $userid); - // SQL実行 - $result->execute(); - - - $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する - - - - header('Content-type: ' . $row['icontype']); - echo $row['iconcontent']; - exit(); + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false +); +$pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + +//$row['userid'] = "daichimarukn"; + +$userid = $_SESSION['userid']; + + +$options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, +); + +if( empty($userid) ) { + $filePath = 'img/deficon/icon.png'; + $data = file_get_contents($filePath); + header('Content-type: image/png'); + //データを出力 + echo $data; + exit(); +}else{ + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT iconname, iconcontent, icontype, iconsize profile FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + + + header('Content-type: ' . $row['icontype']); + echo $row['iconcontent']; + exit(); } \ No newline at end of file diff --git a/img/タイトルなし.png b/img/タイトルなし.png new file mode 100644 index 0000000000000000000000000000000000000000..d3100c698a2511e473a6f8552cc0ef6f1bf21256 GIT binary patch literal 6256 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 a=gWdOKRPb?>Hd;b-@tLm4i3;zRJIU1J$ literal 0 HcmV?d00001 diff --git a/index.php b/index.php index 4eb65e7..a746583 100644 --- a/index.php +++ b/index.php @@ -1,145 +1,213 @@ - - - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - - $stmt = $pdo->prepare("SELECT COUNT(userid) FROM account"); - $stmt->execute(); - $count2 = $stmt->fetchColumn(); - - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); -$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); - -$result = $mysqli->query("SELECT userid FROM account ORDER BY datetime"); - -/* 結果セットの行数を取得します */ -$count1 = $result->num_rows; - -$result2 = $mysqli->query("SELECT uniqid FROM ueuse ORDER BY datetime"); - -/* 結果セットの行数を取得します */ -$count2 = $result2->num_rows; - -?> - - - - - - - - - - -<?php echo file_get_contents($servernamefile);?> - - - - - - - - - -
- - -
- - -
    - -

    - -
- - -

へようこそ!

-
-
- -

'; - }?>

- - お問い合わせ : - -
-
-
ユーザー数
-

"?>

-
-
-
投稿数
-

"?>

-
-
- - - - -
-
- - - + + + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + header("Location: home/index.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + header("Location: home/index.php"); + exit; + } + + +} + + +$servernamefile = "server/servername.txt"; + +//------------------------ + +$serverinfofile = 'server/info.txt'; +$serverinfo = file_get_contents($serverinfofile); + +//------------------------------------- + +$domain = $_SERVER['HTTP_HOST']; + +//------------------------ + +$contactfile = "server/contact.txt"; + +//------------------------ + +$onlyuserfile = "server/onlyuser.txt"; +$onlyuser = file_get_contents($onlyuserfile); + +try { + + $option = array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + $stmt = $pdo->prepare("SELECT COUNT(userid) FROM account"); + $stmt->execute(); + $count2 = $stmt->fetchColumn(); + + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); +$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); + +$result = $mysqli->query("SELECT userid FROM account ORDER BY datetime"); + +/* 結果セットの行数を取得します */ +$count1 = $result->num_rows; + +$result2 = $mysqli->query("SELECT uniqid FROM ueuse ORDER BY datetime"); + +/* 結果セットの行数を取得します */ +$count2 = $result2->num_rows; + +?> + + + + + + + + + + +<?php echo file_get_contents($servernamefile);?> + + + + + + + + + +
+ + +
+ + +
    + +

    + +
+ + +

へようこそ!

+
+
+ +

'; + }?>

+ + お問い合わせ : + + +

このサーバーには招待コードがないと登録できません。
招待コードはお手元にありますか?

+ + +
+
+
ユーザー数
+

"?>

+
+
+
投稿数
+

"?>

+
+
+ + + +
+
+ + + \ No newline at end of file diff --git a/js/back.js b/js/back.js index 8778eb1..2cfab3f 100644 --- a/js/back.js +++ b/js/back.js @@ -1,6 +1,6 @@ - -window.onload = function(){ -var ele = document.getElementsByTagName("body")[0]; -var n = Math.floor(Math.random() * 3); // 3枚の画像がある場合 -ele.style.backgroundImage = "url(img/titleimg/"+n+".png)"; -} + +window.onload = function(){ +var ele = document.getElementsByTagName("body")[0]; +var n = Math.floor(Math.random() * 3); // 3枚の画像がある場合 +ele.style.backgroundImage = "url(img/titleimg/"+n+".png)"; +} diff --git a/login.php b/login.php index 99f46c1..7fe1959 100644 --- a/login.php +++ b/login.php @@ -65,7 +65,7 @@ if( !empty($_POST['btn_submit']) ) { $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - $result = $dbh->prepare("SELECT userid, password, loginid FROM account WHERE userid = :userid"); + $result = $dbh->prepare("SELECT userid, password, loginid, authcode FROM account WHERE userid = :userid"); $result->bindValue(':userid', $userid); // SQL実行 @@ -88,16 +88,25 @@ if( !empty($_POST['btn_submit']) ) { if($row["userid"] == $userid){ if(password_verify($password,$row["password"])){ - $_SESSION['admin_login'] = true; + if(empty($row["authcode"])){ + $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['loginid'] = $row["loginid"]; - // リダイレクト先のURLへ転送する - $url = 'check.php'; - header('Location: ' . $url, true, 303); + $_SESSION['userid'] = $userid; + $_SESSION['loginid'] = $row["loginid"]; + // リダイレクト先のURLへ転送する + $url = 'check.php'; + header('Location: ' . $url, true, 303); - // すべての出力を終了 - exit; + // すべての出力を終了 + exit; + }else{ + $_SESSION['userid'] = $userid; + $url = 'authlogin.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; + } } else{ $error_message[] = 'IDまたはパスワードが違います'; @@ -159,14 +168,14 @@ $pdo = null;
- +
- +
@@ -174,6 +183,7 @@ $pdo = null; diff --git a/manifest/uwuzuicon.png b/manifest/uwuzuicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1b19c276d418466e964e32c1b8beaa8c1d506384 GIT binary patch literal 5221 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 literal 0 HcmV?d00001 diff --git a/new.php b/new.php index 382078e..3c6c92c 100644 --- a/new.php +++ b/new.php @@ -13,6 +13,9 @@ require('db.php'); $servernamefile = "server/servername.txt"; +$onlyuserfile = "server/onlyuser.txt"; +$onlyuser = file_get_contents($onlyuserfile); + session_start(); // 変数の初期化 @@ -97,6 +100,9 @@ if( !empty($_POST['btn_submit']) ) { $profile = $_POST['profile']; + if($onlyuser === "true"){ + $invitationcode = $_POST['invitationcode']; + } //cookieに保存 setcookie("username",$username,time()+60*60*24*14); @@ -143,6 +149,28 @@ if( !empty($_POST['btn_submit']) ) { $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + if($onlyuser === "true"){ + $query = $dbh->prepare('SELECT * FROM invitation WHERE code = :code limit 1'); + + $query->execute(array(':code' => $invitationcode)); + + $result = $query->fetch(); + + // 招待コードの入力チェック + if( empty($invitationcode) ) { + $error_message[] = '招待コードを入力してください。'; + } else { + if($result > 0){ + if($result["used"] === "true"){ + $error_message[] = 'この招待コード('.$invitationcode.')は既に使用されています。'; + } + }else{ + $error_message[] = 'この招待コード('.$invitationcode.')は使えません。'; + } + + } + } + $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); @@ -333,6 +361,24 @@ if( !empty($_POST['btn_submit']) ) { // コミット $res = $pdo->commit(); + if($onlyuser === "true"){ + $pdo->beginTransaction(); + + $stmt = $pdo->prepare("UPDATE invitation SET used = :used, datetime = :datetime WHERE code = :code;"); + + $true = "true"; + $stmt->bindParam(':used', $true, PDO::PARAM_STR); + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + $stmt->bindValue(':code', $invitationcode, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + } + } catch (Exception $e) { // エラーが発生した時はロールバック @@ -341,7 +387,8 @@ if( !empty($_POST['btn_submit']) ) { if ($res) { // リダイレクト先のURLへ転送する - $url = 'success.php'; + $_SESSION['userid'] = $userid; + $url = 'authcodechk'; header('Location: ' . $url, true, 303); // すべての出力を終了 @@ -448,9 +495,16 @@ $pdo = null;

登録を押すと利用規約とプライバシーポリシーに同意したこととなります。
未確認の場合は上のボタンよりお読みください。

- - - + +
+

招待コード

+
招待コードがないとこのサーバーには登録できません。
+ +
+ + + +
diff --git a/nextpage/nextpage.php b/nextpage/nextpage.php index 9270139..f4c856f 100644 --- a/nextpage/nextpage.php +++ b/nextpage/nextpage.php @@ -1,124 +1,112 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); -} catch (PDOException $e) { - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -$userid = $_GET['userid']; - -$itemsPerPage = 30; // 1ページあたりのユーズ数 -$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; -$offset = ($pageNumber - 1) * $itemsPerPage; - -$messages = array(); - -if (!empty($pdo)) { - - function customStripTags($html, $allowedTags) { - $allowedTagString = implode('|', $allowedTags); - $pattern = "/<(?!$allowedTagString)[^>]+>/"; - return preg_replace($pattern, '', $html); - } - $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); - - // ユーズ内の絵文字を画像に置き換える - function replaceEmojisWithImages($postText) { - // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える - $pattern = '/:(\w+):/'; - $postTextWithImages = preg_replace_callback($pattern, function($matches) { - $emojiName = $matches[1]; - return "$emojiName"; - }, $postText); - return $postTextWithImages; - } - - function replaceURLsWithLinks($postText) { - // URLを正規表現を使って検出 - $pattern = '/(https?:\/\/[^\s]+)/'; - preg_match_all($pattern, $postText, $matches); - - // 検出したURLごとに処理を行う - foreach ($matches[0] as $url) { - // ドメイン部分を抽出 - $parsedUrl = parse_url($url); - $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; - - // ドメインのみを表示するaタグを生成 - $link = "$domain"; - - // URLをドメインのみを表示するaタグで置き換え - $postText = str_replace($url, $link, $postText); - } - - return $postText; - } - - - $sql = "SELECT account, username, uniqid, rpuniqid, ueuse, datetime, photo1, photo2, video1, favorite, abi, abidate FROM ueuse WHERE rpuniqid = '' ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"; - $message_array = $pdo->query($sql); - - while ($row = $message_array->fetch(PDO::FETCH_ASSOC)) { - - $messages[] = $row; - } - - // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える - foreach ($messages as &$message) { - $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $message["account"]); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - if ($userData) { - $message['username'] = $userData['username']; - } - } - - // ユーズ内のHTMLコードに指定のタグを有効化する関数 - function replaceUnescapedHTMLTags($html) { - $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ - return customStripTags($html, $allowedTags); - } - - if(!empty($messages)){ - foreach ($messages as $value) { - - $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 - - // コンマで区切って配列に分割し、要素数を数える - $favIds = explode(',', $fav); - $value["favcnt"] = count($favIds)-1; - - $messageDisplay = new MessageDisplay($value, $userid); // $userid をコンストラクタに渡す - $messageDisplay->display(); - } - }else{ - echo '

ユーズがありません

'; - } - - $pdo = null; - -} - -?> + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +$userid = htmlentities($_GET['userid']); + +$itemsPerPage = 30; // 1ページあたりのユーズ数 +$pageNumber = htmlentities(isset($_GET['page'])) ? htmlentities(intval($_GET['page'])) : 1; +$offset = ($pageNumber - 1) * $itemsPerPage; + +$messages = array(); + +if (!empty($pdo)) { + + + // ユーズ内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + + $sql = "SELECT account, username, uniqid, rpuniqid, ueuse, datetime, photo1, photo2, video1, favorite, abi, abidate FROM ueuse WHERE rpuniqid = '' ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"; + $message_array = $pdo->query($sql); + + while ($row = $message_array->fetch(PDO::FETCH_ASSOC)) { + + $messages[] = $row; + } + + // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える + foreach ($messages as &$message) { + $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $message["account"]); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + if ($userData) { + $message['username'] = $userData['username']; + } + } + + if(!empty($messages)){ + foreach ($messages as $value) { + + $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $favIds = explode(',', $fav); + $value["favcnt"] = count($favIds)-1; + + $messageDisplay = new MessageDisplay($value, $userid); // $userid をコンストラクタに渡す + $messageDisplay->display(); + } + }else{ + echo '

ユーズがありません

'; + } + + $pdo = null; + +} + +?> diff --git a/nextpage/notification.php b/nextpage/notification.php index c5b710e..7b36cfb 100644 --- a/nextpage/notification.php +++ b/nextpage/notification.php @@ -1,63 +1,63 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); -} catch (PDOException $e) { - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -$userid = $_GET['userid']; - -$itemsPerPage = 30; // 1ページあたりの投稿数 -$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; -$offset = ($pageNumber - 1) * $itemsPerPage; - -$messages = array(); - -if (!empty($pdo)) { - - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - )); - - $messageQuery = $dbh->prepare("SELECT title,msg,url,datetime,userchk FROM notification WHERE touserid = :userid ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"); - $messageQuery->bindValue(':userid', $userid); - $messageQuery->execute(); - $message_array = $messageQuery->fetchAll(); - - if (!empty($message_array)) { - foreach ($message_array as $value) { - $messageDisplay = new MessageDisplay($value); // userid を渡さない - $messageDisplay->display(); - } - } else { - echo '

通知はありません

'; - } - - - $pdo = null; - -} - -?> + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +$userid = htmlentities($_GET['userid']); + +$itemsPerPage = 30; // 1ページあたりの投稿数 +$pageNumber = htmlentities(isset($_GET['page'])) ? htmlentities(intval($_GET['page'])) : 1; +$offset = ($pageNumber - 1) * $itemsPerPage; + +$messages = array(); + +if (!empty($pdo)) { + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $messageQuery = $dbh->prepare("SELECT title,msg,url,datetime,userchk FROM notification WHERE touserid = :userid ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"); + $messageQuery->bindValue(':userid', $userid); + $messageQuery->execute(); + $message_array = $messageQuery->fetchAll(); + + if (!empty($message_array)) { + foreach ($message_array as $value) { + $messageDisplay = new MessageDisplay($value); // userid を渡さない + $messageDisplay->display(); + } + } else { + echo '

通知はありません

'; + } + + + $pdo = null; + +} + +?> diff --git a/nextpage/notificationview.php b/nextpage/notificationview.php index 8a94294..4727d44 100644 --- a/nextpage/notificationview.php +++ b/nextpage/notificationview.php @@ -1,32 +1,32 @@ -value = $value; - } - - public function display() { - echo '
'; - echo '
'; - - echo '
'; - $day = date("Ymd", strtotime(htmlspecialchars($this->value['datetime']))); - if ($day == date("Ymd")) { - echo date("今日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); - } else { - echo date("Y年m月d日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); - } - echo '
'; - - echo '
'; - - // 投稿内のHTMLコードを表示する部分 - echo '

' . htmlspecialchars($this->value['title']) . '

'; - echo '

' . htmlspecialchars($this->value['msg']) . '

'; - echo ' 続きをみる'; - - echo '
'; - } -} -?> +value = $value; + } + + public function display() { + echo '
'; + echo '
'; + + echo '
'; + $day = date("Ymd", strtotime(htmlentities($this->value['datetime']))); + if ($day == date("Ymd")) { + echo date("今日 H:i", strtotime(htmlentities($this->value['datetime']))); + } else { + echo date("Y年m月d日 H:i", strtotime(htmlentities($this->value['datetime']))); + } + echo '
'; + + echo '
'; + + // 投稿内のHTMLコードを表示する部分 + echo '

' . htmlentities($this->value['title']) . '

'; + echo '

' . htmlentities($this->value['msg']) . '

'; + echo ' 続きをみる'; + + echo '
'; + } +} +?> diff --git a/nextpage/searchpage.php b/nextpage/searchpage.php index c14d434..e30193f 100644 --- a/nextpage/searchpage.php +++ b/nextpage/searchpage.php @@ -1,131 +1,118 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); -} catch (PDOException $e) { - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - - -$keyword = isset($_GET['keyword']) ? $_GET['keyword'] : ''; -$userid = $_GET['userid']; - -$messages = array(); - -if (!empty($pdo)) { - - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - )); - - $messageQuery = $dbh->prepare("SELECT account,username,ueuse,uniqid,rpuniqid,datetime,photo1,photo2,video1,favorite, abi, abidate FROM ueuse WHERE ueuse LIKE :keyword OR abi LIKE :keyword ORDER BY datetime DESC"); - $messageQuery->bindValue(':keyword', '%' . $keyword . '%', PDO::PARAM_STR); - $messageQuery->execute(); - $message_array = $messageQuery->fetchAll(); - - function customStripTags($html, $allowedTags) { - $allowedTagString = implode('|', $allowedTags); - $pattern = "/<(?!$allowedTagString)[^>]+>/"; - return preg_replace($pattern, '', $html); - } - $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); - - // ユーズ内の絵文字を画像に置き換える - function replaceEmojisWithImages($postText) { - // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える - $pattern = '/:(\w+):/'; - $postTextWithImages = preg_replace_callback($pattern, function($matches) { - $emojiName = $matches[1]; - return "$emojiName"; - }, $postText); - return $postTextWithImages; - } - - function replaceURLsWithLinks($postText) { - // URLを正規表現を使って検出 - $pattern = '/(https?:\/\/[^\s]+)/'; - preg_match_all($pattern, $postText, $matches); - - // 検出したURLごとに処理を行う - foreach ($matches[0] as $url) { - // ドメイン部分を抽出 - $parsedUrl = parse_url($url); - $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; - - // ドメインのみを表示するaタグを生成 - $link = "$domain"; - - // URLをドメインのみを表示するaタグで置き換え - $postText = str_replace($url, $link, $postText); - } - - return $postText; - } - - - - - $messages = array(); - foreach ($message_array as $row) { - $messages[] = $row; - } - // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える - foreach ($messages as &$message) { - $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $message["account"]); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - if ($userData) { - $message['username'] = $userData['username']; - } - } - - // ユーズ内のHTMLコードに指定のタグを有効化する関数 - function replaceUnescapedHTMLTags($html) { - $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ - return customStripTags($html, $allowedTags); - } - - if(!empty($messages)){ - foreach ($messages as $value) { - - $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 - - // コンマで区切って配列に分割し、要素数を数える - $favIds = explode(',', $fav); - $value["favcnt"] = count($favIds)-1; - - $messageDisplay = new MessageDisplay($value, $userid); - $messageDisplay->display(); - } - }else{ - echo '

ユーズがありません

'; - } - - $pdo = null; - -} - -?> + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + + +$keyword = htmlentities(isset($_GET['keyword'])) ? htmlentities($_GET['keyword']) : ''; +$userid = htmlentities($_GET['userid']); + +$messages = array(); + +if (!empty($pdo)) { + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $messageQuery = $dbh->prepare("SELECT account,username,ueuse,uniqid,rpuniqid,datetime,photo1,photo2,video1,favorite, abi, abidate FROM ueuse WHERE ueuse LIKE :keyword OR abi LIKE :keyword ORDER BY datetime DESC"); + $messageQuery->bindValue(':keyword', '%' . $keyword . '%', PDO::PARAM_STR); + $messageQuery->execute(); + $message_array = $messageQuery->fetchAll(); + + // ユーズ内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + + + + $messages = array(); + foreach ($message_array as $row) { + $messages[] = $row; + } + // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える + foreach ($messages as &$message) { + $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $message["account"]); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + if ($userData) { + $message['username'] = $userData['username']; + } + } + + if(!empty($messages)){ + foreach ($messages as $value) { + + $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $favIds = explode(',', $fav); + $value["favcnt"] = count($favIds)-1; + + $messageDisplay = new MessageDisplay($value, $userid); + $messageDisplay->display(); + } + }else{ + echo '

ユーズがありません

'; + } + + $pdo = null; + +} + +?> diff --git a/nextpage/ueusepage.php b/nextpage/ueusepage.php index 7de81e8..087304c 100644 --- a/nextpage/ueusepage.php +++ b/nextpage/ueusepage.php @@ -1,139 +1,125 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); -} catch (PDOException $e) { - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -$userid = $_GET['userid']; - -$ueuseid = isset($_GET['id']) ? $_GET['id'] : ''; - -$itemsPerPage = 30; // 1ページあたりの投稿数 -$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; -$offset = ($pageNumber - 1) * $itemsPerPage; - -$messages = array(); - -if (!empty($pdo)) { - - - // データベース接続の設定 - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - )); - - - - function customStripTags($html, $allowedTags) { - $allowedTagString = implode('|', $allowedTags); - $pattern = "/<(?!$allowedTagString)[^>]+>/"; - return preg_replace($pattern, '', $html); - } - $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); - // 投稿内の絵文字を画像に置き換える - function replaceEmojisWithImages($postText) { - // 投稿内で絵文字名(:emoji:)を検出して画像に置き換える - $pattern = '/:(\w+):/'; - $postTextWithImages = preg_replace_callback($pattern, function($matches) { - $emojiName = $matches[1]; - return "$emojiName"; - }, $postText); - return $postTextWithImages; - } - - function replaceURLsWithLinks($postText) { - // URLを正規表現を使って検出 - $pattern = '/(https?:\/\/[^\s]+)/'; - preg_match_all($pattern, $postText, $matches); - - // 検出したURLごとに処理を行う - foreach ($matches[0] as $url) { - // ドメイン部分を抽出 - $parsedUrl = parse_url($url); - $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; - - // ドメインのみを表示するaタグを生成 - $link = "$domain"; - - // URLをドメインのみを表示するaタグで置き換え - $postText = str_replace($url, $link, $postText); - } - - return $postText; - } - - // 投稿内容の取得(新しい順に取得) - $messageQuery = $dbh->prepare("SELECT account, username, ueuse, uniqid, rpuniqid, datetime, photo1, photo2, video1, favorite, abi, abidate FROM ueuse WHERE uniqid = :ueuseid OR rpuniqid = :rpueuseid ORDER BY datetime ASC LIMIT $offset, $itemsPerPage"); - $messageQuery->bindValue(':ueuseid', $ueuseid); - $messageQuery->bindValue(':rpueuseid', $ueuseid); - $messageQuery->execute(); - $message_array = $messageQuery->fetchAll(); - - $messages = array(); - - - - foreach ($message_array as $row) { - $messages[] = $row; - } - // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える - foreach ($messages as &$message) { - $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $message["account"]); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - if ($userData) { - $message['username'] = $userData['username']; - } - } - - // 投稿内のHTMLコードに指定のタグを有効化する関数 - function replaceUnescapedHTMLTags($html) { - $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ - return customStripTags($html, $allowedTags); - } - - if(!empty($messages)){ - foreach ($messages as $value) { - $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 - - // コンマで区切って配列に分割し、要素数を数える - $favIds = explode(',', $fav); - $value["favcnt"] = count($favIds)-1; - - $messageDisplay = new MessageDisplay($value, $userid); - $messageDisplay->display(); - } - }else{ - echo '

投稿がありません

'; - } - - $pdo = null; - -} - -?> + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +$userid = htmlentities($_GET['userid']); + +$ueuseid = htmlentities(isset($_GET['id'])) ? htmlentities($_GET['id']) : ''; + +$itemsPerPage = 30; // 1ページあたりの投稿数 +$pageNumber = htmlentities(isset($_GET['page'])) ? htmlentities(intval($_GET['page'])) : 1; +$offset = ($pageNumber - 1) * $itemsPerPage; + +$messages = array(); + +if (!empty($pdo)) { + + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + // 投稿内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // 投稿内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + // 投稿内容の取得(新しい順に取得) + $messageQuery = $dbh->prepare("SELECT account, username, ueuse, uniqid, rpuniqid, datetime, photo1, photo2, video1, favorite, abi, abidate FROM ueuse WHERE uniqid = :ueuseid OR rpuniqid = :rpueuseid ORDER BY datetime ASC LIMIT $offset, $itemsPerPage"); + $messageQuery->bindValue(':ueuseid', $ueuseid); + $messageQuery->bindValue(':rpueuseid', $ueuseid); + $messageQuery->execute(); + $message_array = $messageQuery->fetchAll(); + + $messages = array(); + + + + foreach ($message_array as $row) { + $messages[] = $row; + } + // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える + foreach ($messages as &$message) { + $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $message["account"]); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + if ($userData) { + $message['username'] = $userData['username']; + } + } + + if(!empty($messages)){ + foreach ($messages as $value) { + $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $favIds = explode(',', $fav); + $value["favcnt"] = count($favIds)-1; + + $messageDisplay = new MessageDisplay($value, $userid); + $messageDisplay->display(); + } + }else{ + echo '

投稿がありません

'; + } + + $pdo = null; + +} + +?> diff --git a/nextpage/userpage.php b/nextpage/userpage.php index 7e5699d..320b6a1 100644 --- a/nextpage/userpage.php +++ b/nextpage/userpage.php @@ -1,140 +1,125 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); -} catch (PDOException $e) { - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - - -$uwuzuid = isset($_GET['id']) ? $_GET['id'] : ''; -$userid = $_GET['userid']; - -$itemsPerPage = 30; // 1ページあたりのユーズ数 -$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; -$offset = ($pageNumber - 1) * $itemsPerPage; - -$messages = array(); - -if (!empty($pdo)) { - - $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, - )); - - $userQuery = $dbh->prepare("SELECT username, userid, profile, role, follower FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $uwuzuid); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - $messageQuery = $dbh->prepare("SELECT account,username,ueuse,uniqid,rpuniqid,datetime,photo1,photo2,video1,favorite, abi, abidate FROM ueuse WHERE account = :userid AND rpuniqid = ''ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"); - $messageQuery->bindValue(':userid', $uwuzuid); - $messageQuery->execute(); - $message_array = $messageQuery->fetchAll(); - - function customStripTags($html, $allowedTags) { - $allowedTagString = implode('|', $allowedTags); - $pattern = "/<(?!$allowedTagString)[^>]+>/"; - return preg_replace($pattern, '', $html); - } - $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); - - // ユーズ内の絵文字を画像に置き換える - function replaceEmojisWithImages($postText) { - // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える - $pattern = '/:(\w+):/'; - $postTextWithImages = preg_replace_callback($pattern, function($matches) { - $emojiName = $matches[1]; - return "$emojiName"; - }, $postText); - return $postTextWithImages; - } - - function replaceURLsWithLinks($postText) { - // URLを正規表現を使って検出 - $pattern = '/(https?:\/\/[^\s]+)/'; - preg_match_all($pattern, $postText, $matches); - - // 検出したURLごとに処理を行う - foreach ($matches[0] as $url) { - // ドメイン部分を抽出 - $parsedUrl = parse_url($url); - $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; - - // ドメインのみを表示するaタグを生成 - $link = "$domain"; - - // URLをドメインのみを表示するaタグで置き換え - $postText = str_replace($url, $link, $postText); - } - - return $postText; - } - - - - - $messages = array(); - foreach ($message_array as $row) { - $messages[] = $row; - } - // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える - foreach ($messages as &$message) { - $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $message["account"]); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - if ($userData) { - $message['username'] = $userData['username']; - } - } - - // ユーズ内のHTMLコードに指定のタグを有効化する関数 - function replaceUnescapedHTMLTags($html) { - $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ - return customStripTags($html, $allowedTags); - } - - if(!empty($messages)){ - foreach ($messages as $value) { - - $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 - - // コンマで区切って配列に分割し、要素数を数える - $favIds = explode(',', $fav); - $value["favcnt"] = count($favIds)-1; - - $messageDisplay = new MessageDisplay($value, $userid); - $messageDisplay->display(); - } - }else{ - echo '

ユーズがありません

'; - } - - $pdo = null; - -} - -?> + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + + +$uwuzuid = htmlentities(isset($_GET['id'])) ? htmlentities($_GET['id']) : ''; +$userid = htmlentities($_GET['userid']); + +$itemsPerPage = 30; // 1ページあたりのユーズ数 +$pageNumber = htmlentities(isset($_GET['page'])) ? htmlentities(intval($_GET['page'])) : 1; +$offset = ($pageNumber - 1) * $itemsPerPage; + +$messages = array(); + +if (!empty($pdo)) { + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $dbh->prepare("SELECT username, userid, profile, role, follower FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $uwuzuid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + $messageQuery = $dbh->prepare("SELECT account,username,ueuse,uniqid,rpuniqid,datetime,photo1,photo2,video1,favorite, abi, abidate FROM ueuse WHERE account = :userid AND rpuniqid = ''ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"); + $messageQuery->bindValue(':userid', $uwuzuid); + $messageQuery->execute(); + $message_array = $messageQuery->fetchAll(); + + // ユーズ内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + + $messages = array(); + foreach ($message_array as $row) { + $messages[] = $row; + } + // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える + foreach ($messages as &$message) { + $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $message["account"]); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + if ($userData) { + $message['username'] = $userData['username']; + } + } + + if(!empty($messages)){ + foreach ($messages as $value) { + + $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $favIds = explode(',', $fav); + $value["favcnt"] = count($favIds)-1; + + $messageDisplay = new MessageDisplay($value, $userid); + $messageDisplay->display(); + } + }else{ + echo '

ユーズがありません

'; + } + + $pdo = null; + +} + +?> diff --git a/nextpage/view.php b/nextpage/view.php index 7bef23d..cfbb58c 100644 --- a/nextpage/view.php +++ b/nextpage/view.php @@ -1,85 +1,85 @@ - -value = $value; - $this->userid = $userid; - } - - public function display() { - if (empty($this->value)) { - echo '

ユーズがありません

'; - } else { - echo '
'; - if(!empty($this->value['rpuniqid'])){ - echo '

┗━ 一番上のユーズに返信

'; - } - echo '
'; - - echo ' '; - echo ' ' . htmlspecialchars($this->value['username']) . ''; - echo ' '; - echo '
'; - $day = date("Ymd", strtotime(htmlspecialchars($this->value['datetime']))); - if ($day == date("Ymd")) { - echo date("今日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); - } else { - echo date("Y年m月d日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); - } - echo '
'; - - echo '
'; - - echo '

' . replaceEmojisWithImages(replaceURLsWithLinks(nl2br(replaceUnescapedHTMLTags($this->value['ueuse'])))) . '

'; - - if (!empty($this->value['photo2']) && $this->value['photo2'] !== 'none') { - echo '
'; - echo ' 画像'; - echo ' 画像'; - echo '
'; - } elseif (!empty($this->value['photo1']) && $this->value['photo1'] !== 'none') { - echo '
'; - echo ' 画像'; - echo '
'; - } - if (!empty($this->value['video1']) && $this->value['video1'] !== 'none') { - echo '
'; - echo ' '; - echo '
'; - } - - if(!($this->value['abi'] == "none")){ - echo '
'; - echo '
'; - echo '

' . htmlspecialchars($this->value['username']) . 'さんが追記しました

'; - echo '
'; - echo '

'. htmlspecialchars($this->value['abi']) . '

'; - echo '

追記日時 : '. date("Y年m月d日 H:i", strtotime(htmlspecialchars($this->value['abidate']))) . '

'; - echo '
'; - } - - echo '
'; - echo '
'; - if (false !== strstr($this->value['favorite'], $this->userid)) { - echo ''; - }else{ - echo ''; - } - echo '返信をみる&する'; - if($this->value['account'] === $this->userid){ - if($this->value['abi'] === "none"){ - echo ''; - } - echo ''; - } - echo '
'; - echo '
'; - } - } -} + +value = $value; + $this->userid = $userid; + } + + public function display() { + if (empty($this->value)) { + echo '

ユーズがありません

'; + } else { + echo '
'; + if(!empty($this->value['rpuniqid'])){ + echo '

┗━ 一番上のユーズに返信

'; + } + echo '
'; + + echo ' '; + echo ' ' . htmlentities($this->value['username']) . ''; + echo ' '; + echo '
'; + $day = date("Ymd", strtotime(htmlentities($this->value['datetime']))); + if ($day == date("Ymd")) { + echo date("今日 H:i", strtotime(htmlentities($this->value['datetime']))); + } else { + echo date("Y年m月d日 H:i", strtotime(htmlentities($this->value['datetime']))); + } + echo '
'; + + echo '
'; + + echo '

' . replaceEmojisWithImages(replaceURLsWithLinks(nl2br($this->value['ueuse']))) . '

'; + + if (!empty($this->value['photo2']) && $this->value['photo2'] !== 'none') { + echo '
'; + echo ' 画像'; + echo ' 画像'; + echo '
'; + } elseif (!empty($this->value['photo1']) && $this->value['photo1'] !== 'none') { + echo '
'; + echo ' 画像'; + echo '
'; + } + if (!empty($this->value['video1']) && $this->value['video1'] !== 'none') { + echo '
'; + echo ' '; + echo '
'; + } + + if(!($this->value['abi'] == "none")){ + echo '
'; + echo '
'; + echo '

' . htmlentities($this->value['username']) . 'さんが追記しました

'; + echo '
'; + echo '

'.replaceEmojisWithImages(replaceURLsWithLinks(nl2br($this->value['abi']))) . '

'; + echo '

追記日時 : '. date("Y年m月d日 H:i", strtotime(htmlentities($this->value['abidate']))) . '

'; + echo '
'; + } + + echo '
'; + echo '
'; + if (false !== strstr($this->value['favorite'], $this->userid)) { + echo ''; + }else{ + echo ''; + } + echo '返信をみる&する'; + if($this->value['account'] === $this->userid){ + if($this->value['abi'] === "none"){ + echo ''; + } + echo ''; + } + echo '
'; + echo '
'; + } + } +} ?> \ No newline at end of file diff --git a/notice/addnotice.php b/notice/addnotice.php index d1c2018..8bff8b1 100644 --- a/notice/addnotice.php +++ b/notice/addnotice.php @@ -25,8 +25,8 @@ $option = null; session_start(); -$userid = $_SESSION['userid']; -$username = $_SESSION['username']; +$userid = htmlentities($_SESSION['userid']); +$username = htmlentities($_SESSION['username']); try { diff --git a/notice/notice.php b/notice/notice.php index c2e8e41..f3b6dca 100644 --- a/notice/notice.php +++ b/notice/notice.php @@ -1,40 +1,40 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -$sql = "SELECT title, note, account, datetime FROM notice ORDER BY datetime DESC"; -$notice_array = $pdo->query($sql); - -while ($row = $notice_array->fetch(PDO::FETCH_ASSOC)) { - - $notices[] = $row; -} - -if(!empty($notices)){ - foreach ($notices as $value) { - $uneinoticenote = $value['note']; - $uneinoticetitle = $value['title']; - $uneinoticeaccount = $value['account']; - $uneinoticedatetime = $value['datetime']; - } -}else{ - $uneinoticenote = ""; - $uneinoticetitle = "おしらせはありません"; - $uneinoticeaccount = "uwuzu"; - $uneinoticedatetime = ""; -} - + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +$sql = "SELECT title, note, account, datetime FROM notice ORDER BY datetime DESC"; +$notice_array = $pdo->query($sql); + +while ($row = $notice_array->fetch(PDO::FETCH_ASSOC)) { + + $notices[] = $row; +} + +if(!empty($notices)){ + foreach ($notices as $value) { + $uneinoticenote = htmlentities($value['note']); + $uneinoticetitle = htmlentities($value['title']); + $uneinoticeaccount = htmlentities($value['account']); + $uneinoticedatetime = htmlentities($value['datetime']); + } +}else{ + $uneinoticenote = ""; + $uneinoticetitle = "おしらせはありません"; + $uneinoticeaccount = "uwuzu"; + $uneinoticedatetime = ""; +} + diff --git a/notification/index.php b/notification/index.php index 75972ce..91195bd 100644 --- a/notification/index.php +++ b/notification/index.php @@ -1,229 +1,229 @@ - PDO::ERRMODE_EXCEPTION, - PDO::MYSQL_ATTR_MULTI_STATEMENTS => false - ); - $pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - -} catch(PDOException $e) { - - // 接続エラーのときエラー内容を取得する - $error_message[] = $e->getMessage(); -} - -if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_SESSION['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_SESSION['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット - $username = $_SESSION['username']; // セッションに格納されている値をそのままセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { - - $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); - $passQuery->bindValue(':userid', $_COOKIE['userid']); - $passQuery->execute(); - $res = $passQuery->fetch(); - if(empty($res["userid"])){ - header("Location: ../login.php"); - exit; - }elseif($_COOKIE['loginid'] === $res["loginid"]){ - // セッションに値をセット - $userid = $_COOKIE['userid']; // クッキーから取得した値をセット - $username = $_COOKIE['username']; // クッキーから取得した値をセット - $_SESSION['admin_login'] = true; - $_SESSION['userid'] = $userid; - $_SESSION['username'] = $username; - $_SESSION['loginid'] = $res["loginid"]; - setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); - setcookie('username', $username, time() + 60 * 60 * 24 * 14); - setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); - setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); - }else{ - header("Location: ../login.php"); - exit; - } - - -} else { - // ログインが許可されていない場合、ログインページにリダイレクト - header("Location: ../login.php"); - exit; -} -if(empty($userid)){ - header("Location: ../login.php"); - exit; -} -if(empty($username)){ - header("Location: ../login.php"); - exit; -} - -if( !empty($_POST['logout']) ) { - if (isset($_SERVER['HTTP_COOKIE'])) { - $cookies = explode(';', $_SERVER['HTTP_COOKIE']); - foreach($cookies as $cookie) { - $parts = explode('=', $cookie); - $name = trim($parts[0]); - setcookie($name, '', time()-1000); - setcookie($name, '', time()-1000, '/'); - } - } - // リダイレクト先のURLへ転送する - $url = '../index.php'; - header('Location: ' . $url, true, 303); - - // すべての出力を終了 - exit; -} - - - -// データベースの接続を閉じる -$pdo = null; - -?> - - - - - - - - -通知 - <?php echo file_get_contents($servernamefile);?> - - - - - -
- - -
    - -

    - -
- - -
-
- -
-
- - - -
- - - - - - - - - - - + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +通知 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ + +
+
+ +
+
+ + + +
+ + + + + + + + + + + \ No newline at end of file diff --git a/others/index.php b/others/index.php index 9bfd40e..61f3ad4 100644 --- a/others/index.php +++ b/others/index.php @@ -25,8 +25,8 @@ $option = null; session_start(); -$userid = $_SESSION['userid']; -$username = $_SESSION['username']; +$userid = htmlentities($_SESSION['userid']); +$username = htmlentities($_SESSION['username']); // 管理者としてログインしているか確認 if( empty($_SESSION['admin_login']) || $_SESSION['admin_login'] !== true ) { @@ -136,7 +136,7 @@ if( !empty($pdo) ) { if( !empty($_POST['btn_submit']) ) { - $chkuserid = $_POST['chkuserid']; + $chkuserid = htmlentities($_POST['chkuserid']); if( empty($chkuserid) ) { $error_message[] = '確認用ユーザーIDを入力してください。'; @@ -233,6 +233,51 @@ if( !empty($_POST['btn_submit']) ) { } +if( !empty($_POST['session_submit']) ) { + $loginid = sha1(uniqid(mt_rand(), true)); + $pdo->beginTransaction(); + try { + + $stmt = $pdo->prepare("UPDATE account SET loginid = :loginid WHERE userid = :userid;"); + + $stmt->bindParam(':loginid', $loginid, PDO::PARAM_STR); + + $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; + } else { + $error_message[] = '登録に失敗しました。'; + } + +} + + if( !empty($_POST['logout']) ) { if (isset($_SERVER['HTTP_COOKIE'])) { $cookies = explode(';', $_SERVER['HTTP_COOKIE']); @@ -259,7 +304,9 @@ if( !empty($_POST['logout']) ) { -アカウント削除ページ - <?php echo file_get_contents($servernamefile);?> + + +その他の項目 - <?php echo file_get_contents($servernamefile);?> @@ -275,7 +322,11 @@ if( !empty($_POST['logout']) ) {
-

アカウント削除ページ

+

セッション終了

+

下のセッションを終了ボタンを押すと全てのログイン中のデバイスからログアウトされます。
再度uwuzu使用するにはログインが必須になります。

+ +
+

アカウント削除

アカウント誤削除を防ぐため下の入力ボックスにご自身のユーザーIDを入力する必要があります。

diff --git a/passrecovery/back.js b/passrecovery/back.js new file mode 100644 index 0000000..ccde4e1 --- /dev/null +++ b/passrecovery/back.js @@ -0,0 +1,6 @@ + +window.onload = function(){ +var ele = document.getElementsByTagName("body")[0]; +var n = Math.floor(Math.random() * 3); // 3枚の画像がある場合 +ele.style.backgroundImage = "url(../img/titleimg/"+n+".png)"; +} diff --git a/passrecovery/badrecovery.php b/passrecovery/badrecovery.php new file mode 100644 index 0000000..1209c1f --- /dev/null +++ b/passrecovery/badrecovery.php @@ -0,0 +1,40 @@ + + + + + + + + + + + +残念なお知らせ - <?php echo file_get_contents($servernamefile);?> + + + + + + + +
+ + +
+

パスワード変更不可

+ +

申し訳ございませんがお使いのアカウントのパスワードは変更できません。

+ +
+ もどる +
+
+
+ + + + \ No newline at end of file diff --git a/passrecovery/donerecovery.php b/passrecovery/donerecovery.php new file mode 100644 index 0000000..192c658 --- /dev/null +++ b/passrecovery/donerecovery.php @@ -0,0 +1,40 @@ + + + + + + + + + + + +パスワード変更完了 - <?php echo file_get_contents($servernamefile);?> + + + + + + + +
+ + +
+

パスワードの変更が完了しました!

+ +

パスワードの変更が完了しました。下のボタンよりログインしてください!

+ + +
+
+ + + + \ No newline at end of file diff --git a/passrecovery/index.php b/passrecovery/index.php new file mode 100644 index 0000000..7c048d7 --- /dev/null +++ b/passrecovery/index.php @@ -0,0 +1,204 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if( !empty($_POST['btn_submit']) ) { + + + //$row['userid'] = "daichimarukn"; + + $userid = $_POST['userid']; + $mailadds = $_POST['mailadds']; + + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT userid, mailadds, loginid, authcode FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + + // ... (前略) + // IDの入力チェック + if( empty($userid) ) { + $error_message[] = 'ユーザーIDを入力してください。'; + } else { + + if( empty($mailadds) ) { + $error_message[] = 'メールアドレスを入力してください。'; + } else { + + if($result->rowCount() > 0) { + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + if($row["userid"] == $userid){ + if($row["mailadds"] == $mailadds){ + if(empty($row["authcode"])){ + + $_SESSION['userid'] = ""; + $url = 'badrecovery.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; + }else{ + $_SESSION['userid'] = $userid; + $url = 'startrecovery.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; + } + } + else{ + $error_message[] = 'IDまたはメールアドレスが違います'; + } + }else{ + $error_message[] = 'IDまたはメールアドレスが違います'; + } + } + else { + $error_message[] = 'IDまたはメールアドレスが違います'; + } + } + + } + + // ... (後略) + + + +} + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +パスワードの復元 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
+

パスワードの復元

+ +

IDと登録したメールアドレスを入力してください。

+ + +
    + +

    + +
+ + + + +
+ + +
+ + + +
+ + +
+ + + + +
+ 戻る +
+
+
+
+ + + + + + \ No newline at end of file diff --git a/passrecovery/startrecovery.php b/passrecovery/startrecovery.php new file mode 100644 index 0000000..0be93ee --- /dev/null +++ b/passrecovery/startrecovery.php @@ -0,0 +1,298 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $options); +} catch(PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = 'データベース接続エラー: ' . $e->getMessage(); +} + + +if( !empty($_POST['btn_submit']) ) { + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $options); + + require_once '../authcode/GoogleAuthenticator.php'; + + $result = $dbh->prepare("SELECT authcode,loginid,username FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + if($result->rowCount() > 0) { + $row = $result->fetch(); + + $tousercode = $row["authcode"]; + + $chkauthcode = new PHPGangsta_GoogleAuthenticator(); + + $userauthcode = $_POST['usercode']; + $password = $_POST['password']; + + if(empty($userauthcode)){ + $error_message[] = "コードを入力してください。"; + }else{ + + $discrepancy = 2; + + $checkResult = $chkauthcode->verifyCode($tousercode, $userauthcode, $discrepancy); + if ($checkResult) { + + // パスワードの入力チェック + if( empty($password) ) { + $error_message[] = 'パスワードを入力してください。'; + } else { + + $weakPasswords = array( + "password", + "123456", + "123456789", + "12345", + "12345678", + "123123", + "1234567890", + "1234567", + "1q2w3e", + "qwerty123", + "aa12345678", + "password1", + "1234", + "qwertyuiop", + "123321", + "12321", + "qwertyui", + "abcd1234", + "zaq12wsx", + "1q2w3e4r", + "qwer1234", + "sakura", + "asdf1234", + "asdfghjkl", + "asdfghjk", + "member", + "1qaz2wsx", + "doraemon", + "makoto", + "takeshi", + "machi1", + "machida", + "machida1", + "tokyo", + "arashi", + "dropbox", + "twitter", + "elonmusk", + "xcorp", + "1234qwer", + "japan", + "nippon", + "tukareta", + "tweet", + "discord", + "misskey", + "qwerty", + "123456789", + "abc123", + "password123", + "admin", + "letmein", + "iloveyou", + "111111", + "12345678910", + "user", + "root", + "system", + // 他にも弱いパスワードを追加できます + ); + + function isWeakPassword($passwords) { + global $weakPasswords; + return in_array($passwords, $weakPasswords); + } + + // テスト用のパスワード(実際にはユーザー入力などから取得することになります。 + + if (isWeakPassword($password)) { + $error_message[] = "パスワードが弱いです。セキュリティ上変更してください。"; + } else { + + } + + if( 4 > mb_strlen($password, 'UTF-8') ) { + $error_message[] = 'パスワードは4文字以上である必要があります。'; + } + + // 文字数を確認 + if( 100 < mb_strlen($password, 'UTF-8') ) { + $error_message[] = 'パスワードは100文字以内で入力してください。'; + } + } + + if( empty($error_message) ) { + // トランザクション開始 + $pdo->beginTransaction(); + $hashpassword = password_hash($password, PASSWORD_DEFAULT); + + try { + // SQL作成 + $stmt = $pdo->prepare("UPDATE account SET password = :password WHERE userid = :userid;"); + + // 他の値をセット + $stmt->bindParam(':password', $hashpassword, PDO::PARAM_STR); + + // 条件を指定 + // 以下の部分を適切な条件に置き換えてください + $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + $_SESSION['userid'] = ""; + $url = 'donerecovery.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; + } else { + $error_message[] = 'パスワードの更新に失敗しました。'; + } + } + + }else { + $error_message[] = '二段階認証が出来ませんでした。再度お試しください。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } + } +} + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +ログイン - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
+

二段階認証

+ +

二段階認証コードと新しいパスワードを入力してください。

+ + +
    + +

    + +
+ + +
+
+

二段階認証コード

+
6桁のコードを入力してください。
+ +
+
+

新しいパスワード

+
新しいパスワードを入力してください。
+ +
+ +
+ +
+ 戻る +
+
+
+ + + + + + + \ No newline at end of file diff --git a/require/botbox.php b/require/botbox.php index 7d002cf..b5617a6 100644 --- a/require/botbox.php +++ b/require/botbox.php @@ -1,10 +1,10 @@ - - + + \ No newline at end of file diff --git a/require/leftbox.php b/require/leftbox.php index b4b1305..e350811 100644 --- a/require/leftbox.php +++ b/require/leftbox.php @@ -1,26 +1,26 @@ - - + + \ No newline at end of file diff --git a/require/rightbox.php b/require/rightbox.php index 79cf849..e846a79 100644 --- a/require/rightbox.php +++ b/require/rightbox.php @@ -1,45 +1,45 @@ -
- -

お知らせ

-
- -
-

-

-

編集者 :

-

-
- -
-

サーバー情報

-
-

Server

-

-

- 利用規約プライバシーポリシー -

Software

-

-

Version :

-

Developer :

- もっと詳しく!リリースノート -
+
+ +

お知らせ

+
+ +
+

+

+

編集者 :

+

+
+ +
+

サーバー情報

+
+

Server

+

+

+ 利用規約プライバシーポリシー +

Software

+

+

Version :

+

Developer :

+ もっと詳しく!リリースノート +
\ No newline at end of file diff --git a/rule/privacypolicy.php b/rule/privacypolicy.php index 90cfff6..f1b9214 100644 --- a/rule/privacypolicy.php +++ b/rule/privacypolicy.php @@ -1,80 +1,80 @@ - - -

$1

', $markdownText); - - // 画像(#img)をHTMLのimgタグに変換 - $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); - - // タイトル(#、##、###)をHTMLのhタグに変換 - $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); - - // 箇条書き(-)をHTMLのul/liタグに変換 - $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); - - // 空行の前に何もない行をHTMLのpタグに変換 - $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); - - return $markdownText; -} - -$sprivacypolicy = explode("\n", $privacypolicydata); -$htmltext = ''; // 初期化 - -foreach ($sprivacypolicy as $privacypolicy) { - $markdowntext = $privacypolicy; - $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); - $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 -} - - -?> - - - - - - -プライバシーポリシー - <?php echo file_get_contents($servernamefile);?> - - - - -
- -
- -
- -

プライバシーポリシー

-
-
- -

- -
- - - - + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$sprivacypolicy = explode("\n", $privacypolicydata); +$htmltext = ''; // 初期化 + +foreach ($sprivacypolicy as $privacypolicy) { + $markdowntext = $privacypolicy; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + +プライバシーポリシー - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +

プライバシーポリシー

+
+
+ +

+ +
+ + + + \ No newline at end of file diff --git a/rule/releasenotes.php b/rule/releasenotes.php index 5852a3b..54f0a02 100644 --- a/rule/releasenotes.php +++ b/rule/releasenotes.php @@ -1,93 +1,93 @@ - - -

$1

', $markdownText); - - // 画像(#img)をHTMLのimgタグに変換 - $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); - - // タイトル(#、##、###)をHTMLのhタグに変換 - $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); - - // 箇条書き(-)をHTMLのul/liタグに変換 - $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); - - // 空行の前に何もない行をHTMLのpタグに変換 - $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); - - return $markdownText; -} - -$srelease = explode("\n", $releasedata); -$htmltext = ''; // 初期化 - -foreach ($srelease as $release) { - $markdowntext = $release; - $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); - $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 -} - - -?> - - - - - - -<?php echo $uwuzuinfo[0]?> リリースノート - <?php echo file_get_contents($servernamefile);?> - - - - - -
- -
- -
- -

リリースノート

-
-
-
-
Version :
Developer :
Last Update :
- - -

- -
- - - - + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$srelease = explode("\n", $releasedata); +$htmltext = ''; // 初期化 + +foreach ($srelease as $release) { + $markdowntext = $release; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + +<?php echo $uwuzuinfo[0]?> リリースノート - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ +
+ +
+ +

リリースノート

+
+
+
+
Version :
Developer :
Last Update :
+ + +

+ +
+ + + + \ No newline at end of file diff --git a/rule/terms.php b/rule/terms.php index 706af81..5f09619 100644 --- a/rule/terms.php +++ b/rule/terms.php @@ -1,80 +1,80 @@ - - -

$1

', $markdownText); - - // 画像(#img)をHTMLのimgタグに変換 - $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); - - // タイトル(#、##、###)をHTMLのhタグに変換 - $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); - - // 箇条書き(-)をHTMLのul/liタグに変換 - $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); - - // 空行の前に何もない行をHTMLのpタグに変換 - $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); - - return $markdownText; -} - -$sterms = explode("\n", $termsdata); -$htmltext = ''; // 初期化 - -foreach ($sterms as $terms) { - $markdowntext = $terms; - $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); - $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 -} - - -?> - - - - - - -利用規約 - <?php echo file_get_contents($servernamefile);?> - - - - -
- -
- -
- -

利用規約

-
-
- -

- -
- - - - + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$sterms = explode("\n", $termsdata); +$htmltext = ''; // 初期化 + +foreach ($sterms as $terms) { + $markdowntext = $terms; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + +利用規約 - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +

利用規約

+
+
+ +

+ +
+ + + + \ No newline at end of file diff --git a/rule/uwuzuabout.php b/rule/uwuzuabout.php index 023004b..2694f3a 100644 --- a/rule/uwuzuabout.php +++ b/rule/uwuzuabout.php @@ -1,93 +1,93 @@ - - -

$1

', $markdownText); - - // 画像(#img)をHTMLのimgタグに変換 - $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); - - // タイトル(#、##、###)をHTMLのhタグに変換 - $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); - $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); - - // 箇条書き(-)をHTMLのul/liタグに変換 - $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); - - // 空行の前に何もない行をHTMLのpタグに変換 - $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); - - return $markdownText; -} - -$sterms = explode("\n", $termsdata); -$htmltext = ''; // 初期化 - -foreach ($sterms as $terms) { - $markdowntext = $terms; - $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); - $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 -} - - -?> - - - - - - -<?php echo $uwuzuinfo[0]?>について - <?php echo file_get_contents($servernamefile);?> - - - - - -
- -
- -
- -

について

-
-
-
-
Version :
Developer :
Last Update :
- - -

- -
- - - - + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$sterms = explode("\n", $termsdata); +$htmltext = ''; // 初期化 + +foreach ($sterms as $terms) { + $markdowntext = $terms; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + +<?php echo $uwuzuinfo[0]?>について - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ +
+ +
+ +

について

+
+
+
+
Version :
Developer :
Last Update :
+ + +

+ +
+ + + + \ No newline at end of file diff --git a/search/index.php b/search/index.php index abe3d84..db917bf 100644 --- a/search/index.php +++ b/search/index.php @@ -200,7 +200,7 @@ $pdo = null;

ユーズに追記しますか?

※追記は削除出来ません。

- +
diff --git a/server/admininfo.txt b/server/admininfo.txt new file mode 100644 index 0000000..62573b3 --- /dev/null +++ b/server/admininfo.txt @@ -0,0 +1 @@ +TEST/@test \ No newline at end of file diff --git a/server/contact.txt b/server/contact.txt new file mode 100644 index 0000000..beef183 --- /dev/null +++ b/server/contact.txt @@ -0,0 +1 @@ +test@test.com \ No newline at end of file diff --git a/server/info.txt b/server/info.txt new file mode 100644 index 0000000..a4a3c6c --- /dev/null +++ b/server/info.txt @@ -0,0 +1,3 @@ +XXXXへようこそ! +XXXXはuwuzu~~~~~~~~~ +とりあえず適当に書いてみよう! \ No newline at end of file diff --git a/server/onlyuser.txt b/server/onlyuser.txt new file mode 100644 index 0000000..02e4a84 --- /dev/null +++ b/server/onlyuser.txt @@ -0,0 +1 @@ +false \ No newline at end of file diff --git a/server/privacypolicy.txt b/server/privacypolicy.txt new file mode 100644 index 0000000..9e1c9b5 --- /dev/null +++ b/server/privacypolicy.txt @@ -0,0 +1 @@ +ここもしっかり書こう \ No newline at end of file diff --git a/server/servername.txt b/server/servername.txt new file mode 100644 index 0000000..650af7e --- /dev/null +++ b/server/servername.txt @@ -0,0 +1 @@ +tesutoさば \ No newline at end of file diff --git a/server/serverstop.txt b/server/serverstop.txt new file mode 100644 index 0000000..2a8c3b9 --- /dev/null +++ b/server/serverstop.txt @@ -0,0 +1,2 @@ +今現在サーバーは停止していません +もしサーバーを止めるならここに理由書こう \ No newline at end of file diff --git a/server/terms.txt b/server/terms.txt new file mode 100644 index 0000000..11bc436 --- /dev/null +++ b/server/terms.txt @@ -0,0 +1 @@ +利用規約、しっかり書こう \ No newline at end of file diff --git a/server/uwuzuabout.txt b/server/uwuzuabout.txt new file mode 100644 index 0000000..a0ebfcf --- /dev/null +++ b/server/uwuzuabout.txt @@ -0,0 +1,147 @@ +## 1. まずそもそもuwuzuとは何か +使っている方ならわかると思いますが普通のSNSです! +これと言った大きな特徴もなく、平凡で、なんとも言えないSNSです… +あっ!特徴かもしれないのが誰でもサーバーを建てられることです!!! +詳細は5. サーバーの立て方をご覧ください! +### 1.1 作られた理由は? +uwuzuは某X社のSNSを再構築しようと考えたdaichimarukanaにより作成されたSNSです() +uwuzuの読みはゆずです。 + +## 2. 誰でもサーバーを建てれるってことは、分散型? +残念っ! +uwuzuにはActivityPubやその他の連合用機能がないため基本的に導入されたサーバー中心の中央集権型SNSです! +今後いつかはActivityPubも導入しようかと思っています... + +## 3. 名前の由来って何? +おっ!いい着眼点ですねぇ~~~ +uwuzu(ゆず)の名前の由来は、開発者のdaichimarukanaがサービス名を考えていたときに某X社のSNSに「TwitterみたいなSNS作ってるけどサービス名が全く思いつかねぇ()」と投稿したところ思ったより多くの名前の案が集まり、 +その中に「With you」という名前の案があったところから来ています。 +daichimarukana < 「うぃずゆー(With you)」「うぃじゅー(witzou)」「うずー(wuzu)」「ゆず(yuzu)」あれっ?なんか普通すぎ?そうだ!!!!これでいいやん!!!! +### 「ゆず(uwuzu)」 + +ちなみに、この案が来るまでは「Twilus」という名前にする予定だったんですよっ! + +## 4. 開発言語は? +uwuzuはPHPとJS、HTML(プログラミング言語じゃないか)、CSSで作られています! +ライブラリはjQueryを導入しています! + +## 5. サーバーの建て方 +※MySQLの設定結構めんどいです。脆弱です。 +まず、Apache2とPHP 8とmysql Ver 15が導入されているサーバーを準備します! +次にSQLを設定します。(InnoDB) +まず、お好きな名前でDBを作成し、その中に、account,emoji,notice,role,ueuse,notificationとテーブルを作成します。 +テーブルの中身は以下のとおりです。 +照合順序は全て標準でutf8mb4_general_ciです。 +### account +- sysid(INT)(AUTO_INCREMENT ) アカウントが追加されるとカウントされるシステム用ID +- username(varchar(500)) ユーザーネーム保存用 +- userid(varchar(500)) ユーザーID保存用 +- password(varchar(1024)) パスワード保存用(ハッシュ化されます) +- loginid(varchar(256)) 自動ログイン時に本人アカウントか確認 +- mailadds(varchar(500)) メールアドレス保存用 +- profile(TEXT) プロフィールテキスト保存用 +- iconname(varchar(256)) アイコン画像名保存用 +- iconcontent(mediumblob) アイコン画像保存用 +- icontype(varchar(256)) アイコン画像拡張子保存用 +- iconsize(INT) アイコン画像サイズ保存用 +- headname(varchar(256)) ヘッダー画像名保存用 +- headcontent(mediumblob) ヘッダー画像保存用 +- headtype(varchar(256)) ヘッダー画像拡張子保存用 +- headsize(INT) ヘッダー画像サイズ保存用 +- role(varchar(1024)) 「user」のようなロール保存用 +- datetime(datetime) アカウント作成日時保存用 +- follow(text) アカウントがフォローしている人保存用 +- follower(text) アカウントがフォローされている人保存用 +- admin(varchar(25)) 管理者アカウントなら「yes」、それ以外なら「none」と入力。 + +### emoji +- sysid(INT)(AUTO_INCREMENT) アカウントが追加されるとカウントされるシステム用ID +- emojifile(varchar(512)) 絵文字ファイル名保存用 +- emojitype(varchar(256)) 絵文字拡張子保存用 +- emojicontent(mediumblob) 絵文字画像保存用 +- emojiname(varchar(512)) 「:emoji:」のような絵文字名保存用 +- emojiinfo(text) 絵文字についての説明保存用 +- emojidate(datetime) 絵文字登録日時保存用 + +### notice +- sysid(INT)(AUTO_INCREMENT) うんえいからのおしらせが追加されるとカウントされるシステム用ID +- title(varchar(1024)) お知らせのタイトル保存用 +- note(text) お知らせの内容保存用 +- account(varchar(500)) 編集者ID保存用 +- emojidate(datetime) お知らせ登録日時保存用 + +### role +- sysid(INT)(AUTO_INCREMENT) ロールが追加されるとカウントされるシステム用ID +- rolename(varchar(512)) ロール表示名保存用 +- roleauth(varchar(256)) ロールの権限保存用 +- rolecolor(varchar(25)) ロールの色保存用 +- roleidname(varchar(512)) 「user」のようなロール指定用 + +### ueuse +- sysid(INT)(AUTO_INCREMENT) 投稿されるとカウントされるシステム用ID +- account(varchar(256)) 投稿者ID保存用 +- uniqid(varchar(256)) 投稿ID保存用 +- rpuniqid(varchar(256)) リプライ先ID保存用 +- ueuse(text) 投稿内容保存用 +- photo1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 +- photo2(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 +- video1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 +- datetime(datetime) 投稿日時保存用 +- favorite(text) いいね保存用 +- abi(text) 投稿者の追記保存用 +- abidate(datetime) 追記日時保存用 + +### notification +- sysid(INT)(AUTO_INCREMENT) 通知されるとカウントされるシステム用ID +- touserid(varchar(512)) 通知先ID保存用 +- title(varchar(1024)) 通知のタイトル +- msg(text) 通知の内容 +- datetime(datetime) 通知日時 +- userchk(varchar(25)) 通知の既読確認 + +### invitation +- sysid(INT)(AUTO_INCREMENT) 追加されるとカウントされるシステム用ID +- code(varchar(512)) 招待コード +- used(varchar(25)) 使用済みかそうでないか +- datetime(datetime) 招待コード仕様日時更新用 + +すべて作成完了したらGithubよりuwuzuのファイルをDLし、解凍し、それをサーバーの動作ディレクトリに置き、Apacheのhttpd.confからその動作ディレクトリを指定し、あとはApacheとphpとMy SQLを起動するだけ! +起動したらまずDBのroleにphpmyadminから「user」ロールを追加権限は「user」でOK。ロール名はとりあえず「一般ユーザー」ロールの色はHEXコード(#を除く)で000000のように指定。 +そしたら普通にuwuzuにアクセスして自分のアカウントを登録。 +それが終わったら一度サーバーを止め、uwuzuの動作ディレクトリ内のserverフォルダ内のファイルを各自設定 +ファイルの機能は以下の通り! +- admininfo.txt : 管理者名(てすとまる/@sampledayo) +- contact.txt : 管理者への連絡用メアド(sample@test.com) +- info.txt : サーバー登録時に表示されるメッセージ(好きな内容) +- privacypolicy.txt : プライバシーポリシー(サーバーのプライバシーポリシーを記載) +- servername.txt : サーバー名(てすとさば) +- terms.txt : 利用規約(サーバーの利用規約を記載) +- uwuzuabout.txt : このファイル(uwuzuを改造した場合は書き換え) +- uwuzuinfo.txt : uwuzuのバージョン等記載(uwuzuを改造した場合は書き換え) +- uwuzurelease.txt : uwuzuのバージョン等記載(uwuzuを改造した場合は書き換え) +- onlyuser.txt : 招待コード機能をオンにするかどうか、「true」でオン、「false」でオフ。招待コードはDBに直接追加。 + +### これでサーバーは完成!!! +結構脆弱だから気をつけてね... + +## 6. Android、iOS、その他OS向けのアプリについて +残念ですが今現在は公式アプリ等はなく、Webブラウザからお楽しみいただけます。 +誰かが作ってくれたらありがたいな~() + +## 7. 開発したいです!!! +uwuzuを自分の思うように改造して使いたい場合はAGPLライセンスのもと改造後ソースコードを公開するということで改造してください! +場合によってはdaichimarukanaの作る本家(?)uwuzuにも改造で追加された機能が実装されるかも...() +daichimarukanaと一緒に開発したいよ~って人は私のHPからメールとか某Xとかから連絡してくださいな~ + +## 8. ロゴは誰が作ったのですか? +ロゴはまだない。 +ロゴは下記のリンクよりuwuzuに関連しているコンテンツのみDLしてご利用いただけます。(uwuzuへ飛ぶリンクボタンなどはOK) + +### 色付き +#img ../img/uwuzucolorlogo.svg +### まっしろ +#img ../img/uwuzulogo.svg + + +編集者 : daichimarukana +最終更新日 : 2023/08/18 12:44 \ No newline at end of file diff --git a/server/uwuzuinfo.txt b/server/uwuzuinfo.txt new file mode 100644 index 0000000..84881d4 --- /dev/null +++ b/server/uwuzuinfo.txt @@ -0,0 +1,4 @@ +uwuzu +1.2.5 +2023/08/19 +daichimarukana,putonfps \ No newline at end of file diff --git a/server/uwuzurelease.txt b/server/uwuzurelease.txt new file mode 100644 index 0000000..ae9912c --- /dev/null +++ b/server/uwuzurelease.txt @@ -0,0 +1,105 @@ +## リリースノートだぜぇぇぇぇぇぇい!!!!!!! +ここにはuwuzuの更新情報を載せてくぜぇ~!(いやまてテンションおかしいだろ...) + +## Version 1.2.5 +リリース日:2023/08/19 +全てのデバイスでセッションを終了する機能を実装しました! +パスワードの復元をできるようにしました! + +## Version 1.2.4 +リリース日:2023/08/19 +二段階認証機能を実装しました! +使用ライブラリ - GoogleAuthenticator.php +ライセンス表示↓ +Copyright (c) 2012, Michael Kliewe All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1.Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2.Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +## Version 1.2.3 +リリース日:2023/08/18 +脆弱性の修正をしました。 +追記機能で二回文字列が変換されてしまうバグを修正しました。 +追記機能で絵文字とURLを使用できるようにしました! + +## Version 1.2.2 +リリース日:2023/08/18 +モバイル向けUIを変更しました。 +PutonFPSさんに手伝っていただきAPIの文字がUnicodeになってしまう問題を修正しました。 + +## Version 1.2.1 +リリース日:2023/08/18 +エラーコードをわかりやすくしました。 +追記でHTMLタグが二回変換される問題を修正しました。 + +## Version 1.2.0 +リリース日:2023/08/18 +招待コード機能を実装しました! +開発版のテストや鯖のスペック的にこれ以上ユーザーを受け入れられない場面で使えるかもです! + +## Version 1.1.6 +リリース日:2023/08/18 +API利用時にプロフィールに<h1>などのHTMLタグが含まれていると正しくAPIが取得できない問題を修正しました。 + +## Version 1.1.5 +リリース日:2023/08/18 +無限にログインしてしまう、またはアカウント登録が出来ない可能性のあるバグを修正しました。 +投稿に添付されているURLを新しいタブで開くようにしました。 +その他一部脆弱性を修正しました。 +無駄な処理をすこ~しだけなくしました。 +<h1>から<h3>、<cernter>、<font>を投稿内で使えてしまうと危険だと判断し、投稿の文字装飾機能を廃止しました。 +なお、投稿の文字装飾はMarkdownにし、復活予定です。 + +## Version 1.1.4 +リリース日:2023/08/17 +脆弱性に対しての応急処置です。 +全てのHTMLコードを無効化するよう修正しました。 + +## Version 1.1.3 +リリース日:2023/08/17 +早速脆弱性を見つけ出すとんでもない人間が出始めたので対策をしました() +部分的にUIを変更しました。 + +## Version 1.1.2 +リリース日:2023/08/17 +絵文字文字化けバグを修正しました。(文字コードをUTF8からUTF8mb4にしました。) + +## Version 1.1.1 +リリース日:2023/08/16 +小さなバグを修正しました。 + +## Version 1.1.0 +リリース日:2023/08/16 +超極激ヤババグを修正しました。 +ユーザーIDにハイフンが使えてしまうバグを修正しました。 + +## Version 1.0.0 +リリース日:2023/08/16 +### 初リリース!!!やったね!!!! +機能は以下の通り!遊んでみてね!!! +- 投稿(ユーズしよう!みんなに自分のつぶやきを見せつけるぞ!(?)) +- 投稿に画像添付(最大2枚まで画像を添付できるぞ!位置情報など漏洩しないよう写真にGPS情報が残っていないか厳重に注意しよう...) +- 投稿に動画添付(好きな動画を載せてみよう!) +- 投稿への追記(投稿者が追記できるよ!誤字ったりミスった時はこれを使おう!) +- フォロー(アカウントをフォロー!周りのユーザーとの交流を増やそう!) +- いいね(いいねを押してみよう!気軽にどのくらいの人が「いいね!」と思ったかがわかる優れものさ!) +- 返信(返信だ!少し手抜きで作ったから見た目はよろしくないけど十分使える機能だッ!どちらかと言えばスレッドといったほうがいいかも...) +- カスタム絵文字(自分の思うことを画像で表せるカスタム絵文字!サーバー管理者に追加してほしい絵文字を報告して追加してもらおう!) +- カスタム絵文字総合ページ(PCの人なら左側のメニューからアクセスできるかな!自分のお気に入りの絵文字をここから見つけよう!) +- 投稿の文字装飾(5つだけHTMLタグを開放したんだ!<h1>,<h2>,<h3>,<center>,<font>を使って自由に作ろう!) +- プロフィール(無いと困る機能だけど一応書いとくね~!自分や他のユーザーのプロフィールページだよッ!) +- 設定(無いと一番困る機能!少し操作が複雑だけど頑張って!) +- 検索(ユーザー検索は出来ないけど投稿は検索できるよ!「あの投稿がまた見たい...」というときに使おう!) +- 通知(今のところほぼ使い物にならないけど今後良くしていく予定!待っててくれよっ!) +- アカウント削除(消したくなったタイミングで自分の投稿やアカウントなどの情報を全て消せるよ!) +- API(開発者のみんな~!ちゃんとAPIを実装したよ!内容はユーザー情報の取得!それ以外はまだないけど...まぁ!
/api/userdata-api.php?userid=me2) +- PWA(スマホでも快適に!※動作未確認()) +- ダークモード(暗い夜でも目に優しく!) +他にも小さ~な機能は色々あるけどあまり気にならないだろうから今回はパスで! +ということで最初のバージョンであるuwuzu 1.0.0をお楽しみください! \ No newline at end of file diff --git a/settings/addauthcode.php b/settings/addauthcode.php new file mode 100644 index 0000000..6ecf1c8 --- /dev/null +++ b/settings/addauthcode.php @@ -0,0 +1,253 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +require_once '../authcode/GoogleAuthenticator.php'; + +if(empty($_SESSION['secretcode'])){ + $authcode = new PHPGangsta_GoogleAuthenticator(); + $secret = $authcode->createSecret(); + $_SESSION['secretcode'] = $secret; +}else{ + $authcode = new PHPGangsta_GoogleAuthenticator(); + $secret = $_SESSION['secretcode']; +} + +if( !empty($_POST['btn_submit']) ) { + $chkauthcode = new PHPGangsta_GoogleAuthenticator(); + //二段階認証の確認 + $userauthcode = $_POST['usercode']; + + $discrepancy = 2; + + $checkResult = $chkauthcode->verifyCode($secret, $userauthcode, $discrepancy); + if ($checkResult) { + if( empty($error_message) ) { + $secret = $_SESSION['secretcode']; + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("UPDATE account SET authcode = :authcode WHERE userid = :userid"); + + $stmt->bindValue(':authcode', $secret, PDO::PARAM_STR); + + // ユーザーIDのバインド(WHERE句に必要) + $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + // リダイレクト先のURLへ転送する + $url = 'success.php'; + header('Location: ' . $url, true, 303); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } + } else { + $error_message[] = "二段階認証が出来ませんでした。再度お試しください。"; + } +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +設定 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ + +
+

二段階認証の登録

+ +
    + +

    + +
+ + + getQRCodeGoogleUrl($name, $secret, $title); + ?> + + +

以下の二次元コードより二段階認証をセットアップしてください。

+

セットアップが完了したら入力ボックスにコードを入力して「次へ」ボタンを押してください!
注意:まだ二段階認証の設定は終わっていません。次へを押すと設定が完了します。

+
+ +
+
+

二段階認証コード

+
先程セットアップして出力された6桁のコードを入力してください。
+ +
+ + + +
+
+ + + + + + \ No newline at end of file diff --git a/settings/index.php b/settings/index.php index 36a3532..26d58e9 100644 --- a/settings/index.php +++ b/settings/index.php @@ -25,8 +25,8 @@ $option = null; session_start(); -$userid = $_SESSION['userid']; -$username = $_SESSION['username']; +$userid = htmlentities($_SESSION['userid']); +$username = htmlentities($_SESSION['username']); try { @@ -128,7 +128,7 @@ if( !empty($pdo) ) { $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); - $rerole = $dbh->prepare("SELECT username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime FROM account WHERE userid = :userid"); + $rerole = $dbh->prepare("SELECT username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime, authcode FROM account WHERE userid = :userid"); $rerole->bindValue(':userid', $userid); // SQL実行 @@ -580,6 +580,57 @@ if( !empty($_POST['logout']) ) { exit; } +if( !empty($_POST['auth_on_submit']) ) { + $_SESSION['userid'] = $userid; + // リダイレクト先のURLへ転送する + $url = 'addauthcode.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + +if( !empty($_POST['auth_off_submit']) ) { + if( empty($error_message) ) { + $secret = ""; + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("UPDATE account SET authcode = :authcode WHERE userid = :userid"); + + $stmt->bindValue(':authcode', $secret, PDO::PARAM_STR); + + // ユーザーIDのバインド(WHERE句に必要) + $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} // データベースの接続を閉じる $pdo = null; @@ -647,6 +698,7 @@ $pdo = null; +

パスワード

@@ -654,6 +706,15 @@ $pdo = null; +
+ + + +

下のボタンを押すとすぐに解除されます。確認などはありません。気をつけてください。

+ + diff --git a/settings/success.php b/settings/success.php new file mode 100644 index 0000000..915151c --- /dev/null +++ b/settings/success.php @@ -0,0 +1,156 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} +?> + + + + + + + + + + +設定 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ + +
+

二段階認証登録完了

+ +
    + +

    + +
+ + +

登録完了!セキュリティの強化にご協力いただきありがとうございます!
(≧∇≦)

+ + 戻る +
+
+ + + + + + \ No newline at end of file diff --git a/success.php b/success.php index e355fb1..d2cca35 100644 --- a/success.php +++ b/success.php @@ -1,41 +1,41 @@ - - - - - - - - - - - -アカウント登録完了!!! - <?php echo file_get_contents($servernamefile);?> - - - - - - - -
- - -
-

アカウント作成完了!

-


いぇ~い!

-

88888888888

-

アカウント登録が完了しました!

- - -
-
- - - + + + + + + + + + + + +アカウント登録完了!!! - <?php echo file_get_contents($servernamefile);?> + + + + + + + +
+ + +
+

アカウント作成完了!

+


いぇ~い!

+

88888888888

+

アカウント登録が完了しました!

+ + +
+
+ + + \ No newline at end of file diff --git a/sw.js b/sw.js index a999c24..024cdc2 100644 --- a/sw.js +++ b/sw.js @@ -1,42 +1,42 @@ -var CACHE_NAME = "app_uwuzu"; -var urlsToCache = [ - "home/index.php", - "search/index.php", - "require/botbox.php", - "require/leftbox.php", - "require/rightbox.php", - "require/botbox.php", - "user/index.php", - "settings/index.php", - "rule/terms.php", - "rule/privacypolicy.php", - "rule/uwuzuabout.php", - "index.php", - "login.php", - "new.php", - "check.php", - "success.php", -]; - -self.addEventListener('install', function(event) { - event.waitUntil( - caches.open(CACHE_NAME) - .then( - function(cache){ - return cache.addAll(urlsToCache); - }) - ); -}); - -self.addEventListener('fetch', function(event) { - event.respondWith( - caches.match(event.request) - .then( - function (response) { - if (response) { - return response; - } - return fetch(event.request); - }) - ); +var CACHE_NAME = "app_uwuzu"; +var urlsToCache = [ + "home/index.php", + "search/index.php", + "require/botbox.php", + "require/leftbox.php", + "require/rightbox.php", + "require/botbox.php", + "user/index.php", + "settings/index.php", + "rule/terms.php", + "rule/privacypolicy.php", + "rule/uwuzuabout.php", + "index.php", + "login.php", + "new.php", + "check.php", + "success.php", +]; + +self.addEventListener('install', function(event) { + event.waitUntil( + caches.open(CACHE_NAME) + .then( + function(cache){ + return cache.addAll(urlsToCache); + }) + ); +}); + +self.addEventListener('fetch', function(event) { + event.respondWith( + caches.match(event.request) + .then( + function (response) { + if (response) { + return response; + } + return fetch(event.request); + }) + ); }); \ No newline at end of file diff --git a/ueuse/index.php b/ueuse/index.php index cec3dae..6601196 100644 --- a/ueuse/index.php +++ b/ueuse/index.php @@ -28,8 +28,8 @@ $option = null; session_start(); -$userid = $_SESSION['userid']; -$username = $_SESSION['username']; +$userid = htmlentities($_SESSION['userid']); +$username = htmlentities($_SESSION['username']); try { @@ -113,19 +113,19 @@ if(empty($username)){ exit; } -$ueuseid = str_replace('!', '', $_GET['ueuseid']); -$touserid = str_replace('~', '', $_GET['touser']); +$ueuseid = htmlentities(str_replace('!', '', $_GET['ueuseid'])); +$touserid = htmlentities(str_replace('~', '', $_GET['touser'])); if( !empty($_POST['btn_submit']) ) { - $ueuse = $_POST['ueuse']; + + $ueuse = htmlentities($_POST['ueuse']); // メッセージの入力チェック if( empty($ueuse) ) { $error_message[] = '内容を入力してください。'; } else { - // 文字数を確認 if( 1024 < mb_strlen($ueuse, 'UTF-8') ) { $error_message[] = '内容は1024文字以内で入力してください。'; @@ -154,7 +154,15 @@ if( !empty($_POST['btn_submit']) ) { if ($result) { $photo1 = $uploadedPath; // 保存されたファイルのパスを使用 } else { - $error_message[] = 'アップロード失敗!(1)エラーコード:' . $uploadedFile['error'].'
'.var_dump($_FILES['upload_images']); + $errnum = $uploadedFile['error']; + if($errnum === 1){$errcode = "FILE_DEKASUGUI_PHP_INI_KAKUNIN";} + if($errnum === 2){$errcode = "FILE_DEKASUGUI_HTML_KAKUNIN";} + if($errnum === 3){$errcode = "FILE_SUKOSHIDAKE_UPLOAD";} + if($errnum === 4){$errcode = "FILE_UPLOAD_DEKINAKATTA";} + if($errnum === 6){$errcode = "TMP_FOLDER_NAI";} + if($errnum === 7){$errcode = "FILE_KAKIKOMI_SIPPAI";} + if($errnum === 8){$errcode = "PHPINFO()_KAKUNIN";} + $error_message[] = 'アップロード失敗!(2)エラーコード:' .$errcode.''; } } @@ -186,11 +194,18 @@ if( !empty($_POST['btn_submit']) ) { if ($result2) { $photo2 = $uploadedPath2; // 保存されたファイルのパスを使用 } else { - $error_message[] = 'アップロード失敗!(2)エラーコード:' . $uploadedFile2['error'].'
'.var_dump($_FILES['upload_images']); + $errnum = $uploadedFile2['error']; + if($errnum === 1){$errcode = "FILE_DEKASUGUI_PHP_INI_KAKUNIN";} + if($errnum === 2){$errcode = "FILE_DEKASUGUI_HTML_KAKUNIN";} + if($errnum === 3){$errcode = "FILE_SUKOSHIDAKE_UPLOAD";} + if($errnum === 4){$errcode = "FILE_UPLOAD_DEKINAKATTA";} + if($errnum === 6){$errcode = "TMP_FOLDER_NAI";} + if($errnum === 7){$errcode = "FILE_KAKIKOMI_SIPPAI";} + if($errnum === 8){$errcode = "PHPINFO()_KAKUNIN";} + $error_message[] = 'アップロード失敗!(2)エラーコード:' .$errcode.''; } } - if (empty($_FILES['upload_videos1']['name'])) { $video1 = "none"; } else { @@ -215,13 +230,22 @@ if( !empty($_POST['btn_submit']) ) { if ($result3) { $video1 = $uploadedPath3; // 保存されたファイルのパスを使用 } else { - $error_message[] = 'アップロード失敗!エラーコード:' . $uploadedFile3['error']; + $errnum = $uploadedFile3['error']; + if($errnum === 1){$errcode = "FILE_DEKASUGUI_PHP_INI_KAKUNIN";} + if($errnum === 2){$errcode = "FILE_DEKASUGUI_HTML_KAKUNIN";} + if($errnum === 3){$errcode = "FILE_SUKOSHIDAKE_UPLOAD";} + if($errnum === 4){$errcode = "FILE_UPLOAD_DEKINAKATTA";} + if($errnum === 6){$errcode = "TMP_FOLDER_NAI";} + if($errnum === 7){$errcode = "FILE_KAKIKOMI_SIPPAI";} + if($errnum === 8){$errcode = "PHPINFO()_KAKUNIN";} + $error_message[] = 'アップロード失敗!(2)エラーコード:' .$errcode.''; } } else { $error_message[] = '対応していないファイル形式です!'; } + } if( empty($error_message) ) { @@ -334,7 +358,7 @@ $pdo = null; -ID <?php echo htmlspecialchars($ueuseid, ENT_QUOTES, 'UTF-8'); ?> のユーズ - uwuzu +ID <?php echo htmlentities($ueuseid, ENT_QUOTES, 'UTF-8'); ?> のユーズ - uwuzu @@ -355,7 +379,7 @@ $pdo = null;
- +

画像のEXIF情報(位置情報など)は削除されません。
情報漏洩に気をつけてくださいね…