1
0
mirror of https://github.com/Daichimarukana/uwuzu.git synced 2026-06-05 03:24:41 +00:00

uwuzu version 1.2.17

This commit is contained in:
daichimarukana
2023-09-05 20:48:55 +09:00
parent b607bf1619
commit 0bb6fa1508
11 changed files with 546 additions and 50 deletions
+61 -6
View File
@@ -115,7 +115,7 @@ body{
padding: 8px 10px;
border: none;
border-radius: 10px;
background: #fff;
background: #f5f5f5;
font-family: 'Zen Maru Gothic', sans-serif;
color: rgb(32,32,32);
font-size: 1em;
@@ -795,7 +795,38 @@ main h1{
color:#252525;
font-family: 'BIZ UDPGothic', sans-serif;
}
.select_utl{
margin: 0px;
background-color: #FFF;
border: none;
width: auto;
text-align: center;
display: flex;
}
.select_utl .btn{
display: block;
width: 25%;
line-height: 32px;
margin-left: auto;
margin-right: auto;
overflow-wrap: break-word;
margin-top: 0px;
margin-bottom: 0px;
font-size: 16px;
background: #FFF;
color: #CCC;
text-decoration: none;
font-family: 'BIZ UDPGothic', sans-serif;
font-weight: bold;
display: inline-block;
border: none;
cursor: pointer;
}
.select_utl .btmline{
color: #FFC832;
border-bottom: 1px solid #FFC832;
}
.ueuse{
@@ -1711,8 +1742,8 @@ main h1{
padding-left: 32px;
padding-right: 32px;
border-radius: 15px;
background-color: #f7f7f7;
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset;
background-color: #ffffff;
box-shadow:none;
text-align: left;
}
@@ -3015,7 +3046,7 @@ hr{
color:#252525;
font-family: 'BIZ UDGothic', sans-serif;
word-wrap: break-word;
font-size: 22px;
font-size: 18px;
line-height: 22px;
font-weight: bold;
}
@@ -3026,7 +3057,7 @@ hr{
color:#252525;
font-family: 'BIZ UDGothic', sans-serif;
word-wrap: break-word;
font-size: 16px;
font-size: 14px;
line-height: 22px;
font-weight: bold;
}
@@ -4149,6 +4180,17 @@ hr{
font-weight: normal;
margin-bottom: 6px;
}
.formarea{
padding-top: 16px;
padding-bottom: 16px;
padding-left: 32px;
padding-right: 32px;
border-radius: 0px;
box-shadow:none;
text-align: left;
}
}
/*------------------------------------------------------------------------------------------------------------*/
@@ -4535,7 +4577,7 @@ hr{
padding-top: 8px;
padding-bottom: 8px;
background-color: #0c0c0c;
border: 1px solid #EEE;
border: none;
width: auto;
}
.server_code h1{
@@ -4677,4 +4719,17 @@ hr{
border-bottom: 1px solid #FFC832;
}
.select_utl{
background-color: #0c0c0c;
}
.select_utl .btn{
background: #0c0c0c;
color: #EEE;
}
.select_utl .btmline{
color: #FFC832;
border-bottom: 1px solid #FFC832;
}
}
-19
View File
@@ -38,25 +38,6 @@ $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();
}
// データベースに接続
try {
$option = array(
+105
View File
@@ -0,0 +1,105 @@
<?php
function createUniqId() {
list($msec, $sec) = explode(" ", microtime());
$hashCreateTime = $sec . floor($msec * 1000000);
$hashCreateTime = strrev($hashCreateTime);
return base_convert($hashCreateTime, 10, 36);
}
require('../db.php');
require('view.php');
// データベースに接続
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);
} 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 favorite LIKE :userid ORDER BY datetime DESC LIMIT $offset, $itemsPerPage");
$messageQuery->bindValue(':userid', '%,' . $uwuzuid . '%', PDO::PARAM_STR);
$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, iconname, headname FROM account WHERE userid = :userid");
$userQuery->bindValue(':userid', $message["account"]);
$userQuery->execute();
$userData = $userQuery->fetch();
if ($userData) {
$message['iconname'] = $userData['iconname'];
$message['headname'] = $userData['headname'];
$message['username'] = $userData['username'];
$message['role'] = $userData['role'];
}
$rpQuery = $pdo->prepare("SELECT COUNT(*) as reply_count FROM ueuse WHERE rpuniqid = :rpuniqid");
$rpQuery->bindValue(':rpuniqid', $message['uniqid']);
$rpQuery->execute();
$rpData = $rpQuery->fetch(PDO::FETCH_ASSOC);
if ($rpData){
$message['reply_count'] = $rpData['reply_count'];
}
}
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 '<div class="tokonone" id="noueuse"><p>ユーズがありません</p></div>';
}
$pdo = null;
}
?>
+104
View File
@@ -0,0 +1,104 @@
<?php
function createUniqId() {
list($msec, $sec) = explode(" ", microtime());
$hashCreateTime = $sec . floor($msec * 1000000);
$hashCreateTime = strrev($hashCreateTime);
return base_convert($hashCreateTime, 10, 36);
}
require('../db.php');
require('view.php');
// データベースに接続
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);
} 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 = '' AND (photo1 NOT IN('none') OR photo2 NOT IN('none') OR video1 NOT IN('none')) ORDER BY datetime DESC LIMIT $offset, $itemsPerPage");
$messageQuery->bindValue(':userid', $uwuzuid);
$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, iconname, headname FROM account WHERE userid = :userid");
$userQuery->bindValue(':userid', $message["account"]);
$userQuery->execute();
$userData = $userQuery->fetch();
if ($userData) {
$message['iconname'] = $userData['iconname'];
$message['headname'] = $userData['headname'];
$message['username'] = $userData['username'];
$message['role'] = $userData['role'];
}
$rpQuery = $pdo->prepare("SELECT COUNT(*) as reply_count FROM ueuse WHERE rpuniqid = :rpuniqid");
$rpQuery->bindValue(':rpuniqid', $message['uniqid']);
$rpQuery->execute();
$rpData = $rpQuery->fetch(PDO::FETCH_ASSOC);
if ($rpData){
$message['reply_count'] = $rpData['reply_count'];
}
}
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 '<div class="tokonone" id="noueuse"><p>ユーズがありません</p></div>';
}
$pdo = null;
}
?>
+1 -1
View File
@@ -43,7 +43,7 @@
<h2>Server</h2>
<h3><?php echo file_get_contents($servernamefile);?></h3>
<p><?php echo $domain;?></p>
<a href="/rule/terms">利用規約</a><a href="/rule/privacypolicy">プライバシーポリシー</a>
<a href="/rule/terms">利用規約</a><a href="/rule/privacypolicy">プライバシーポリシー</a><a href="/rule/serverabout">詳細</a>
<h2>Software</h2>
<h3><?php echo $uwuzuinfo[0]?></h3>
<p>Version : <?php echo $uwuzuinfo[1]?></p>
View File
+127
View File
@@ -0,0 +1,127 @@
<!DOCTYPE html>
<?php
require('../db.php');
session_name('uwuzu_s_id');
session_start();
$contactfile = "../server/contact.txt";
$adminfile = "../server/admininfo.txt";
$onlyuserfile = "../server/onlyuser.txt";
$onlyuser = file_get_contents($onlyuserfile);
$servernamefile = "../server/servername.txt";
//-------------------------------------
$domain = $_SERVER['HTTP_HOST'];
//------------------------
$contactfile = "../server/contact.txt";
$termsfile = "../server/uwuzuabout.txt";
$termsdata = file_get_contents($termsfile);
$softwarefile = "../server/uwuzuinfo.txt";
$softwaredata = file_get_contents($softwarefile);
$softwaredata = explode( "\n", $softwaredata );
$cnt = count( $softwaredata );
for( $i=0;$i<$cnt;$i++ ){
$uwuzuinfo[$i] = ($softwaredata[$i]);
}
$serverinfofile = '../server/info.txt';
$serverinfo = file_get_contents($serverinfofile);
// データベースに接続
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);
} 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;
?>
<html lang="ja">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="../css/home.css">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
<title>サーバー情報 - <?php echo file_get_contents($servernamefile);?></title>
</head>
<body>
<div class="topbox">
<div class="logo">
<img src="../img/uwuzulogo.svg">
</div>
</div>
<div class="terms">
<h1>サーバー情報</h1>
<div class="p3"><?php echo file_get_contents($servernamefile);?></div>
<div class="p2c"><?php echo $domain;?></div>
<hr>
<h4>説明</h4>
<p><?php
$sinfo = explode("\n", $serverinfo);
foreach ($sinfo as $info) {
echo $info.'<br>';
}?></p>
<hr>
<h4>管理者情報</h4>
<p>管理者名 : <?php echo htmlspecialchars(file_get_contents($adminfile), ENT_QUOTES, 'UTF-8');?></p>
<p>連絡用メールアドレス : <?php echo htmlspecialchars(file_get_contents($contactfile), ENT_QUOTES, 'UTF-8');?></p>
<hr>
<?php if(!($onlyuser =="true")){?>
<h4>統計情報</h4>
<p>ユーザー数 : <?php echo $count1."<br>"?></p>
<p>投稿数 : <?php echo $count2."<br>"?></p>
<?php }else{?>
<h4>注意</h4>
<p>このサーバーにアカウント登録するには招待コードが必要です。</p>
<?php }?>
<hr>
<h4>サーバーソフトウェア</h4>
<div class="p3"><?php echo $uwuzuinfo[0];?></div>
<div class="p2c">Version : <?php echo $uwuzuinfo[1];?><br>Developer : <?php echo $uwuzuinfo[3];?><br>Last Update : <?php echo $uwuzuinfo[2];?></div>
</div>
</body>
</html>
+1 -1
View File
@@ -1,4 +1,4 @@
uwuzu
1.2.16
1.2.17
2023/09/05
daichimarukana,putonfps
+9
View File
@@ -1,6 +1,15 @@
## リリースノートだぜぇぇぇぇぇぇい!!!!!!!
ここにはuwuzuの更新情報を載せてくぜぇ~!(いやまてテンションおかしいだろ...)
## Version 1.2.17
リリース日:2023/09/05
OpenAI社によるGPTBotのクロールを拒否する設定項目を追加しました。
サーバー設定よりログアウトできない問題を修正しました。
一部スマホ向けUIを変更しました。
ユーザーページに【メディア】欄と【いいね】欄を追加しました!
サーバーの詳細情報表示ページを追加しました!
404ページ・503ページに任意の画像を表示する機能を追加しました(サーバー設定からは設定できません。)
## Version 1.2.16
リリース日:2023/09/05
サーバー設定項目を追加しました。
+36 -7
View File
@@ -21,6 +21,8 @@ $onlyuserfile = "../server/onlyuser.txt";
$err404imagefile = "../server/404imagepath.txt";
$robots = "../robots.txt";
function createUniqId(){
list($msec, $sec) = explode(" ", microtime());
$hashCreateTime = $sec.floor($msec*1000000);
@@ -50,9 +52,6 @@ session_name('uwuzu_s_id');
session_start();
session_regenerate_id(true);
$userid = htmlentities($_SESSION['userid']);
$username = htmlentities($_SESSION['username']);
try {
$option = array(
@@ -235,6 +234,24 @@ if( !empty($_POST['btn_submit']) ) {
}else{
$saveonlyuser = "false";
}
$postrobots = $_POST['robots'];
if($postrobots === "true"){
//GPTBotによるクロールを拒否
$file = fopen($robots, 'w');
$data = "User-agent: GPTBot\nDisallow: /";
fputs($file, $data);
fclose($file);
}else{
//GPTBotによるクロールを許可
$file = fopen($robots, 'w');
$data = "";
fputs($file, $data);
fclose($file);
}
$serverterms = $_POST['serverterms'];
$serverprv = $_POST['serverprv'];
@@ -334,7 +351,7 @@ if( !empty($_POST['code_btn_submit']) ) {
// プリペアドステートメントを削除
$stmt = null;
}
require('../logout/logout.php');
?>
<!DOCTYPE html>
<html lang="ja">
@@ -395,6 +412,19 @@ if( !empty($_POST['code_btn_submit']) ) {
</div>
</div>
<div>
<p>OpenAIによるクロールを拒否するかどうか<br>※robots.txtによりOpenAIからのクロールを拒否するものであり、他のAI企業によるクロールを完全拒否するものではございません。</p>
<div class="switch_button">
<?php if(file_get_contents($robots) === "User-agent: GPTBot\nDisallow: /"){?>
<input id="robots" class="switch_input" type='checkbox' name="robots" value="true" checked/>
<label for="robots" class="switch_label"></label>
<?php }else{?>
<input id="robots" class="switch_input" type='checkbox' name="robots" value="true" />
<label for="robots" class="switch_label"></label>
<?php }?>
</div>
</div>
<div>
<p>利用規約</p>
<textarea id="serverterms" placeholder="しっかり書きましょう" class="inbox" type="text" name="serverterms"><?php $sinfo = explode("\n", $serverterms); foreach ($sinfo as $info) { echo $info; }?></textarea>
@@ -421,11 +451,10 @@ if( !empty($_POST['code_btn_submit']) ) {
<h1>コード:<?php if( !empty($value["code"]) ){ echo htmlentities($value["code"]); }?></h1>
<p>使用状況:<?php if( !empty($value["used"]) ){
if($value["used"] === "none"){
echo "未使用";
echo "未使用<br>発行日時:".$value["datetime"]."";
}elseif($value["used"] === "true"){
echo "使用済み";
echo "使用済み<br>使用日時:".$value["datetime"]."";
}?></p>
<p>発行日時:<?php if( !empty($value["datetime"]) ){ echo htmlentities($value["datetime"]); }?></p>
</div>
<?php }?>
<?php }?>
+88 -2
View File
@@ -519,8 +519,12 @@ $pdo = null;
</form>
</div>
</div>
<hr>
<div class="select_utl">
<button class="btn" id="all_ueuse_btn">ユーズ</button>
<button class="btn" id="media_ueuse_btn">メディア</button>
<button class="btn" id="like_ueuse_btn">いいね</button>
</div>
<hr>
<section class="inner">
@@ -574,12 +578,55 @@ $(document).ready(function() {
var isLoading = false;
var mode = "";
function loadPosts() {
if (isLoading) return;
isLoading = true;
$("#loading").show();
var uwuzuid = '<?php echo $uwuzuid; ?>';
var userid = '<?php echo $userid; ?>';
if(mode == 'allueuse'){
$.ajax({
url: '../nextpage/userpage.php', // PHPファイルへのパス
method: 'GET',
data: { page: pageNumber, id: uwuzuid ,userid: userid},
dataType: 'html',
success: function(response) {
$('#postContainer').append(response);
pageNumber++;
isLoading = false;
$("#loading").hide();
}
});
}else if(mode == 'mediaueuse'){
$.ajax({
url: '../nextpage/usermediapage.php', // PHPファイルへのパス
method: 'GET',
data: { page: pageNumber, id: uwuzuid ,userid: userid},
dataType: 'html',
success: function(response) {
$('#postContainer').append(response);
pageNumber++;
isLoading = false;
$("#loading").hide();
}
});
}else if(mode == 'likeueuse'){
$.ajax({
url: '../nextpage/userlikepage.php', // PHPファイルへのパス
method: 'GET',
data: { page: pageNumber, id: uwuzuid ,userid: userid},
dataType: 'html',
success: function(response) {
$('#postContainer').append(response);
pageNumber++;
isLoading = false;
$("#loading").hide();
}
});
}else{
$('#all_ueuse_btn').addClass('btmline');
$.ajax({
url: '../nextpage/userpage.php', // PHPファイルへのパス
method: 'GET',
@@ -593,6 +640,45 @@ $(document).ready(function() {
}
});
}
}
$("#all_ueuse_btn").on('click',function(event) {
$('#all_ueuse_btn').addClass('btmline');
$('#media_ueuse_btn').removeClass('btmline');
$('#like_ueuse_btn').removeClass('btmline');
event.preventDefault();
$("#postContainer").empty();
pageNumber = 1;
mode = "allueuse";
loadPosts();
});
$("#media_ueuse_btn").on('click',function(event) {
$('#media_ueuse_btn').addClass('btmline');
$('#like_ueuse_btn').removeClass('btmline');
$('#all_ueuse_btn').removeClass('btmline');
event.preventDefault();
$("#postContainer").empty();
pageNumber = 1;
mode = "mediaueuse";
loadPosts();
});
$("#like_ueuse_btn").on('click',function(event) {
$('#like_ueuse_btn').addClass('btmline');
$('#media_ueuse_btn').removeClass('btmline');
$('#all_ueuse_btn').removeClass('btmline');
event.preventDefault();
$("#postContainer").empty();
pageNumber = 1;
mode = "likeueuse";
loadPosts();
});
$('.outer').on('scroll', function() {
var innerHeight = $('.inner').innerHeight(), //内側の要素の高さ