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

uwuzu version 1.2.26

This commit is contained in:
Daichimarukana
2023-11-15 22:07:23 +09:00
parent 884f8043a3
commit c51582a221
42 changed files with 1534 additions and 162 deletions
+3
View File
@@ -71,6 +71,8 @@ PHP 8では事前にGDを有効化しておいてください!(QRコードの
- ueuse(text) 投稿内容保存用 - ueuse(text) 投稿内容保存用
- photo1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 - photo1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用
- photo2(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 - photo2(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用
- photo3(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用
- photo4(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用
- video1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 - video1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用
- datetime(datetime) 投稿日時保存用 - datetime(datetime) 投稿日時保存用
- favorite(text) いいね保存用 - favorite(text) いいね保存用
@@ -128,6 +130,7 @@ PHP 8では事前にGDを有効化しておいてください!(QRコードの
- info.txt : サーバー登録時に表示されるメッセージ(好きな内容) - info.txt : サーバー登録時に表示されるメッセージ(好きな内容)
- privacypolicy.txt : プライバシーポリシー(サーバーのプライバシーポリシーを記載) - privacypolicy.txt : プライバシーポリシー(サーバーのプライバシーポリシーを記載)
- servaricon.txt : サーバーアイコンのURL - servaricon.txt : サーバーアイコンのURL
- servarlogo.txt : サーバーロゴのURL
- servername.txt : サーバー名(てすとさば) - servername.txt : サーバー名(てすとさば)
- serverstop.txt : サーバー停止ページで表示するメッセージ - serverstop.txt : サーバー停止ページで表示するメッセージ
- terms.txt : 利用規約(サーバーの利用規約を記載) - terms.txt : 利用規約(サーバーの利用規約を記載)
+6 -6
View File
@@ -131,13 +131,13 @@ if (htmlentities(isset($_POST['uniqid'])) && htmlentities(isset($_POST['abitext'
$stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)"); $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(':touserid', htmlentities($touserid), PDO::PARAM_STR);
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR); $stmt->bindParam(':msg', htmlentities($msg), PDO::PARAM_STR);
$stmt->bindParam(':url', $url, PDO::PARAM_STR); $stmt->bindParam(':url', htmlentities($url), PDO::PARAM_STR);
$stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR); $stmt->bindParam(':userchk', htmlentities($userchk), PDO::PARAM_STR);
$stmt->bindParam(':title', $title, PDO::PARAM_STR); $stmt->bindParam(':title', htmlentities($title), PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); $stmt->bindParam(':datetime', htmlentities($datetime), PDO::PARAM_STR);
// SQLクエリの実行 // SQLクエリの実行
$res2 = $stmt->execute(); $res2 = $stmt->execute();
+15 -1
View File
@@ -18,6 +18,14 @@ require('db.php');
$servernamefile = "server/servername.txt"; $servernamefile = "server/servername.txt";
$serverlogofile = "server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
$onlyuserfile = "server/onlyuser.txt"; $onlyuserfile = "server/onlyuser.txt";
$onlyuser = file_get_contents($onlyuserfile); $onlyuser = file_get_contents($onlyuserfile);
@@ -198,9 +206,15 @@ $pdo = null;
<div class="leftbox"> <div class="leftbox">
<?php if(!empty($serverlogo_link[1])){ ?>
<div class="logo"> <div class="logo">
<img src="img/uwuzulogo.svg"> <a href="../index.php"><img src=<?php echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8');?>></a>
</div> </div>
<?php }else{?>
<div class="logo">
<a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div>
<?php }?>
<div class="textbox"> <div class="textbox">
<h1>二段階認証</h1> <h1>二段階認証</h1>
+6 -6
View File
@@ -457,13 +457,13 @@ if(isset($_GET['token'])&&isset($_GET['type'])) {
$stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)"); $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(':touserid', htmlentities($touserid), PDO::PARAM_STR);
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR); $stmt->bindParam(':msg', htmlentities($msg), PDO::PARAM_STR);
$stmt->bindParam(':url', $url, PDO::PARAM_STR); $stmt->bindParam(':url', htmlentities($url), PDO::PARAM_STR);
$stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR); $stmt->bindParam(':userchk', htmlentities($userchk), PDO::PARAM_STR);
$stmt->bindParam(':title', $title, PDO::PARAM_STR); $stmt->bindParam(':title', htmlentities($title), PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); $stmt->bindParam(':datetime', htmlentities($datetime), PDO::PARAM_STR);
// SQLクエリの実行 // SQLクエリの実行
$res = $stmt->execute(); $res = $stmt->execute();
+129
View File
@@ -0,0 +1,129 @@
<?php
header("Content-Type: application/json; charset=utf-8");
$mojisizefile = "../server/textsize.txt";
$adminfile = "../server/admininfo.txt";
$servernamefile = "../server/servername.txt";
$servericonfile = "../server/servericon.txt";
$serverinfofile = '../server/info.txt';
$serverinfo = file_get_contents($serverinfofile);
$contactfile = "../server/contact.txt";
$domain = $_SERVER['HTTP_HOST'];
$softwarefile = "../server/uwuzuinfo.txt";
$softwaredata = file_get_contents($softwarefile);
$onlyuserfile = "../server/onlyuser.txt";
$onlyuser = file_get_contents($onlyuserfile);
$softwaredata = explode( "\n", $softwaredata );
$cnt = count( $softwaredata );
for( $i=0;$i<$cnt;$i++ ){
$uwuzuinfo[$i] = ($softwaredata[$i]);
}
require('../db.php');
$datetime = array();
$pdo = null;
session_start();
// データベースに接続
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;
/*-------------------*/
$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($onlyuser === "true"){
$openregit = false;
}elseif($onlyuser === "false"){
$openregit = true;
}else{
$openregit = false;
}
if($onlyuser === "true"){
$invitation_code = true;
}else{
$invitation_code = false;
}
foreach ($notices as $value) {
$notices = array(
"title" => htmlentities($value['title']),
"note" => htmlentities($value['note']),
"editor" => htmlentities($value['account']),
"datetime" => htmlentities($value['datetime']),
);
$notice[] = $notices;
}
$item = [
"server_info" => array(
"server_name" => file_get_contents($servernamefile),
"server_icon" => file_get_contents($servericonfile),
"server_description" => $serverinfo,
"adminstor" => array(
"name" => file_get_contents($adminfile),
"email" => file_get_contents($contactfile),
),
"terms_url" => "https://".$domain."/rule/terms",
"privacy_policy_url" => "https://".$domain."/rule/privacypolicy",
"max_ueuse_length" => (int)htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8'),
"invitation_code" => $invitation_code,
),
"software" => array(
"name" => "uwuzu",
"version" => "".str_replace("\r", '', $uwuzuinfo[1])."",
"repository" => "https://github.com/Daichimarukana/uwuzu",
),
"server_notice" => $notice,
];
$response = $item; // ループ内で $response にデータを追加
echo json_encode($response, JSON_UNESCAPED_UNICODE);
?>
+15 -1
View File
@@ -13,6 +13,14 @@ require('db.php');
$servernamefile = "server/servername.txt"; $servernamefile = "server/servername.txt";
$serverlogofile = "server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
$onlyuserfile = "server/onlyuser.txt"; $onlyuserfile = "server/onlyuser.txt";
$onlyuser = file_get_contents($onlyuserfile); $onlyuser = file_get_contents($onlyuserfile);
@@ -142,9 +150,15 @@ $pdo = null;
<div class="leftbox2"> <div class="leftbox2">
<?php if(!empty($serverlogo_link[1])){ ?>
<div class="logo"> <div class="logo">
<img src="img/uwuzulogo.svg"> <a href="../index.php"><img src=<?php echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8');?>></a>
</div> </div>
<?php }else{?>
<div class="logo">
<a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div>
<?php }?>
<div class="textbox"> <div class="textbox">
<h1>二段階認証</h1> <h1>二段階認証</h1>
+27 -13
View File
@@ -2,6 +2,14 @@
$servernamefile = "server/servername.txt"; $servernamefile = "server/servername.txt";
$serverlogofile = "server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
require('db.php'); require('db.php');
@@ -122,13 +130,13 @@ if( !empty($_POST['btn_submit']) ) {
// 通知用SQL作成 // 通知用SQL作成
$stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)"); $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(':touserid', htmlentities($touserid), PDO::PARAM_STR);
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR); $stmt->bindParam(':msg', htmlentities($msg), PDO::PARAM_STR);
$stmt->bindParam(':url', $url, PDO::PARAM_STR); $stmt->bindParam(':url', htmlentities($url), PDO::PARAM_STR);
$stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR); $stmt->bindParam(':userchk', htmlentities($userchk), PDO::PARAM_STR);
$stmt->bindParam(':title', $title, PDO::PARAM_STR); $stmt->bindParam(':title', htmlentities($title), PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); $stmt->bindParam(':datetime', htmlentities($datetime), PDO::PARAM_STR);
// SQLクエリの実行 // SQLクエリの実行
$res = $stmt->execute(); $res = $stmt->execute();
@@ -189,13 +197,13 @@ if( !empty($_POST['btn_submit']) ) {
// 通知用SQL作成 // 通知用SQL作成
$stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)"); $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(':touserid', htmlentities($touserid), PDO::PARAM_STR);
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR); $stmt->bindParam(':msg', htmlentities($msg), PDO::PARAM_STR);
$stmt->bindParam(':url', $url, PDO::PARAM_STR); $stmt->bindParam(':url', htmlentities($url), PDO::PARAM_STR);
$stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR); $stmt->bindParam(':userchk', htmlentities($userchk), PDO::PARAM_STR);
$stmt->bindParam(':title', $title, PDO::PARAM_STR); $stmt->bindParam(':title', htmlentities($title), PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); $stmt->bindParam(':datetime', htmlentities($datetime), PDO::PARAM_STR);
// SQLクエリの実行 // SQLクエリの実行
$res = $stmt->execute(); $res = $stmt->execute();
@@ -253,9 +261,15 @@ $pdo = null;
<body> <body>
<div class="leftbox"> <div class="leftbox">
<?php if(!empty($serverlogo_link[1])){ ?>
<div class="logo"> <div class="logo">
<img src="img/uwuzulogo.svg"> <a href="../index.php"><img src=<?php echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8');?>></a>
</div> </div>
<?php }else{?>
<div class="logo">
<a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div>
<?php }?>
<div class="textbox"> <div class="textbox">
<h1>二段階認証</h1> <h1>二段階認証</h1>
+21 -7
View File
@@ -2,6 +2,14 @@
$servernamefile = "server/servername.txt"; $servernamefile = "server/servername.txt";
$serverlogofile = "server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
require('db.php'); require('db.php');
@@ -149,13 +157,13 @@ if( !empty($_POST['btn_submit']) ) {
// 通知用SQL作成 // 通知用SQL作成
$stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)"); $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(':touserid', htmlentities($touserid), PDO::PARAM_STR);
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR); $stmt->bindParam(':msg', htmlentities($msg), PDO::PARAM_STR);
$stmt->bindParam(':url', $url, PDO::PARAM_STR); $stmt->bindParam(':url', htmlentities($url), PDO::PARAM_STR);
$stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR); $stmt->bindParam(':userchk', htmlentities($userchk), PDO::PARAM_STR);
$stmt->bindParam(':title', $title, PDO::PARAM_STR); $stmt->bindParam(':title', htmlentities($title), PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); $stmt->bindParam(':datetime', htmlentities($datetime), PDO::PARAM_STR);
// SQLクエリの実行 // SQLクエリの実行
$res = $stmt->execute(); $res = $stmt->execute();
@@ -221,9 +229,15 @@ $pdo = null;
<body> <body>
<div class="leftbox"> <div class="leftbox">
<?php if(!empty($serverlogo_link[1])){ ?>
<div class="logo"> <div class="logo">
<img src="img/uwuzulogo.svg"> <a href="../index.php"><img src=<?php echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8');?>></a>
</div> </div>
<?php }else{?>
<div class="logo">
<a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div>
<?php }?>
<div class="textbox"> <div class="textbox">
<h1>確認</h1> <h1>確認</h1>
+361 -15
View File
@@ -880,7 +880,7 @@ main h1{
} }
.select_utl{ .select_utl{
margin: 0px; margin: 0px;
background-color: var(--background-color); background-color: var(--tl-color);
border: none; border: none;
width: auto; width: auto;
text-align: center; text-align: center;
@@ -896,7 +896,7 @@ main h1{
margin-top: 0px; margin-top: 0px;
margin-bottom: 0px; margin-bottom: 0px;
font-size: 16px; font-size: 16px;
background: var(--background-color); background: var(--tl-color);
color: var(--dark-subtext-color); color: var(--dark-subtext-color);
text-decoration: none; text-decoration: none;
font-family: 'BIZ UDPGothic', sans-serif; font-family: 'BIZ UDPGothic', sans-serif;
@@ -943,7 +943,7 @@ main h1{
object-fit: cover; object-fit: cover;
margin: 0px; margin: 0px;
width: 100%; width: 100%;
height: 10dvh; height: auto;
vertical-align:top; vertical-align:top;
} }
.ueuse{ .ueuse{
@@ -1192,7 +1192,21 @@ main h1{
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
} }
.ueuse .photo3 a{
width: 48%;
margin-left: auto;
margin-right: auto;
}
.ueuse .photo3_btm a{
width: 100%;
margin-left: auto;
margin-right: auto;
}
.ueuse .photo4 a{
width: 48%;
margin-left: auto;
margin-right: auto;
}
.ueuse .photo1 a img{ .ueuse .photo1 a img{
object-fit: cover; object-fit: cover;
@@ -1220,6 +1234,48 @@ main h1{
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
} }
.ueuse .photo3{
display: flex;
flex-wrap: wrap;
}
.ueuse .photo3_btm{
display: block;
width: 100%;
}
.ueuse .photo3 a img{
object-fit: cover;
border-radius: 10px;
margin-top: 12px;
margin-left: auto;
margin-right: auto;
width: 100%;
height: 200px;
border: 1px solid var(--border-color);
}
.ueuse .photo3_btm a img{
object-fit: cover;
border-radius: 10px;
margin-top: 12px;
margin-left: auto;
margin-right: auto;
min-width: 100%;
height: 200px;
border: 1px solid var(--border-color);
}
.ueuse .photo4{
display: flex;
flex-wrap: wrap;
}
.ueuse .photo4 a img{
object-fit: cover;
border-radius: 10px;
margin-top: 12px;
margin-left: auto;
margin-right: auto;
width: 100%;
height: 200px;
border: 1px solid var(--border-color);
}
.ueuse .video1 video{ .ueuse .video1 video{
object-fit: cover; object-fit: cover;
border-radius: 10px; border-radius: 10px;
@@ -1537,7 +1593,7 @@ main h1{
width:auto; width:auto;
padding: 8px auto; padding: 8px auto;
margin-left: auto; margin-left: 6px;
margin-right: 6px; margin-right: 6px;
margin-top: 2px; margin-top: 2px;
margin-bottom: 2px; margin-bottom: 2px;
@@ -1569,7 +1625,7 @@ main h1{
display: block; display: block;
width:auto; width:auto;
margin-left: auto; margin-left: 6px;
margin-right: 6px; margin-right: 6px;
margin-top: 2px; margin-top: 2px;
margin-bottom: 2px; margin-bottom: 2px;
@@ -1602,6 +1658,78 @@ main h1{
transition: all 250ms ease-out; transition: all 250ms ease-out;
} }
.ueuse .favbox .share{
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: var(--sub-color);
border-radius: 50px;
color:var(--main-color);
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 .share: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: var(--main-color);
border-radius: 50px;
color: var(--sub-color);;
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 .share svg {
margin-top: -6px;
margin-right: 0px;
margin-left: -2px;
width: 24px;
height: 24px;
fill: currentColor;
transition: all 250ms ease-out;
}
.ueuse .favbox img{ .ueuse .favbox img{
margin-left: 0px; margin-left: 0px;
width: 24px; width: 24px;
@@ -2515,7 +2643,7 @@ label>input {
margin-left: 0px; margin-left: 0px;
margin-right: auto; margin-right: auto;
margin-top: 2px; margin-top: 2px;
width: 120px; height: 44px;
} }
.terms{ .terms{
@@ -2603,7 +2731,110 @@ label>input {
font-weight: normal; font-weight: normal;
font-size: 16px; font-size: 16px;
text-align: left; text-align: left;
color: var(--background-color)FFF; color: var(--background-color);
}
.terms .fxbx{
display: flex;
}
.terms .fxbx .new{
height: fit-content;
margin:0px;
margin-right: 6px;
margin-top: auto;
margin-bottom: auto;
padding:0px 8px;
border: 1px solid #00b96c;
text-align: center;
border-radius: 15px;
}
.terms .fxbx .new p{
line-height: 12px;
margin-top: 4px;
margin-bottom: 4px;
margin-left: auto;
margin-right: auto;
color: #00b96c;
font-size: 14px;
font-family: 'BIZ UDGothic', sans-serif;
font-weight: normal;
vertical-align:middle;
align-items: center;
}
.terms .fxbx .fix{
height: fit-content;
margin:0px;
margin-right: 6px;
margin-top: auto;
margin-bottom: auto;
padding:0px 8px;
border: 1px solid #e6890f;
text-align: center;
border-radius: 15px;
}
.terms .fxbx .fix p{
line-height: 12px;
margin-top: 4px;
margin-bottom: 4px;
margin-left: auto;
margin-right: auto;
color: #e6890f;
font-size: 14px;
font-family: 'BIZ UDGothic', sans-serif;
font-weight: normal;
vertical-align:middle;
align-items: center;
}
.terms .fxbx .chg{
height: fit-content;
margin:0px;
margin-right: 6px;
margin-top: auto;
margin-bottom: auto;
padding:0px 8px;
border: 1px solid #1d9bf0;
text-align: center;
border-radius: 15px;
}
.terms .fxbx .chg p{
line-height: 12px;
margin-top: 4px;
margin-bottom: 4px;
margin-left: auto;
margin-right: auto;
color: #1d9bf0;
font-size: 14px;
font-family: 'BIZ UDGothic', sans-serif;
font-weight: normal;
vertical-align:middle;
align-items: center;
}
.terms .fxbx .del{
height: fit-content;
margin:0px;
margin-right: 6px;
margin-top: auto;
margin-bottom: auto;
padding:0px 8px;
border: 1px solid #FF4848;
text-align: center;
border-radius: 15px;
}
.terms .fxbx .del p{
line-height: 12px;
margin-top: 4px;
margin-bottom: 4px;
margin-left: auto;
margin-right: auto;
color: #FF4848;
font-size: 14px;
font-family: 'BIZ UDGothic', sans-serif;
font-weight: normal;
vertical-align:middle;
align-items: center;
}
.terms .space_tab{
margin-left: 45px;
} }
@@ -2618,7 +2849,6 @@ label>input {
font-family: 'BIZ UDPGothic', sans-serif; font-family: 'BIZ UDPGothic', sans-serif;
font-weight: normal; font-weight: normal;
} }
.terms .p3{ .terms .p3{
margin-top: 24px; margin-top: 24px;
text-align: left; text-align: left;
@@ -2759,6 +2989,15 @@ label>input {
overflow-wrap:break-word; overflow-wrap:break-word;
color: var(--text-color); color: var(--text-color);
} }
.rightbox .noticebox a{
margin-top: auto;
margin-bottom: auto;
font-size: 16px;
color:var(--link-color);
text-decoration: none;
font-family: 'BIZ UDPGothic', sans-serif;
font-weight: bold;
}
.rightbox .noticebox img{ .rightbox .noticebox img{
margin-top: auto; margin-top: auto;
@@ -3967,7 +4206,7 @@ summary {
.f_c_area{ .f_c_area{
margin: 0px; margin: 0px;
background-color: var(--background-color); background-color: var(--tl-color);
border: none; border: none;
width: auto; width: auto;
text-align: center; text-align: center;
@@ -4493,7 +4732,7 @@ summary {
width:auto; width:auto;
padding: 8px auto; padding: 8px auto;
margin-left: auto; margin-left: 6px;
margin-right: 6px; margin-right: 6px;
margin-top: 2px; margin-top: 2px;
margin-bottom: 2px; margin-bottom: 2px;
@@ -4525,7 +4764,7 @@ summary {
display: block; display: block;
width:auto; width:auto;
margin-left: auto; margin-left: 6px;
margin-right: 6px; margin-right: 6px;
margin-top: 2px; margin-top: 2px;
margin-bottom: 2px; margin-bottom: 2px;
@@ -4560,6 +4799,70 @@ summary {
transition: all 250ms ease-out; transition: all 250ms ease-out;
} }
.ueuse .favbox .share{
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: var(--sub-color);
border-radius: 50px;
color:var(--main-color);
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 .share: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: var(--main-color);
border-radius: 50px;
color: var(--sub-color);;
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{ .ueuse{
animation: slideInY 0.5s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards; animation: slideInY 0.5s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards;
margin: 12px; margin: 12px;
@@ -4906,14 +5209,45 @@ summary {
display: flex; display: flex;
} }
.ueuse .photo2 img{ .ueuse .photo2 a img{
object-fit: cover; object-fit: cover;
border-radius: 10px; border-radius: 10px;
margin-top: 12px; margin-top: 12px;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
width: 47%; width: 100%;
height: auto; height: 25dvh;
border: 1px solid var(--border-color);
}
.ueuse .photo3 a img{
object-fit: cover;
border-radius: 10px;
margin-top: 12px;
margin-left: auto;
margin-right: auto;
width: 100%;
height: 20dvh;
border: 1px solid var(--border-color);
}
.ueuse .photo3_btm a img{
object-fit: cover;
border-radius: 10px;
margin-top: 6px;
margin-left: auto;
margin-right: auto;
min-width: 100%;
height: 25dvh;
border: 1px solid var(--border-color);
}
.ueuse .photo4 a img{
object-fit: cover;
border-radius: 10px;
margin-top: 8px;
margin-left: auto;
margin-right: auto;
width: 100%;
height: 20dvh;
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
} }
@@ -5128,6 +5462,7 @@ summary {
margin-top: 12px; margin-top: 12px;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 48px
} }
.modal-content .fbtn{ .modal-content .fbtn{
@@ -5596,6 +5931,14 @@ summary {
background-color: var(--main-color); background-color: var(--main-color);
color: var(--sub-color);; color: var(--sub-color);;
} }
.ueuse .favbox .share{
background-color: var(--dark-background-color);
color:var(--main-color);
}
.ueuse .favbox .share:hover{
background-color: var(--main-color);
color: var(--sub-color);;
}
.ueuse hr{ .ueuse hr{
border-top: 1px solid var(--dark-subtext-color); border-top: 1px solid var(--dark-subtext-color);
} }
@@ -5755,6 +6098,9 @@ summary {
.rightbox .noticebox p{ .rightbox .noticebox p{
color: var(--background-color); color: var(--background-color);
} }
.rightbox .noticebox a{
color:var(--main-color);
}
.rightbox .noticebox .makeup p{ .rightbox .noticebox .makeup p{
color:var(--sub-color);; color:var(--sub-color);;
+155 -6
View File
@@ -296,6 +296,87 @@ if( !empty($_POST['btn_submit']) ) {
} }
} }
if (empty($_FILES['upload_images3']['name'])) {
$photo3 = "none";
} else {
if (empty($_FILES['upload_images2']['name'])){
$error_message[] = '画像2から画像を選択してください!!!';
}
// アップロードされたファイル情報
$uploadedFile3 = $_FILES['upload_images3'];
if( 10000000 < $uploadedFile3["size"] ) {
$error_message[] = 'ファイルサイズが大きすぎます!';
}
// アップロードされたファイルの拡張子を取得
$extension3 = pathinfo($uploadedFile3['name'], PATHINFO_EXTENSION);
// 新しいファイル名を生成(uniqid + 拡張子)
$newFilename3 = uniqid() . '-'.$userid.'.' . $extension3;
// 保存先のパスを生成
$uploadedPath3 = '../ueuseimages/' . $newFilename3;
// ファイルを移動
$result3 = move_uploaded_file($uploadedFile3['tmp_name'], $uploadedPath3);
if ($result3) {
$photo3 = $uploadedPath3; // 保存されたファイルのパスを使用
} else {
$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[] = 'アップロード失敗!(3)エラーコード:' .$errcode.'';
}
}
if (empty($_FILES['upload_images4']['name'])) {
$photo4 = "none";
} else {
if (empty($_FILES['upload_images3']['name'])){
$error_message[] = '画像3から画像を選択してください!!!';
}
// アップロードされたファイル情報
$uploadedFile4 = $_FILES['upload_images4'];
if( 10000000 < $uploadedFile4["size"] ) {
$error_message[] = 'ファイルサイズが大きすぎます!';
}
// アップロードされたファイルの拡張子を取得
$extension4 = pathinfo($uploadedFile4['name'], PATHINFO_EXTENSION);
// 新しいファイル名を生成(uniqid + 拡張子)
$newFilename4 = uniqid() . '-'.$userid.'.' . $extension4;
// 保存先のパスを生成
$uploadedPath4 = '../ueuseimages/' . $newFilename4;
// ファイルを移動
$result4 = move_uploaded_file($uploadedFile4['tmp_name'], $uploadedPath4);
if ($result4) {
$photo4 = $uploadedPath4; // 保存されたファイルのパスを使用
} else {
$errnum = $uploadedFile4['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[] = 'アップロード失敗!(4)エラーコード:' .$errcode.'';
}
}
if (empty($_FILES['upload_videos1']['name'])) { if (empty($_FILES['upload_videos1']['name'])) {
$video1 = "none"; $video1 = "none";
} else { } else {
@@ -350,7 +431,7 @@ if( !empty($_POST['btn_submit']) ) {
try { try {
// SQL作成 // SQL作成
$stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, ueuse, photo1, photo2, video1, datetime, abi, nsfw) VALUES (:username, :account, :uniqid, :ueuse, :photo1, :photo2, :video1, :datetime, :abi, :nsfw)"); $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, ueuse, photo1, photo2, photo3, photo4, video1, datetime, abi, nsfw) VALUES (:username, :account, :uniqid, :ueuse, :photo1, :photo2, :photo3, :photo4, :video1, :datetime, :abi, :nsfw)");
$stmt->bindParam(':username', $username, PDO::PARAM_STR); $stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':account', $userid, PDO::PARAM_STR); $stmt->bindParam(':account', $userid, PDO::PARAM_STR);
@@ -359,6 +440,8 @@ if( !empty($_POST['btn_submit']) ) {
$stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR); $stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR);
$stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR); $stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR);
$stmt->bindParam(':photo3', $photo3, PDO::PARAM_STR);
$stmt->bindParam(':photo4', $photo4, PDO::PARAM_STR);
$stmt->bindParam(':video1', $video1, PDO::PARAM_STR); $stmt->bindParam(':video1', $video1, PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR);
@@ -389,13 +472,13 @@ if( !empty($_POST['btn_submit']) ) {
$stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)"); $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(':touserid', htmlentities($touserid), PDO::PARAM_STR);
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR); $stmt->bindParam(':msg', $msg, PDO::PARAM_STR);
$stmt->bindParam(':url', $url, PDO::PARAM_STR); $stmt->bindParam(':url', htmlentities($url), PDO::PARAM_STR);
$stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR); $stmt->bindParam(':userchk', htmlentities($userchk), PDO::PARAM_STR);
$stmt->bindParam(':title', $title, PDO::PARAM_STR); $stmt->bindParam(':title', htmlentities($title), PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); $stmt->bindParam(':datetime', htmlentities($datetime), PDO::PARAM_STR);
// SQLクエリの実行 // SQLクエリの実行
$res = $stmt->execute(); $res = $stmt->execute();
@@ -468,6 +551,9 @@ if ("serviceWorker" in navigator) {
<body> <body>
<div> <div>
<div id="clipboard" class="online" style="display:none;">
<p>🗒️📎 ユーズのURLをコピーしました!</p>
</div>
<div id="offline" class="offline" style="display:none;"> <div id="offline" class="offline" style="display:none;">
<p>🦖💨 インターネットへの接続が切断されました...</p> <p>🦖💨 インターネットへの接続が切断されました...</p>
</div> </div>
@@ -506,6 +592,14 @@ if ("serviceWorker" in navigator) {
<svg><use xlink:href="../img/sysimage/image_1.svg#image"></use></svg> <svg><use xlink:href="../img/sysimage/image_1.svg#image"></use></svg>
<input type="file" name="upload_images2" id ="upload_images2" accept="image/*"> <input type="file" name="upload_images2" id ="upload_images2" accept="image/*">
</label> </label>
<label for="upload_images3" id="images3" style="display: none" title="画像3">
<svg><use xlink:href="../img/sysimage/image_1.svg#image"></use></svg>
<input type="file" name="upload_images3" id ="upload_images3" accept="image/*">
</label>
<label for="upload_images4" id="images4" style="display: none" title="画像4">
<svg><use xlink:href="../img/sysimage/image_1.svg#image"></use></svg>
<input type="file" name="upload_images4" id ="upload_images4" accept="image/*">
</label>
<label for="upload_videos1" id="videos1" title="動画1"> <label for="upload_videos1" id="videos1" title="動画1">
<svg><use xlink:href="../img/sysimage/video_1.svg#video"></use></svg> <svg><use xlink:href="../img/sysimage/video_1.svg#video"></use></svg>
<input type="file" name="upload_videos1" id ="upload_videos1" accept="video/*"> <input type="file" name="upload_videos1" id ="upload_videos1" accept="video/*">
@@ -532,6 +626,29 @@ if ("serviceWorker" in navigator) {
}); });
file_reader.readAsText(e.target.files[0]); file_reader.readAsText(e.target.files[0]);
}); });
document.getElementById("upload_images4").addEventListener('change', function(e){
var file_reader = new FileReader();
// ファイルの読み込みを行ったら実行
file_reader.addEventListener('load', function(e) {
const element = document.querySelector('#images4');
const createElement = '<p>画像を選択しました。</p>';
element.insertAdjacentHTML('afterend', createElement);
});
file_reader.readAsText(e.target.files[0]);
});
document.getElementById("upload_images3").addEventListener('change', function(e){
var file_reader = new FileReader();
// ファイルの読み込みを行ったら実行
file_reader.addEventListener('load', function(e) {
const element = document.querySelector('#images3');
const createElement = '<p>画像を選択しました。</p>';
element.insertAdjacentHTML('afterend', createElement);
$("#images4").show();
});
file_reader.readAsText(e.target.files[0]);
});
document.getElementById("upload_images2").addEventListener('change', function(e){ document.getElementById("upload_images2").addEventListener('change', function(e){
var file_reader = new FileReader(); var file_reader = new FileReader();
// ファイルの読み込みを行ったら実行 // ファイルの読み込みを行ったら実行
@@ -539,6 +656,7 @@ if ("serviceWorker" in navigator) {
const element = document.querySelector('#images2'); const element = document.querySelector('#images2');
const createElement = '<p>画像を選択しました。</p>'; const createElement = '<p>画像を選択しました。</p>';
element.insertAdjacentHTML('afterend', createElement); element.insertAdjacentHTML('afterend', createElement);
$("#images3").show();
}); });
file_reader.readAsText(e.target.files[0]); file_reader.readAsText(e.target.files[0]);
}); });
@@ -829,6 +947,37 @@ $(document).on('click', '.addabi', function (event) {
} }
} }
$(document).on('click', '.share', function (event) {
var domain = "<?php echo $domain;?>";
var share_uniqid = $(this).attr('data-uniqid');
var share_userid = $(this).attr('data-userid');
if (typeof navigator.share === 'undefined') {
navigator.clipboard.writeText("https://"+domain+"/!"+share_uniqid+"")
$("#clipboard").show();
window.setTimeout(function(){
$("#clipboard").hide();
}, 5000);
return;
}
var shareData = {
title: ''+share_userid+'さんのID '+share_uniqid+' のユーズ - uwuzu',
text: '',
url: "https://"+domain+"/!"+share_uniqid+"",
};
navigator.share(shareData)
.then(function () {
// シェア完了後の処理
})
.catch(function (error) {
// シェア失敗時の処理
});
});
var osho_gats = document.getElementById('osho_gats'); var osho_gats = document.getElementById('osho_gats');
$(document).on('click', '.os_exit_btn', function (event) { $(document).on('click', '.os_exit_btn', function (event) {
document.cookie = "event=done; max-age=86400"; document.cookie = "event=done; max-age=86400";
+154 -8
View File
@@ -295,6 +295,86 @@ if( !empty($_POST['btn_submit']) ) {
} }
} }
if (empty($_FILES['upload_images3']['name'])) {
$photo3 = "none";
} else {
if (empty($_FILES['upload_images2']['name'])){
$error_message[] = '画像2から画像を選択してください!!!';
}
// アップロードされたファイル情報
$uploadedFile3 = $_FILES['upload_images3'];
if( 10000000 < $uploadedFile3["size"] ) {
$error_message[] = 'ファイルサイズが大きすぎます!';
}
// アップロードされたファイルの拡張子を取得
$extension3 = pathinfo($uploadedFile3['name'], PATHINFO_EXTENSION);
// 新しいファイル名を生成(uniqid + 拡張子)
$newFilename3 = uniqid() . '-'.$userid.'.' . $extension3;
// 保存先のパスを生成
$uploadedPath3 = '../ueuseimages/' . $newFilename3;
// ファイルを移動
$result3 = move_uploaded_file($uploadedFile3['tmp_name'], $uploadedPath3);
if ($result3) {
$photo3 = $uploadedPath3; // 保存されたファイルのパスを使用
} else {
$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[] = 'アップロード失敗!(3)エラーコード:' .$errcode.'';
}
}
if (empty($_FILES['upload_images4']['name'])) {
$photo4 = "none";
} else {
if (empty($_FILES['upload_images3']['name'])){
$error_message[] = '画像3から画像を選択してください!!!';
}
// アップロードされたファイル情報
$uploadedFile4 = $_FILES['upload_images4'];
if( 10000000 < $uploadedFile4["size"] ) {
$error_message[] = 'ファイルサイズが大きすぎます!';
}
// アップロードされたファイルの拡張子を取得
$extension4 = pathinfo($uploadedFile4['name'], PATHINFO_EXTENSION);
// 新しいファイル名を生成(uniqid + 拡張子)
$newFilename4 = uniqid() . '-'.$userid.'.' . $extension4;
// 保存先のパスを生成
$uploadedPath4 = '../ueuseimages/' . $newFilename4;
// ファイルを移動
$result4 = move_uploaded_file($uploadedFile4['tmp_name'], $uploadedPath4);
if ($result4) {
$photo4 = $uploadedPath4; // 保存されたファイルのパスを使用
} else {
$errnum = $uploadedFile4['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[] = 'アップロード失敗!(4)エラーコード:' .$errcode.'';
}
}
if (empty($_FILES['upload_videos1']['name'])) { if (empty($_FILES['upload_videos1']['name'])) {
$video1 = "none"; $video1 = "none";
} else { } else {
@@ -349,7 +429,7 @@ if( !empty($_POST['btn_submit']) ) {
try { try {
// SQL作成 // SQL作成
$stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, ueuse, photo1, photo2, video1, datetime, abi, nsfw) VALUES (:username, :account, :uniqid, :ueuse, :photo1, :photo2, :video1, :datetime, :abi, :nsfw)"); $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, ueuse, photo1, photo2, photo3, photo4, video1, datetime, abi, nsfw) VALUES (:username, :account, :uniqid, :ueuse, :photo1, :photo2, :photo3, :photo4, :video1, :datetime, :abi, :nsfw)");
$stmt->bindParam(':username', $username, PDO::PARAM_STR); $stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':account', $userid, PDO::PARAM_STR); $stmt->bindParam(':account', $userid, PDO::PARAM_STR);
@@ -358,6 +438,8 @@ if( !empty($_POST['btn_submit']) ) {
$stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR); $stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR);
$stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR); $stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR);
$stmt->bindParam(':photo3', $photo3, PDO::PARAM_STR);
$stmt->bindParam(':photo4', $photo4, PDO::PARAM_STR);
$stmt->bindParam(':video1', $video1, PDO::PARAM_STR); $stmt->bindParam(':video1', $video1, PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR);
@@ -389,13 +471,13 @@ if( !empty($_POST['btn_submit']) ) {
$stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)"); $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(':touserid', htmlentities($touserid), PDO::PARAM_STR);
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR); $stmt->bindParam(':msg', $msg, PDO::PARAM_STR);
$stmt->bindParam(':url', $url, PDO::PARAM_STR); $stmt->bindParam(':url', htmlentities($url), PDO::PARAM_STR);
$stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR); $stmt->bindParam(':userchk', htmlentities($userchk), PDO::PARAM_STR);
$stmt->bindParam(':title', $title, PDO::PARAM_STR); $stmt->bindParam(':title', htmlentities($title), PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); $stmt->bindParam(':datetime', htmlentities($datetime), PDO::PARAM_STR);
// SQLクエリの実行 // SQLクエリの実行
$res = $stmt->execute(); $res = $stmt->execute();
@@ -468,6 +550,9 @@ if ("serviceWorker" in navigator) {
<body> <body>
<div> <div>
<div id="clipboard" class="online" style="display:none;">
<p>🗒️📎 ユーズのURLをコピーしました!</p>
</div>
<div id="offline" class="offline" style="display:none;"> <div id="offline" class="offline" style="display:none;">
<p>🦖💨 インターネットへの接続が切断されました...</p> <p>🦖💨 インターネットへの接続が切断されました...</p>
</div> </div>
@@ -532,6 +617,14 @@ if ("serviceWorker" in navigator) {
<svg><use xlink:href="../img/sysimage/image_1.svg#image"></use></svg> <svg><use xlink:href="../img/sysimage/image_1.svg#image"></use></svg>
<input type="file" name="upload_images2" id ="upload_images2" accept="image/*"> <input type="file" name="upload_images2" id ="upload_images2" accept="image/*">
</label> </label>
<label for="upload_images3" id="images3" style="display: none" title="画像3">
<svg><use xlink:href="../img/sysimage/image_1.svg#image"></use></svg>
<input type="file" name="upload_images3" id ="upload_images3" accept="image/*">
</label>
<label for="upload_images4" id="images4" style="display: none" title="画像4">
<svg><use xlink:href="../img/sysimage/image_1.svg#image"></use></svg>
<input type="file" name="upload_images4" id ="upload_images4" accept="image/*">
</label>
<label for="upload_videos1" id="videos1" title="動画1"> <label for="upload_videos1" id="videos1" title="動画1">
<svg><use xlink:href="../img/sysimage/video_1.svg#video"></use></svg> <svg><use xlink:href="../img/sysimage/video_1.svg#video"></use></svg>
<input type="file" name="upload_videos1" id ="upload_videos1" accept="video/*"> <input type="file" name="upload_videos1" id ="upload_videos1" accept="video/*">
@@ -558,6 +651,29 @@ if ("serviceWorker" in navigator) {
}); });
file_reader.readAsText(e.target.files[0]); file_reader.readAsText(e.target.files[0]);
}); });
document.getElementById("upload_images4").addEventListener('change', function(e){
var file_reader = new FileReader();
// ファイルの読み込みを行ったら実行
file_reader.addEventListener('load', function(e) {
const element = document.querySelector('#images4');
const createElement = '<p>画像を選択しました。</p>';
element.insertAdjacentHTML('afterend', createElement);
});
file_reader.readAsText(e.target.files[0]);
});
document.getElementById("upload_images3").addEventListener('change', function(e){
var file_reader = new FileReader();
// ファイルの読み込みを行ったら実行
file_reader.addEventListener('load', function(e) {
const element = document.querySelector('#images3');
const createElement = '<p>画像を選択しました。</p>';
element.insertAdjacentHTML('afterend', createElement);
$("#images4").show();
});
file_reader.readAsText(e.target.files[0]);
});
document.getElementById("upload_images2").addEventListener('change', function(e){ document.getElementById("upload_images2").addEventListener('change', function(e){
var file_reader = new FileReader(); var file_reader = new FileReader();
// ファイルの読み込みを行ったら実行 // ファイルの読み込みを行ったら実行
@@ -565,6 +681,7 @@ if ("serviceWorker" in navigator) {
const element = document.querySelector('#images2'); const element = document.querySelector('#images2');
const createElement = '<p>画像を選択しました。</p>'; const createElement = '<p>画像を選択しました。</p>';
element.insertAdjacentHTML('afterend', createElement); element.insertAdjacentHTML('afterend', createElement);
$("#images3").show();
}); });
file_reader.readAsText(e.target.files[0]); file_reader.readAsText(e.target.files[0]);
}); });
@@ -853,7 +970,38 @@ $(document).ready(function() {
$("#offline").show(); $("#offline").show();
} }
} }
});
$(document).on('click', '.share', function (event) {
var domain = "<?php echo $domain;?>";
var share_uniqid = $(this).attr('data-uniqid');
var share_userid = $(this).attr('data-userid');
if (typeof navigator.share === 'undefined') {
navigator.clipboard.writeText("https://"+domain+"/!"+share_uniqid+"")
$("#clipboard").show();
window.setTimeout(function(){
$("#clipboard").hide();
}, 5000);
return;
}
var shareData = {
title: ''+share_userid+'さんのID '+share_uniqid+' のユーズ - uwuzu',
text: '',
url: "https://"+domain+"/!"+share_uniqid+"",
};
navigator.share(shareData)
.then(function () {
// シェア完了後の処理
})
.catch(function (error) {
// シェア失敗時の処理
});
});
var osho_gats = document.getElementById('osho_gats'); var osho_gats = document.getElementById('osho_gats');
$(document).on('click', '.os_exit_btn', function (event) { $(document).on('click', '.os_exit_btn', function (event) {
@@ -861,7 +1009,5 @@ $(document).ready(function() {
osho_gats.style.display = 'none'; osho_gats.style.display = 'none';
}); });
});
</script> </script>
</html> </html>
+1
View File
@@ -0,0 +1 @@
<svg version="1.1" id="share_1" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M720-80q-50 0-85-35t-35-85q0-7 1-14.5t3-13.5L322-392q-17 15-38 23.5t-44 8.5q-50 0-85-35t-35-85q0-50 35-85t85-35q23 0 44 8.5t38 23.5l282-164q-2-6-3-13.5t-1-14.5q0-50 35-85t85-35q50 0 85 35t35 85q0 50-35 85t-85 35q-23 0-44-8.5T638-672L356-508q2 6 3 13.5t1 14.5q0 7-1 14.5t-3 13.5l282 164q17-15 38-23.5t44-8.5q50 0 85 35t35 85q0 50-35 85t-85 35Zm0-640q17 0 28.5-11.5T760-760q0-17-11.5-28.5T720-800q-17 0-28.5 11.5T680-760q0 17 11.5 28.5T720-720ZM240-440q17 0 28.5-11.5T280-480q0-17-11.5-28.5T240-520q-17 0-28.5 11.5T200-480q0 17 11.5 28.5T240-440Zm480 280q17 0 28.5-11.5T760-200q0-17-11.5-28.5T720-240q-17 0-28.5 11.5T680-200q0 17 11.5 28.5T720-160Zm0-600ZM240-480Zm480 280Z"/></svg>

After

Width:  |  Height:  |  Size: 804 B

+15 -1
View File
@@ -56,6 +56,14 @@ $servericonfile = "server/servericon.txt";
$servernamefile = "server/servername.txt"; $servernamefile = "server/servername.txt";
$serverlogofile = "server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
//------------------------ //------------------------
$serverinfofile = 'server/info.txt'; $serverinfofile = 'server/info.txt';
@@ -129,9 +137,15 @@ if ("serviceWorker" in navigator) {
<body> <body>
<div class="leftbox"> <div class="leftbox">
<?php if(!empty($serverlogo_link[1])){ ?>
<div class="logo"> <div class="logo">
<img src="img/uwuzulogo.svg"> <a href="../index.php"><img src=<?php echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8');?>></a>
</div> </div>
<?php }else{?>
<div class="logo">
<a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div>
<?php }?>
<div class="textbox"> <div class="textbox">
+1
View File
@@ -27,3 +27,4 @@ console.log(
"", "",
"uwuzuサーバー運営者及びuwuzu開発者がCookie情報等を要求することはありません。", "uwuzuサーバー運営者及びuwuzu開発者がCookie情報等を要求することはありません。",
); );
+15 -1
View File
@@ -2,6 +2,14 @@
$servernamefile = "server/servername.txt"; $servernamefile = "server/servername.txt";
$serverlogofile = "server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
require('db.php'); require('db.php');
@@ -190,9 +198,15 @@ $pdo = null;
<body> <body>
<div class="leftbox"> <div class="leftbox">
<?php if(!empty($serverlogo_link[1])){ ?>
<div class="logo"> <div class="logo">
<img src="img/uwuzulogo.svg"> <a href="../index.php"><img src=<?php echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8');?>></a>
</div> </div>
<?php }else{?>
<div class="logo">
<a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div>
<?php }?>
<div class="textbox"> <div class="textbox">
<h1>ログイン</h1> <h1>ログイン</h1>
+15 -1
View File
@@ -18,6 +18,14 @@ require('db.php');
$servernamefile = "server/servername.txt"; $servernamefile = "server/servername.txt";
$serverlogofile = "server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
$onlyuserfile = "server/onlyuser.txt"; $onlyuserfile = "server/onlyuser.txt";
$onlyuser = file_get_contents($onlyuserfile); $onlyuser = file_get_contents($onlyuserfile);
@@ -474,9 +482,15 @@ $pdo = null;
<div class="leftbox"> <div class="leftbox">
<?php if(!empty($serverlogo_link[1])){ ?>
<div class="logo"> <div class="logo">
<img src="img/uwuzulogo.svg"> <a href="../index.php"><img src=<?php echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8');?>></a>
</div> </div>
<?php }else{?>
<div class="logo">
<a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div>
<?php }?>
<div class="textbox"> <div class="textbox">
<h1>アカウント登録</h1> <h1>アカウント登録</h1>
+2 -2
View File
@@ -26,8 +26,8 @@ class MessageDisplay {
echo ' </div>'; echo ' </div>';
// 投稿内のHTMLコードを表示する部分 // 投稿内のHTMLコードを表示する部分
echo ' <h3>' . htmlentities($this->value['title']) . '</h3>'; echo ' <h3>' . $this->value['title'] . '</h3>';
echo ' <p>' . nl2br(htmlentities($this->value['msg'])) . '</p>'; echo ' <p>' . nl2br($this->value['msg']) . '</p>';
echo ' <a href="' . htmlentities($this->value['url']) . '">詳細をみる</a>'; echo ' <a href="' . htmlentities($this->value['url']) . '">詳細をみる</a>';
echo '</div>'; echo '</div>';
+8 -1
View File
@@ -54,7 +54,14 @@ if (!empty($pdo)) {
$userQuery->execute(); $userQuery->execute();
$userData = $userQuery->fetch(); $userData = $userQuery->fetch();
$messageQuery = $dbh->prepare("SELECT * 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 = $dbh->prepare("SELECT * FROM ueuse WHERE account = :userid AND rpuniqid = '' AND (
(photo1 IS NOT NULL AND photo1 != '' AND photo1 != 'none') OR
(photo2 IS NOT NULL AND photo2 != '' AND photo2 != 'none') OR
(photo3 IS NOT NULL AND photo3 != '' AND photo3 != 'none') OR
(photo4 IS NOT NULL AND photo4 != '' AND photo4 != 'none') OR
(video1 IS NOT NULL AND video1 != '' AND video1 != 'none')
) ORDER BY datetime DESC LIMIT $offset, $itemsPerPage");
$messageQuery->bindValue(':userid', $uwuzuid); $messageQuery->bindValue(':userid', $uwuzuid);
$messageQuery->execute(); $messageQuery->execute();
$message_array = $messageQuery->fetchAll(); $message_array = $messageQuery->fetchAll();
+19 -3
View File
@@ -55,10 +55,10 @@ function replaceEmojisWithImages($postText) {
} }
}, $postTextWithImages); }, $postTextWithImages);
$hashtagsPattern = '/#([\p{Han}\p{Hiragana}\p{Katakana}A-Za-z0-9_]+)/u'; $hashtagsPattern = '/#([\p{Han}\p{Hiragana}\p{Katakana}A-Za-z0-9_]+)/u';
$postTextWithHashtags = preg_replace_callback($hashtagsPattern, function($matches) { $postTextWithHashtags = preg_replace_callback($hashtagsPattern, function($matches) {
$hashtags = $matches[1]; $hashtags = $matches[1];
return "<a class = 'hashtags' href='/search?q=".urlencode('#').$hashtags."'>".'#'.$hashtags."</a>"; return "<a class='hashtags' href='/search?q=" . urlencode('#') . $hashtags . "'>" . '#' . $hashtags . "</a>";
}, $postTextWithImagesAndUsernames); }, $postTextWithImagesAndUsernames);
return $postTextWithHashtags; return $postTextWithHashtags;
@@ -157,7 +157,22 @@ class MessageDisplay {
} }
echo ' <p>' . processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(replaceURLsWithLinks(nl2br($this->value['ueuse'])))) . '</h1></h2></h3></font></center></p>'; echo ' <p>' . processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(replaceURLsWithLinks(nl2br($this->value['ueuse'])))) . '</h1></h2></h3></font></center></p>';
if (!empty($this->value['photo2']) && $this->value['photo2'] !== 'none') { if (!empty($this->value['photo4']) && $this->value['photo4'] !== 'none') {
echo ' <div class="photo4">';
echo ' <a href="'.htmlentities($this->value['photo1']).'" target=”_blank”><img src="'.htmlentities($this->value['photo1']).'" alt="画像1" title="画像1"></a>';
echo ' <a href="'.htmlentities($this->value['photo2']).'" target=”_blank”><img src="'.htmlentities($this->value['photo2']).'" alt="画像2" title="画像2"></a>';
echo ' <a href="'.htmlentities($this->value['photo3']).'" target=”_blank”><img src="'.htmlentities($this->value['photo3']).'" alt="画像3" title="画像3"></a>';
echo ' <a href="'.htmlentities($this->value['photo4']).'" target=”_blank”><img src="'.htmlentities($this->value['photo4']).'" alt="画像4" title="画像4"></a>';
echo ' </div>';
} elseif (!empty($this->value['photo3']) && $this->value['photo3'] !== 'none') {
echo ' <div class="photo3">';
echo ' <a href="'.htmlentities($this->value['photo1']).'" target=”_blank”><img src="'.htmlentities($this->value['photo1']).'" alt="画像1" title="画像1"></a>';
echo ' <a href="'.htmlentities($this->value['photo2']).'" target=”_blank”><img src="'.htmlentities($this->value['photo2']).'" alt="画像2" title="画像2"></a>';
echo ' <div class="photo3_btm">';
echo ' <a href="'.htmlentities($this->value['photo3']).'" target=”_blank”><img src="'.htmlentities($this->value['photo3']).'" alt="画像3" title="画像3"></a>';
echo ' </div>';
echo ' </div>';
} elseif (!empty($this->value['photo2']) && $this->value['photo2'] !== 'none') {
echo ' <div class="photo2">'; echo ' <div class="photo2">';
echo ' <a href="'.htmlentities($this->value['photo1']).'" target=”_blank”><img src="'.htmlentities($this->value['photo1']).'" alt="画像1" title="画像1"></a>'; echo ' <a href="'.htmlentities($this->value['photo1']).'" target=”_blank”><img src="'.htmlentities($this->value['photo1']).'" alt="画像1" title="画像1"></a>';
echo ' <a href="'.htmlentities($this->value['photo2']).'" target=”_blank”><img src="'.htmlentities($this->value['photo2']).'" alt="画像2" title="画像2"></a>'; echo ' <a href="'.htmlentities($this->value['photo2']).'" target=”_blank”><img src="'.htmlentities($this->value['photo2']).'" alt="画像2" title="画像2"></a>';
@@ -196,6 +211,7 @@ class MessageDisplay {
echo '<button class="favbtn" id="favbtn" data-uniqid="' . htmlentities($this->value['uniqid']) . '" data-userid2="' . htmlentities($this->value['account']) . '"><svg><use xlink:href="../img/sysimage/favorite_1.svg#favorite" alt="いいね"></use></svg> <span class="like-count">' . htmlentities($this->value['favcnt']) . '</span></button>'; echo '<button class="favbtn" id="favbtn" data-uniqid="' . htmlentities($this->value['uniqid']) . '" data-userid2="' . htmlentities($this->value['account']) . '"><svg><use xlink:href="../img/sysimage/favorite_1.svg#favorite" alt="いいね"></use></svg> <span class="like-count">' . htmlentities($this->value['favcnt']) . '</span></button>';
} }
echo '<a href="/!'.htmlentities($this->value['uniqid']). '~' . htmlentities($this->value['account']) . '" class="tuduki"><svg><use xlink:href="../img/sysimage/reply_1.svg#reply_1"></use></svg>'.htmlentities($this->value['reply_count']).'</a>'; echo '<a href="/!'.htmlentities($this->value['uniqid']). '~' . htmlentities($this->value['account']) . '" class="tuduki"><svg><use xlink:href="../img/sysimage/reply_1.svg#reply_1"></use></svg>'.htmlentities($this->value['reply_count']).'</a>';
echo '<button name="share" id="share" class="share" data-uniqid="' . htmlentities($this->value['uniqid']) . '" data-userid="' . htmlentities($this->value['account']) . '"><svg><use xlink:href="../img/sysimage/share_1.svg#share_1"></use></svg></button>';
if($this->value['account'] === $this->userid){ if($this->value['account'] === $this->userid){
if(!($this->value['role'] === "ice")){ if(!($this->value['role'] === "ice")){
if($this->value['abi'] === "none"){ if($this->value['abi'] === "none"){
+4
View File
@@ -518,6 +518,10 @@ require('../logout/logout.php');
<h1>API</h1> <h1>API</h1>
<p>APIの簡単な使用法です。</p> <p>APIの簡単な使用法です。</p>
<hr> <hr>
<li>サーバー情報取得API</li>
<p>https://[ドメイン名(uwuzu.netなど)]/api/serverinfo-api</p>
<p>これによりサーバーの各種情報を取得できます。</p>
<hr>
<li>ユーザー情報取得API</li> <li>ユーザー情報取得API</li>
<p>https://[ドメイン名(uwuzu.netなど)]/api/userdata-api?userid=[ユーザーID]</p> <p>https://[ドメイン名(uwuzu.netなど)]/api/userdata-api?userid=[ユーザーID]</p>
<p>これによりユーザーのユーザーネーム(user_name)、プロフィール(profile)、登録日時(registered_date)、フォローしている人一覧(follow)、フォロワー一覧(follower)、フォロー・フォロワー数(follow_cnt,follower_cnt)が取得できます。</p> <p>これによりユーザーのユーザーネーム(user_name)、プロフィール(profile)、登録日時(registered_date)、フォローしている人一覧(follow)、フォロワー一覧(follower)、フォロー・フォロワー数(follow_cnt,follower_cnt)が取得できます。</p>
+15 -1
View File
@@ -1,5 +1,13 @@
<?php <?php
$servernamefile = "../server/servername.txt"; $servernamefile = "../server/servername.txt";
$serverlogofile = "../server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
@@ -20,9 +28,15 @@ $servernamefile = "../server/servername.txt";
<div class="leftbox2"> <div class="leftbox2">
<?php if(!empty(htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8'))){ ?>
<div class="logo"> <div class="logo">
<img src="../img/uwuzulogo.svg"> <a href="../index.php"><img src=<?php echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8');?>></a>
</div> </div>
<?php }else{?>
<div class="logo">
<a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div>
<?php }?>
<div class="textbox"> <div class="textbox">
<h1>パスワード変更不可</h1> <h1>パスワード変更不可</h1>
+15 -1
View File
@@ -1,5 +1,13 @@
<?php <?php
$servernamefile = "../server/servername.txt"; $servernamefile = "../server/servername.txt";
$serverlogofile = "../server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
@@ -20,9 +28,15 @@ $servernamefile = "../server/servername.txt";
<div class="leftbox2"> <div class="leftbox2">
<?php if(!empty(htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8'))){ ?>
<div class="logo"> <div class="logo">
<img src="../img/uwuzulogo.svg"> <a href="../index.php"><img src=<?php echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8');?>></a>
</div> </div>
<?php }else{?>
<div class="logo">
<a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div>
<?php }?>
<div class="textbox"> <div class="textbox">
<h1>パスワードの変更が完了しました!</h1> <h1>パスワードの変更が完了しました!</h1>
+15 -1
View File
@@ -2,6 +2,14 @@
$servernamefile = "../server/servername.txt"; $servernamefile = "../server/servername.txt";
$serverlogofile = "../server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
require('../db.php'); require('../db.php');
@@ -144,9 +152,15 @@ $pdo = null;
<body> <body>
<div class="leftbox"> <div class="leftbox">
<?php if(!empty(htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8'))){ ?>
<div class="logo"> <div class="logo">
<img src="../img/uwuzulogo.svg"> <a href="../index.php"><img src=<?php echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8');?>></a>
</div> </div>
<?php }else{?>
<div class="logo">
<a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div>
<?php }?>
<div class="textbox"> <div class="textbox">
<h1>パスワードの復元</h1> <h1>パスワードの復元</h1>
+15 -1
View File
@@ -2,6 +2,14 @@
$servernamefile = "../server/servername.txt"; $servernamefile = "../server/servername.txt";
$serverlogofile = "../server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
require('../db.php'); require('../db.php');
@@ -241,9 +249,15 @@ $pdo = null;
<body> <body>
<div class="leftbox"> <div class="leftbox">
<?php if(!empty(htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8'))){ ?>
<div class="logo"> <div class="logo">
<img src="../img/uwuzulogo.svg"> <a href="../index.php"><img src=<?php echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8');?>></a>
</div> </div>
<?php }else{?>
<div class="logo">
<a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div>
<?php }?>
<div class="textbox"> <div class="textbox">
<h1>二段階認証</h1> <h1>二段階認証</h1>
+15 -1
View File
@@ -1,8 +1,22 @@
<?php ?> <?php
$serverlogofile = "../server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
?>
<div class="userleftbox"> <div class="userleftbox">
<?php if(!empty($serverlogo_link[0])){ ?>
<div class="logo">
<img src=<?php echo htmlspecialchars($serverlogo_link[0], ENT_QUOTES, 'UTF-8');?>>
</div>
<?php }else{?>
<div class="logo"> <div class="logo">
<img src="../img/uwuzucolorlogo.svg"> <img src="../img/uwuzucolorlogo.svg">
</div> </div>
<?php }?>
<hr> <hr>
<div class="lbtnzone"> <div class="lbtnzone">
<a href="/home" class="leftbutton"><svg><use xlink:href="../img/sysimage/menuicon/home.svg#home"></use></svg>ホーム</a> <a href="/home" class="leftbutton"><svg><use xlink:href="../img/sysimage/menuicon/home.svg#home"></use></svg>ホーム</a>
+25 -1
View File
@@ -18,6 +18,30 @@
for( $i=0;$i<$cnt;$i++ ){ for( $i=0;$i<$cnt;$i++ ){
$uwuzuinfo[$i] = ($softwaredata[$i]); $uwuzuinfo[$i] = ($softwaredata[$i]);
} }
function replaceURLsWithLinks_forRightbox($postText) {
// URLを正規表現を使って検出
$pattern = '/(https:\/\/[^\s<>\[\]\'"]+)/'; // 改良された正規表現
preg_match_all($pattern, $postText, $matches);
// 検出したURLごとに処理を行う
foreach ($matches[0] as $url) {
// ドメイン部分を抽出
$parsedUrl = parse_url($url);
if (!isset($parsedUrl['path'])) {
$parsedUrl['path'] = '';
}
$domain = $parsedUrl['host'].(strlen($parsedUrl['path']) > 24 ? substr($parsedUrl['path'], 0, 24) . '...' : $parsedUrl['path']);
// 不要な文字を削除してaタグを生成
$urlWithoutSpaces = preg_replace('/\s+/', '', $url);
$link = "<a href='$urlWithoutSpaces' target='_blank' title='$urlWithoutSpaces'>$domain</a>";
// URLをドメインのみを表示するaタグで置き換え
$postText = preg_replace('/' . preg_quote($url, '/') . '/', $link, $postText);
}
return $postText;
}
?> ?>
<div class="noticearea"> <div class="noticearea">
<h1>お知らせ</h1> <h1>お知らせ</h1>
@@ -32,7 +56,7 @@
<?php foreach ($notices as $value) {?> <?php foreach ($notices as $value) {?>
<div class="noticebox"> <div class="noticebox">
<h4><?php echo $value['title'];?></h4> <h4><?php echo $value['title'];?></h4>
<p><?php echo nl2br($value['note']);?></p> <p><?php echo replaceURLsWithLinks_forRightbox(nl2br($value['note']));?></p>
<div class="makeup"><p>編集者 : <a href="/@<?php echo $value['account'];?>">@<?php echo $value['account'];?></a></p></div> <div class="makeup"><p>編集者 : <a href="/@<?php echo $value['account'];?>">@<?php echo $value['account'];?></a></p></div>
<div class="time"><p><?php echo date('Y年m月d日 H:i', strtotime($value['datetime']));?></p></div> <div class="time"><p><?php echo date('Y年m月d日 H:i', strtotime($value['datetime']));?></p></div>
</div> </div>
+16
View File
@@ -1,6 +1,14 @@
<!DOCTYPE html> <!DOCTYPE html>
<?php <?php
$serverlogofile = "../server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
$servernamefile = "../server/servername.txt"; $servernamefile = "../server/servername.txt";
//------------------------------------- //-------------------------------------
@@ -53,15 +61,23 @@ foreach ($sprivacypolicy as $privacypolicy) {
<meta charset="utf-8"> <meta charset="utf-8">
<link rel="stylesheet" href="../css/home.css"> <link rel="stylesheet" href="../css/home.css">
<meta name="viewport" content="width=device-width,initial-scale=1"> <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> <title>プライバシーポリシー - <?php echo file_get_contents($servernamefile);?></title>
</head> </head>
<body> <body>
<div class="topbox"> <div class="topbox">
<?php if(!empty($serverlogo_link[1])){ ?>
<div class="logo">
<a href="../index.php"><img src=<?php echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8');?>></a>
</div>
<?php }else{?>
<div class="logo"> <div class="logo">
<a href="../index.php"><img src="../img/uwuzulogo.svg"></a> <a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div> </div>
<?php }?>
</div> </div>
<div class="terms"> <div class="terms">
+24
View File
@@ -1,6 +1,14 @@
<!DOCTYPE html> <!DOCTYPE html>
<?php <?php
$serverlogofile = "../server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
$servernamefile = "../server/servername.txt"; $servernamefile = "../server/servername.txt";
//------------------------------------- //-------------------------------------
@@ -39,6 +47,14 @@ function processMarkdownAndWrapEmptyLines($markdownText) {
// 箇条書き(-)をHTMLのul/liタグに変換 // 箇条書き(-)をHTMLのul/liタグに変換
$markdownText = preg_replace('/^- (.+)/m', '<ul><li>$1</li></ul>', $markdownText); $markdownText = preg_replace('/^- (.+)/m', '<ul><li>$1</li></ul>', $markdownText);
// リリースノートの項目わけ
$markdownText = preg_replace('/^new: (.+)/m', '<div class="fxbx"><div class="new"><p>New</p></div><p>$1</p></div>', $markdownText);
$markdownText = preg_replace('/^fix: (.+)/m', '<div class="fxbx"><div class="fix"><p>Fix</p></div><p>$1</p></div>', $markdownText);
$markdownText = preg_replace('/^chg: (.+)/m', '<div class="fxbx"><div class="chg"><p>Chg</p></div><p>$1</p></div>', $markdownText);
$markdownText = preg_replace('/^del: (.+)/m', '<div class="fxbx"><div class="del"><p>Del</p></div><p>$1</p></div>', $markdownText);
$markdownText = preg_replace('/^ (.+)/m', '<div class="space_tab"><p>$1</p></div>', $markdownText);
// 空行の前に何もない行をHTMLのpタグに変換 // 空行の前に何もない行をHTMLのpタグに変換
$markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1<p>$2</p>', $markdownText); $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1<p>$2</p>', $markdownText);
@@ -62,6 +78,8 @@ foreach ($srelease as $release) {
<meta charset="utf-8"> <meta charset="utf-8">
<link rel="stylesheet" href="../css/home.css"> <link rel="stylesheet" href="../css/home.css">
<meta name="viewport" content="width=device-width,initial-scale=1"> <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 $uwuzuinfo[0]?> リリースノート - <?php echo file_get_contents($servernamefile);?></title> <title><?php echo $uwuzuinfo[0]?> リリースノート - <?php echo file_get_contents($servernamefile);?></title>
</head> </head>
@@ -69,9 +87,15 @@ foreach ($srelease as $release) {
<body> <body>
<div class="topbox"> <div class="topbox">
<?php if(!empty($serverlogo_link[1])){ ?>
<div class="logo">
<a href="../index.php"><img src=<?php echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8');?>></a>
</div>
<?php }else{?>
<div class="logo"> <div class="logo">
<a href="../index.php"><img src="../img/uwuzulogo.svg"></a> <a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div> </div>
<?php }?>
</div> </div>
<div class="terms"> <div class="terms">
+15 -7
View File
@@ -7,14 +7,16 @@ require('../db.php');
session_name('uwuzu_s_id'); session_name('uwuzu_s_id');
session_start(); session_start();
$servericonfile = file_get_contents("../server/servericon.txt"); $servericonfile = "../server/servericon.txt";
$servericondata = explode( "\n", $servericonfile );
$cnt = count($servericondata);
for( $i=0;$i<$cnt;$i++ ){
$uwuzuicon[$i] = ($servericondata[$i]);
}
//------------------------- //-------------------------
$serverlogofile = "../server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
$contactfile = "../server/contact.txt"; $contactfile = "../server/contact.txt";
@@ -91,9 +93,15 @@ $count2 = $result2->num_rows;
<body> <body>
<div class="topbox"> <div class="topbox">
<?php if(!empty($serverlogo_link[1])){ ?>
<div class="logo">
<a href="../index.php"><img src=<?php echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8');?>></a>
</div>
<?php }else{?>
<div class="logo"> <div class="logo">
<a href="../index.php"><img src="../img/uwuzulogo.svg"></a> <a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div> </div>
<?php }?>
</div> </div>
<div class="terms"> <div class="terms">
@@ -101,7 +109,7 @@ $count2 = $result2->num_rows;
<h1>サーバー情報</h1> <h1>サーバー情報</h1>
<?php if( !empty(file_get_contents($servericonfile)) ){ ?> <?php if( !empty(file_get_contents($servericonfile)) ){ ?>
<div class="servericon"> <div class="servericon">
<img src="<?php echo htmlspecialchars($uwuzuicon[0], ENT_QUOTES, 'UTF-8'); ?>"> <img src="<?php echo htmlspecialchars(file_get_contents($servericonfile), ENT_QUOTES, 'UTF-8'); ?>">
</div> </div>
<?php }?> <?php }?>
<div class="sp3"><?php echo file_get_contents($servernamefile);?></div> <div class="sp3"><?php echo file_get_contents($servernamefile);?></div>
+16
View File
@@ -1,6 +1,14 @@
<!DOCTYPE html> <!DOCTYPE html>
<?php <?php
$serverlogofile = "../server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
$servernamefile = "../server/servername.txt"; $servernamefile = "../server/servername.txt";
//------------------------------------- //-------------------------------------
@@ -53,15 +61,23 @@ foreach ($sterms as $terms) {
<meta charset="utf-8"> <meta charset="utf-8">
<link rel="stylesheet" href="../css/home.css"> <link rel="stylesheet" href="../css/home.css">
<meta name="viewport" content="width=device-width,initial-scale=1"> <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> <title>利用規約 - <?php echo file_get_contents($servernamefile);?></title>
</head> </head>
<body> <body>
<div class="topbox"> <div class="topbox">
<?php if(!empty($serverlogo_link[1])){ ?>
<div class="logo">
<a href="../index.php"><img src=<?php echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8');?>></a>
</div>
<?php }else{?>
<div class="logo"> <div class="logo">
<a href="../index.php"><img src="../img/uwuzulogo.svg"></a> <a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div> </div>
<?php }?>
</div> </div>
<div class="terms"> <div class="terms">
+16
View File
@@ -1,6 +1,14 @@
<!DOCTYPE html> <!DOCTYPE html>
<?php <?php
$serverlogofile = "../server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
$servernamefile = "../server/servername.txt"; $servernamefile = "../server/servername.txt";
//------------------------------------- //-------------------------------------
@@ -62,6 +70,8 @@ foreach ($sterms as $terms) {
<meta charset="utf-8"> <meta charset="utf-8">
<link rel="stylesheet" href="../css/home.css"> <link rel="stylesheet" href="../css/home.css">
<meta name="viewport" content="width=device-width,initial-scale=1"> <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 $uwuzuinfo[0]?>について - <?php echo file_get_contents($servernamefile);?></title> <title><?php echo $uwuzuinfo[0]?>について - <?php echo file_get_contents($servernamefile);?></title>
</head> </head>
@@ -69,9 +79,15 @@ foreach ($sterms as $terms) {
<body> <body>
<div class="topbox"> <div class="topbox">
<?php if(!empty($serverlogo_link[1])){ ?>
<div class="logo">
<a href="../index.php"><img src=<?php echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8');?>></a>
</div>
<?php }else{?>
<div class="logo"> <div class="logo">
<a href="../index.php"><img src="../img/uwuzulogo.svg"></a> <a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div> </div>
<?php }?>
</div> </div>
<div class="terms"> <div class="terms">
+7 -1
View File
@@ -260,7 +260,6 @@ $pdo = null;
<script> <script>
$(document).ready(function() { $(document).ready(function() {
if(ueusetext.value){ if(ueusetext.value){
loadPosts(); loadPosts();
} }
@@ -269,6 +268,13 @@ $(document).ready(function() {
loadPosts(); loadPosts();
}); });
window.document.onkeydown = function(event){
if (event.key === 'Enter') {
loadPosts();
}
}
var isLoading = false; var isLoading = false;
function loadPosts() { function loadPosts() {
View File
+3 -1
View File
@@ -90,6 +90,8 @@ PHP 8では事前にGDを有効化しておいてください!(QRコードの
- ueuse(text) 投稿内容保存用 - ueuse(text) 投稿内容保存用
- photo1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 - photo1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用
- photo2(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 - photo2(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用
- photo3(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用
- photo4(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用
- video1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 - video1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用
- datetime(datetime) 投稿日時保存用 - datetime(datetime) 投稿日時保存用
- favorite(text) いいね保存用 - favorite(text) いいね保存用
@@ -183,4 +185,4 @@ daichimarukanaと一緒に開発したいよ~って人は私のHPからメー
編集者 : daichimarukana 編集者 : daichimarukana
最終更新日 : 2023/10/04 00:07 最終更新日 : 2023/11/15 21:57
+2 -2
View File
@@ -1,4 +1,4 @@
uwuzu uwuzu
1.2.25 1.2.26
2023/10/22 2023/11/15
daichimarukana,putonfps daichimarukana,putonfps
+28
View File
@@ -1,6 +1,34 @@
## リリースノートだぜぇぇぇぇぇぇい!!!!!!! ## リリースノートだぜぇぇぇぇぇぇい!!!!!!!
ここにはuwuzuの更新情報を載せてくぜぇ~!(いやまてテンションおかしいだろ...) ここにはuwuzuの更新情報を載せてくぜぇ~!(いやまてテンションおかしいだろ...)
## Version 1.2.26
リリース日:2023/11/15
fix: 特殊記号を含む通知で表示がバグっちゃう問題を修正しました~
fix: サーバーの詳細ページが正しく表示されない問題を修正しました!
chg: お知らせでのハイパーリンクに対応しました~
chg: 投稿以外でのURL表示を若干変更しました~
chg: 広告の縦サイズ制限をなくしました!
chg: 色を一部変更しました~
chg: ハッシュタグ機能を若干改良しました。
chg: 画像を4枚まで添付可能にしました!
DBでueuseにphoto3[varchar(512)]とphoto4[varchar(512)]を追加してください。
uwuzu_database.sqlも更新済みです。
chg: 検索時にEnterで検索できるようにしました。
new: 利用規約ページなどでもfaviconを表示するように変更しました。
new: サーバーロゴ機能を追加しました。
PC版で、左上に表示されているロゴを自由に設定できる機能です。
new: リリースノートの書き方を変更しました!
リリースノートをわかりやすくするために項目を分類しました。
- 「new」=「新機能」=「緑色」
- 「fix」=「バグ修正」=「オレンジ色」
- 「chg」=「仕様変更」=「青色」
- 「del」=「機能廃止」=「赤色」
new: サーバー情報APIを実装しました!
https://[ドメイン名(uwuzu.netなど)]/api/serverinfo-api
new: シェアボタンを実装しました!
ユーズ下部のシェアボタンからシェアが可能です。
Web Share API非対応のブラウザではURLがコピーされます。
## Version 1.2.25 ## Version 1.2.25
リリース日:2023/10/22 リリース日:2023/10/22
ActivityPubに認識されない問題を修正しました。 ActivityPubに認識されない問題を修正しました。
+57
View File
@@ -1,6 +1,14 @@
<?php <?php
$servericonfile = "../server/servericon.txt"; $servericonfile = "../server/servericon.txt";
$serverlogofile = "../server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
$servernamefile = "../server/servername.txt"; $servernamefile = "../server/servername.txt";
$serverinfofile = '../server/info.txt'; $serverinfofile = '../server/info.txt';
@@ -231,6 +239,17 @@ if( !empty($_POST['btn_submit']) ) {
$servericon = $_POST['servericon']; $servericon = $_POST['servericon'];
$serverlogo_onoff = $_POST['serverlogo_onoff'];
$serverlogo_light = $_POST['serverlogo_light'];
$serverlogo_dark = $_POST['serverlogo_dark'];
if($serverlogo_onoff === "true"){
$saveserverlogo = $serverlogo_light."\n".$serverlogo_dark;
}else{
$saveserverlogo = "";
}
$servername = $_POST['servername']; $servername = $_POST['servername'];
$serverinfo = $_POST['serverinfo']; $serverinfo = $_POST['serverinfo'];
@@ -284,6 +303,12 @@ if( !empty($_POST['btn_submit']) ) {
fputs($file, $data); fputs($file, $data);
fclose($file); fclose($file);
//鯖ロゴ
$file = fopen($serverlogofile, 'w');
$data = $saveserverlogo;
fputs($file, $data);
fclose($file);
//鯖名 //鯖名
$file = fopen($servernamefile, 'w'); $file = fopen($servernamefile, 'w');
$data = $servername; $data = $servername;
@@ -385,6 +410,38 @@ require('../logout/logout.php');
<div class="p2">サーバー登録画面などに表示されます。<br>自動的に角が丸くなります。<br>URLより設定してください。</div> <div class="p2">サーバー登録画面などに表示されます。<br>自動的に角が丸くなります。<br>URLより設定してください。</div>
<input id="servericon" placeholder="https://~" class="inbox" type="text" name="servericon" value="<?php if( !empty(file_get_contents($servericonfile)) ){ echo htmlspecialchars(file_get_contents($servericonfile), ENT_QUOTES, 'UTF-8'); } ?>"> <input id="servericon" placeholder="https://~" class="inbox" type="text" name="servericon" value="<?php if( !empty(file_get_contents($servericonfile)) ){ echo htmlspecialchars(file_get_contents($servericonfile), ENT_QUOTES, 'UTF-8'); } ?>">
</div> </div>
<div>
<p>サーバーロゴ機能のオンオフ</p>
<div class="switch_button">
<?php if(!empty(file_get_contents($serverlogofile))){?>
<input id="serverlogo_onoff" class="switch_input" type='checkbox' name="serverlogo_onoff" value="true" checked/>
<label for="serverlogo_onoff" class="switch_label"></label>
<?php }else{?>
<input id="serverlogo_onoff" class="switch_input" type='checkbox' name="serverlogo_onoff" value="true" />
<label for="serverlogo_onoff" class="switch_label"></label>
<?php }?>
</div>
</div>
<div id="serverlogo">
<p>サーバーロゴ</p>
<div class="p2">サーバーの左上に表示されているuwuzuのロゴを独自のロゴに置き換えるときに使用します。<br>自動的に角が丸くなります。<br>URLより設定してください。<br>背景透過画像を推奨します。</div>
<div class="p2">ログイン後のロゴ</div>
<input id="serverlogo" placeholder="https://~" class="inbox" type="text" name="serverlogo_light" value="<?php if( !empty($serverlogo_link[0]) ){ echo htmlspecialchars($serverlogo_link[0], ENT_QUOTES, 'UTF-8'); } ?>">
<div class="p2">ログイン画面と利用規約などドキュメントページのロゴ</div>
<input id="serverlogo" placeholder="https://~" class="inbox" type="text" name="serverlogo_dark" value="<?php if( !empty($serverlogo_link[1]) ){ echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8'); } ?>">
</div>
<script>
if ($("#serverlogo_onoff").prop("checked")) {
$('#serverlogo').show();
}else{
$('#serverlogo').hide();
}
$('#serverlogo_onoff').change(function(){
$('#serverlogo').toggle();
});
</script>
<div> <div>
<p>サーバー名</p> <p>サーバー名</p>
<div class="p2">サーバー名です。</div> <div class="p2">サーバー名です。</div>
+12 -12
View File
@@ -268,13 +268,13 @@ if( !empty($_POST['send_ice_submit']) ) {
$stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)"); $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(':touserid', htmlentities($touserid), PDO::PARAM_STR);
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR); $stmt->bindParam(':msg', htmlentities($msg), PDO::PARAM_STR);
$stmt->bindParam(':url', $url, PDO::PARAM_STR); $stmt->bindParam(':url', htmlentities($url), PDO::PARAM_STR);
$stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR); $stmt->bindParam(':userchk', htmlentities($userchk), PDO::PARAM_STR);
$stmt->bindParam(':title', $title, PDO::PARAM_STR); $stmt->bindParam(':title', htmlentities($title), PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); $stmt->bindParam(':datetime', htmlentities($datetime), PDO::PARAM_STR);
// SQLクエリの実行 // SQLクエリの実行
$res2 = $stmt->execute(); $res2 = $stmt->execute();
@@ -341,13 +341,13 @@ if( !empty($_POST['send_water_submit']) ) {
$stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)"); $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(':touserid', htmlentities($touserid), PDO::PARAM_STR);
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR); $stmt->bindParam(':msg', htmlentities($msg), PDO::PARAM_STR);
$stmt->bindParam(':url', $url, PDO::PARAM_STR); $stmt->bindParam(':url', htmlentities($url), PDO::PARAM_STR);
$stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR); $stmt->bindParam(':userchk', htmlentities($userchk), PDO::PARAM_STR);
$stmt->bindParam(':title', $title, PDO::PARAM_STR); $stmt->bindParam(':title', htmlentities($title), PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); $stmt->bindParam(':datetime', htmlentities($datetime), PDO::PARAM_STR);
// SQLクエリの実行 // SQLクエリの実行
$res2 = $stmt->execute(); $res2 = $stmt->execute();
+16 -1
View File
@@ -1,5 +1,14 @@
<?php <?php
$servernamefile = "server/servername.txt"; $servernamefile = "server/servername.txt";
$serverlogofile = "server/serverlogo.txt";
$serverlogodata = file_get_contents($serverlogofile);
$serverlogodata = explode( "\n", $serverlogodata );
$cnt = count( $serverlogodata );
for( $i=0;$i<$cnt;$i++ ){
$serverlogo_link[$i] = ($serverlogodata[$i]);
}
if(!(empty($_SESSION['backupcode']))){ if(!(empty($_SESSION['backupcode']))){
$backupcode = $_SESSION['backupcode']; $backupcode = $_SESSION['backupcode'];
}else{ }else{
@@ -25,9 +34,15 @@ if(!(empty($_SESSION['backupcode']))){
<div class="leftbox2"> <div class="leftbox2">
<?php if(!empty($serverlogo_link[1])){ ?>
<div class="logo"> <div class="logo">
<img src="img/uwuzulogo.svg"> <a href="../index.php"><img src=<?php echo htmlspecialchars($serverlogo_link[1], ENT_QUOTES, 'UTF-8');?>></a>
</div> </div>
<?php }else{?>
<div class="logo">
<a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div>
<?php }?>
<div class="textbox"> <div class="textbox">
<h1>アカウント作成完了!</h1> <h1>アカウント作成完了!</h1>
+157 -6
View File
@@ -238,6 +238,7 @@ if( !empty($_POST['btn_submit']) ) {
} }
if (empty($_FILES['upload_images']['name'])) { if (empty($_FILES['upload_images']['name'])) {
$photo1 = "none"; $photo1 = "none";
} else { } else {
@@ -311,6 +312,86 @@ if( !empty($_POST['btn_submit']) ) {
} }
} }
if (empty($_FILES['upload_images3']['name'])) {
$photo3 = "none";
} else {
if (empty($_FILES['upload_images2']['name'])){
$error_message[] = '画像2から画像を選択してください!!!';
}
// アップロードされたファイル情報
$uploadedFile3 = $_FILES['upload_images3'];
if( 10000000 < $uploadedFile3["size"] ) {
$error_message[] = 'ファイルサイズが大きすぎます!';
}
// アップロードされたファイルの拡張子を取得
$extension3 = pathinfo($uploadedFile3['name'], PATHINFO_EXTENSION);
// 新しいファイル名を生成(uniqid + 拡張子)
$newFilename3 = uniqid() . '-'.$userid.'.' . $extension3;
// 保存先のパスを生成
$uploadedPath3 = '../ueuseimages/' . $newFilename3;
// ファイルを移動
$result3 = move_uploaded_file($uploadedFile3['tmp_name'], $uploadedPath3);
if ($result3) {
$photo3 = $uploadedPath3; // 保存されたファイルのパスを使用
} else {
$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[] = 'アップロード失敗!(3)エラーコード:' .$errcode.'';
}
}
if (empty($_FILES['upload_images4']['name'])) {
$photo4 = "none";
} else {
if (empty($_FILES['upload_images3']['name'])){
$error_message[] = '画像3から画像を選択してください!!!';
}
// アップロードされたファイル情報
$uploadedFile4 = $_FILES['upload_images4'];
if( 10000000 < $uploadedFile4["size"] ) {
$error_message[] = 'ファイルサイズが大きすぎます!';
}
// アップロードされたファイルの拡張子を取得
$extension4 = pathinfo($uploadedFile4['name'], PATHINFO_EXTENSION);
// 新しいファイル名を生成(uniqid + 拡張子)
$newFilename4 = uniqid() . '-'.$userid.'.' . $extension4;
// 保存先のパスを生成
$uploadedPath4 = '../ueuseimages/' . $newFilename4;
// ファイルを移動
$result4 = move_uploaded_file($uploadedFile4['tmp_name'], $uploadedPath4);
if ($result4) {
$photo4 = $uploadedPath4; // 保存されたファイルのパスを使用
} else {
$errnum = $uploadedFile4['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[] = 'アップロード失敗!(4)エラーコード:' .$errcode.'';
}
}
if (empty($_FILES['upload_videos1']['name'])) { if (empty($_FILES['upload_videos1']['name'])) {
$video1 = "none"; $video1 = "none";
} else { } else {
@@ -366,7 +447,7 @@ if( !empty($_POST['btn_submit']) ) {
try { try {
// SQL作成 // SQL作成
$stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, rpuniqid, ueuse, photo1, photo2, video1, datetime, abi, nsfw) VALUES (:username, :account, :uniqid, :rpuniqid, :ueuse, :photo1, :photo2, :video1, :datetime, :abi, :nsfw)"); $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, rpuniqid, ueuse, photo1, photo2, photo3, photo4, video1, datetime, abi, nsfw) VALUES (:username, :account, :uniqid, :rpuniqid, :ueuse, :photo1, :photo2, :photo3, :photo4, :video1, :datetime, :abi, :nsfw)");
$stmt->bindParam(':username', $username, PDO::PARAM_STR); $stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':account', $userid, PDO::PARAM_STR); $stmt->bindParam(':account', $userid, PDO::PARAM_STR);
@@ -376,6 +457,8 @@ if( !empty($_POST['btn_submit']) ) {
$stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR); $stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR);
$stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR); $stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR);
$stmt->bindParam(':photo3', $photo3, PDO::PARAM_STR);
$stmt->bindParam(':photo4', $photo4, PDO::PARAM_STR);
$stmt->bindParam(':video1', $video1, PDO::PARAM_STR); $stmt->bindParam(':video1', $video1, PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR);
@@ -432,13 +515,13 @@ if( !empty($_POST['btn_submit']) ) {
$stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)"); $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(':touserid', htmlentities($touserid), PDO::PARAM_STR);
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR); $stmt->bindParam(':msg', $msg, PDO::PARAM_STR);
$stmt->bindParam(':url', $url, PDO::PARAM_STR); $stmt->bindParam(':url', htmlentities($url), PDO::PARAM_STR);
$stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR); $stmt->bindParam(':userchk', htmlentities($userchk), PDO::PARAM_STR);
$stmt->bindParam(':title', $title, PDO::PARAM_STR); $stmt->bindParam(':title', htmlentities($title), PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); $stmt->bindParam(':datetime', htmlentities($datetime), PDO::PARAM_STR);
// SQLクエリの実行 // SQLクエリの実行
$res = $stmt->execute(); $res = $stmt->execute();
@@ -515,6 +598,11 @@ $pdo = null;
</head> </head>
<body> <body>
<div>
<div id="clipboard" class="online" style="display:none;">
<p>🗒️📎 ユーズのURLをコピーしました!</p>
</div>
</div>
<?php require('../require/leftbox.php');?> <?php require('../require/leftbox.php');?>
<main class="outer"> <main class="outer">
<?php if( !empty($error_message) ): ?> <?php if( !empty($error_message) ): ?>
@@ -543,6 +631,14 @@ $pdo = null;
<svg><use xlink:href="../img/sysimage/image_1.svg#image"></use></svg> <svg><use xlink:href="../img/sysimage/image_1.svg#image"></use></svg>
<input type="file" name="upload_images2" id ="upload_images2" accept="image/*"> <input type="file" name="upload_images2" id ="upload_images2" accept="image/*">
</label> </label>
<label for="upload_images3" id="images3" style="display: none" title="画像3">
<svg><use xlink:href="../img/sysimage/image_1.svg#image"></use></svg>
<input type="file" name="upload_images3" id ="upload_images3" accept="image/*">
</label>
<label for="upload_images4" id="images4" style="display: none" title="画像4">
<svg><use xlink:href="../img/sysimage/image_1.svg#image"></use></svg>
<input type="file" name="upload_images4" id ="upload_images4" accept="image/*">
</label>
<label for="upload_videos1" id="videos1" title="動画1"> <label for="upload_videos1" id="videos1" title="動画1">
<svg><use xlink:href="../img/sysimage/video_1.svg#video"></use></svg> <svg><use xlink:href="../img/sysimage/video_1.svg#video"></use></svg>
<input type="file" name="upload_videos1" id ="upload_videos1" accept="video/*"> <input type="file" name="upload_videos1" id ="upload_videos1" accept="video/*">
@@ -569,6 +665,29 @@ $pdo = null;
}); });
file_reader.readAsText(e.target.files[0]); file_reader.readAsText(e.target.files[0]);
}); });
document.getElementById("upload_images4").addEventListener('change', function(e){
var file_reader = new FileReader();
// ファイルの読み込みを行ったら実行
file_reader.addEventListener('load', function(e) {
const element = document.querySelector('#images4');
const createElement = '<p>画像を選択しました。</p>';
element.insertAdjacentHTML('afterend', createElement);
});
file_reader.readAsText(e.target.files[0]);
});
document.getElementById("upload_images3").addEventListener('change', function(e){
var file_reader = new FileReader();
// ファイルの読み込みを行ったら実行
file_reader.addEventListener('load', function(e) {
const element = document.querySelector('#images3');
const createElement = '<p>画像を選択しました。</p>';
element.insertAdjacentHTML('afterend', createElement);
$("#images4").show();
});
file_reader.readAsText(e.target.files[0]);
});
document.getElementById("upload_images2").addEventListener('change', function(e){ document.getElementById("upload_images2").addEventListener('change', function(e){
var file_reader = new FileReader(); var file_reader = new FileReader();
// ファイルの読み込みを行ったら実行 // ファイルの読み込みを行ったら実行
@@ -576,6 +695,7 @@ $pdo = null;
const element = document.querySelector('#images2'); const element = document.querySelector('#images2');
const createElement = '<p>画像を選択しました。</p>'; const createElement = '<p>画像を選択しました。</p>';
element.insertAdjacentHTML('afterend', createElement); element.insertAdjacentHTML('afterend', createElement);
$("#images3").show();
}); });
file_reader.readAsText(e.target.files[0]); file_reader.readAsText(e.target.files[0]);
}); });
@@ -849,6 +969,37 @@ $(document).ready(function() {
}); });
}); });
$(document).on('click', '.share', function (event) {
var domain = "<?php echo $domain;?>";
var share_uniqid = $(this).attr('data-uniqid');
var share_userid = $(this).attr('data-userid');
if (typeof navigator.share === 'undefined') {
navigator.clipboard.writeText("https://"+domain+"/!"+share_uniqid+"")
$("#clipboard").show();
window.setTimeout(function(){
$("#clipboard").hide();
}, 5000);
return;
}
var shareData = {
title: ''+share_userid+'さんのID '+share_uniqid+' のユーズ - uwuzu',
text: '',
url: "https://"+domain+"/!"+share_uniqid+"",
};
navigator.share(shareData)
.then(function () {
// シェア完了後の処理
})
.catch(function (error) {
// シェア失敗時の処理
});
});
}); });
</script> </script>
+46 -9
View File
@@ -233,11 +233,14 @@ if( !empty($pdo) ) {
foreach ($matches[0] as $url) { foreach ($matches[0] as $url) {
// ドメイン部分を抽出 // ドメイン部分を抽出
$parsedUrl = parse_url($url); $parsedUrl = parse_url($url);
$domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; if (!isset($parsedUrl['path'])) {
$parsedUrl['path'] = '';
}
$domain = $parsedUrl['host'].(strlen($parsedUrl['path']) > 24 ? substr($parsedUrl['path'], 0, 24) . '...' : $parsedUrl['path']);
// 不要な文字を削除してaタグを生成 // 不要な文字を削除してaタグを生成
$urlWithoutSpaces = preg_replace('/\s+/', '', $url); $urlWithoutSpaces = preg_replace('/\s+/', '', $url);
$link = "<a href='$urlWithoutSpaces' target='_blank'>$domain</a>"; $link = "<a href='$urlWithoutSpaces' target='_blank' title='$urlWithoutSpaces'>$domain</a>";
// URLをドメインのみを表示するaタグで置き換え // URLをドメインのみを表示するaタグで置き換え
$postText = preg_replace('/' . preg_quote($url, '/') . '/', $link, $postText); $postText = preg_replace('/' . preg_quote($url, '/') . '/', $link, $postText);
@@ -363,7 +366,7 @@ if( !empty($pdo) ) {
if (!empty($_POST['follow'])) { if (!empty($_POST['follow'])) {
// フォローボタンが押された場合の処理 // フォローボタンが押された場合の処理
$followerList = explode(',', $userdata['follower']); $followerList = explode(',', $userdata['follower']);
if (!in_array($userid, $followerList)) { if (!(in_array($userid, $followerList))) {
// 自分が相手をフォローしていない場合、相手のfollowerカラムと自分のfollowカラムを更新 // 自分が相手をフォローしていない場合、相手のfollowerカラムと自分のfollowカラムを更新
$followerList[] = $userid; $followerList[] = $userid;
$newFollowerList = implode(',', $followerList); $newFollowerList = implode(',', $followerList);
@@ -395,13 +398,13 @@ if (!empty($_POST['follow'])) {
$stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)"); $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(':touserid', htmlentities($touserid), PDO::PARAM_STR);
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR); $stmt->bindParam(':msg', htmlentities($msg), PDO::PARAM_STR);
$stmt->bindParam(':url', $url, PDO::PARAM_STR); $stmt->bindParam(':url', htmlentities($url), PDO::PARAM_STR);
$stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR); $stmt->bindParam(':userchk', htmlentities($userchk), PDO::PARAM_STR);
$stmt->bindParam(':title', $title, PDO::PARAM_STR); $stmt->bindParam(':title', htmlentities($title), PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); $stmt->bindParam(':datetime', htmlentities($datetime), PDO::PARAM_STR);
// SQLクエリの実行 // SQLクエリの実行
$res = $stmt->execute(); $res = $stmt->execute();
@@ -559,6 +562,9 @@ $pdo = null;
<body> <body>
<div> <div>
<div id="clipboard" class="online" style="display:none;">
<p>🗒️📎 ユーズのURLをコピーしました!</p>
</div>
<div id="offline" class="offline" style="display:none;"> <div id="offline" class="offline" style="display:none;">
<p>🦖💨 インターネットへの接続が切断されました...</p> <p>🦖💨 インターネットへの接続が切断されました...</p>
</div> </div>
@@ -1302,6 +1308,37 @@ $(document).ready(function() {
} }
} }
$(document).on('click', '.share', function (event) {
var domain = "<?php echo $domain;?>";
var share_uniqid = $(this).attr('data-uniqid');
var share_userid = $(this).attr('data-userid');
if (typeof navigator.share === 'undefined') {
navigator.clipboard.writeText("https://"+domain+"/!"+share_uniqid+"")
$("#clipboard").show();
window.setTimeout(function(){
$("#clipboard").hide();
}, 5000);
return;
}
var shareData = {
title: ''+share_userid+'さんのID '+share_uniqid+' のユーズ - uwuzu',
text: '',
url: "https://"+domain+"/!"+share_uniqid+"",
};
navigator.share(shareData)
.then(function () {
// シェア完了後の処理
})
.catch(function (error) {
// シェア失敗時の処理
});
});
}); });
</script> </script>
+3 -1
View File
@@ -3,7 +3,7 @@
-- https://www.phpmyadmin.net/ -- https://www.phpmyadmin.net/
-- --
-- ホスト: ひみつ -- ホスト: ひみつ
-- 生成日時: 2023-10-03 17:20:43 -- 生成日時: 2023-11-15 14:03:33
-- サーバのバージョン: 10.4.28-MariaDB -- サーバのバージョン: 10.4.28-MariaDB
-- PHP のバージョン: 8.2.4 -- PHP のバージョン: 8.2.4
@@ -171,6 +171,8 @@ CREATE TABLE `ueuse` (
`ueuse` text NOT NULL, `ueuse` text NOT NULL,
`photo1` varchar(512) NOT NULL, `photo1` varchar(512) NOT NULL,
`photo2` varchar(512) NOT NULL, `photo2` varchar(512) NOT NULL,
`photo3` varchar(512) NOT NULL,
`photo4` varchar(512) NOT NULL,
`video1` varchar(512) NOT NULL, `video1` varchar(512) NOT NULL,
`datetime` datetime NOT NULL, `datetime` datetime NOT NULL,
`favorite` text NOT NULL, `favorite` text NOT NULL,