確認
diff --git a/css/home.css b/css/home.css
index bc9be72..483a44d 100644
--- a/css/home.css
+++ b/css/home.css
@@ -880,7 +880,7 @@ main h1{
}
.select_utl{
margin: 0px;
- background-color: var(--background-color);
+ background-color: var(--tl-color);
border: none;
width: auto;
text-align: center;
@@ -896,7 +896,7 @@ main h1{
margin-top: 0px;
margin-bottom: 0px;
font-size: 16px;
- background: var(--background-color);
+ background: var(--tl-color);
color: var(--dark-subtext-color);
text-decoration: none;
font-family: 'BIZ UDPGothic', sans-serif;
@@ -943,7 +943,7 @@ main h1{
object-fit: cover;
margin: 0px;
width: 100%;
- height: 10dvh;
+ height: auto;
vertical-align:top;
}
.ueuse{
@@ -1192,7 +1192,21 @@ main h1{
margin-left: 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{
object-fit: cover;
@@ -1220,6 +1234,48 @@ main h1{
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{
object-fit: cover;
border-radius: 10px;
@@ -1537,7 +1593,7 @@ main h1{
width:auto;
padding: 8px auto;
- margin-left: auto;
+ margin-left: 6px;
margin-right: 6px;
margin-top: 2px;
margin-bottom: 2px;
@@ -1569,7 +1625,7 @@ main h1{
display: block;
width:auto;
- margin-left: auto;
+ margin-left: 6px;
margin-right: 6px;
margin-top: 2px;
margin-bottom: 2px;
@@ -1602,6 +1658,78 @@ main h1{
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{
margin-left: 0px;
width: 24px;
@@ -2515,7 +2643,7 @@ label>input {
margin-left: 0px;
margin-right: auto;
margin-top: 2px;
- width: 120px;
+ height: 44px;
}
.terms{
@@ -2603,7 +2731,110 @@ label>input {
font-weight: normal;
font-size: 16px;
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-weight: normal;
}
-
.terms .p3{
margin-top: 24px;
text-align: left;
@@ -2759,6 +2989,15 @@ label>input {
overflow-wrap:break-word;
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{
margin-top: auto;
@@ -3967,7 +4206,7 @@ summary {
.f_c_area{
margin: 0px;
- background-color: var(--background-color);
+ background-color: var(--tl-color);
border: none;
width: auto;
text-align: center;
@@ -4493,7 +4732,7 @@ summary {
width:auto;
padding: 8px auto;
- margin-left: auto;
+ margin-left: 6px;
margin-right: 6px;
margin-top: 2px;
margin-bottom: 2px;
@@ -4525,7 +4764,7 @@ summary {
display: block;
width:auto;
- margin-left: auto;
+ margin-left: 6px;
margin-right: 6px;
margin-top: 2px;
margin-bottom: 2px;
@@ -4560,6 +4799,70 @@ summary {
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{
animation: slideInY 0.5s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards;
margin: 12px;
@@ -4906,14 +5209,45 @@ summary {
display: flex;
}
- .ueuse .photo2 img{
+ .ueuse .photo2 a img{
object-fit: cover;
border-radius: 10px;
margin-top: 12px;
margin-left: auto;
margin-right: auto;
- width: 47%;
- height: auto;
+ width: 100%;
+ 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);
}
@@ -5128,6 +5462,7 @@ summary {
margin-top: 12px;
margin-left: auto;
margin-right: auto;
+ margin-bottom: 48px
}
.modal-content .fbtn{
@@ -5596,6 +5931,14 @@ summary {
background-color: var(--main-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{
border-top: 1px solid var(--dark-subtext-color);
}
@@ -5755,6 +6098,9 @@ summary {
.rightbox .noticebox p{
color: var(--background-color);
}
+ .rightbox .noticebox a{
+ color:var(--main-color);
+ }
.rightbox .noticebox .makeup p{
color:var(--sub-color);;
diff --git a/home/ftl.php b/home/ftl.php
index f57faef..88736a2 100644
--- a/home/ftl.php
+++ b/home/ftl.php
@@ -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'])) {
$video1 = "none";
} else {
@@ -350,7 +431,7 @@ if( !empty($_POST['btn_submit']) ) {
try {
// 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(':account', $userid, PDO::PARAM_STR);
@@ -359,6 +440,8 @@ if( !empty($_POST['btn_submit']) ) {
$stmt->bindParam(':photo1', $photo1, 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(':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->bindParam(':touserid', $touserid, PDO::PARAM_STR);
+ $stmt->bindParam(':touserid', htmlentities($touserid), PDO::PARAM_STR);
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR);
- $stmt->bindParam(':url', $url, PDO::PARAM_STR);
- $stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR);
- $stmt->bindParam(':title', $title, PDO::PARAM_STR);
+ $stmt->bindParam(':url', htmlentities($url), PDO::PARAM_STR);
+ $stmt->bindParam(':userchk', htmlentities($userchk), 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クエリの実行
$res = $stmt->execute();
@@ -468,6 +551,9 @@ if ("serviceWorker" in navigator) {
+
🦖💨 インターネットへの接続が切断されました...
@@ -498,7 +584,7 @@ if ("serviceWorker" in navigator) {
画像のEXIF情報(位置情報など)は削除されません。 情報漏洩に気をつけてくださいね…
-
+
@@ -506,6 +592,14 @@ if ("serviceWorker" in navigator) {
+
+
+
+
+
+
+
+
@@ -532,6 +626,29 @@ if ("serviceWorker" in navigator) {
});
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 = '画像を選択しました。
';
+ 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 = '画像を選択しました。
';
+ element.insertAdjacentHTML('afterend', createElement);
+ $("#images4").show();
+ });
+ file_reader.readAsText(e.target.files[0]);
+ });
+
document.getElementById("upload_images2").addEventListener('change', function(e){
var file_reader = new FileReader();
// ファイルの読み込みを行ったら実行
@@ -539,6 +656,7 @@ if ("serviceWorker" in navigator) {
const element = document.querySelector('#images2');
const createElement = '画像を選択しました。
';
element.insertAdjacentHTML('afterend', createElement);
+ $("#images3").show();
});
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 = "";
+ 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');
$(document).on('click', '.os_exit_btn', function (event) {
document.cookie = "event=done; max-age=86400";
diff --git a/home/index.php b/home/index.php
index a57223c..4b982c2 100644
--- a/home/index.php
+++ b/home/index.php
@@ -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'])) {
$video1 = "none";
} else {
@@ -349,7 +429,7 @@ if( !empty($_POST['btn_submit']) ) {
try {
// 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(':account', $userid, PDO::PARAM_STR);
@@ -358,6 +438,8 @@ if( !empty($_POST['btn_submit']) ) {
$stmt->bindParam(':photo1', $photo1, 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(':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->bindParam(':touserid', $touserid, PDO::PARAM_STR);
+ $stmt->bindParam(':touserid', htmlentities($touserid), PDO::PARAM_STR);
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR);
- $stmt->bindParam(':url', $url, PDO::PARAM_STR);
- $stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR);
- $stmt->bindParam(':title', $title, PDO::PARAM_STR);
+ $stmt->bindParam(':url', htmlentities($url), PDO::PARAM_STR);
+ $stmt->bindParam(':userchk', htmlentities($userchk), 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クエリの実行
$res = $stmt->execute();
@@ -468,6 +550,9 @@ if ("serviceWorker" in navigator) {
+
🦖💨 インターネットへの接続が切断されました...
@@ -532,6 +617,14 @@ if ("serviceWorker" in navigator) {
+
+
+
+
+
+
+
+
@@ -558,6 +651,29 @@ if ("serviceWorker" in navigator) {
});
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 = '画像を選択しました。
';
+ 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 = '画像を選択しました。
';
+ element.insertAdjacentHTML('afterend', createElement);
+ $("#images4").show();
+ });
+ file_reader.readAsText(e.target.files[0]);
+ });
+
document.getElementById("upload_images2").addEventListener('change', function(e){
var file_reader = new FileReader();
// ファイルの読み込みを行ったら実行
@@ -565,6 +681,7 @@ if ("serviceWorker" in navigator) {
const element = document.querySelector('#images2');
const createElement = '画像を選択しました。
';
element.insertAdjacentHTML('afterend', createElement);
+ $("#images3").show();
});
file_reader.readAsText(e.target.files[0]);
});
@@ -853,15 +970,44 @@ $(document).ready(function() {
$("#offline").show();
}
}
+ });
+
+ $(document).on('click', '.share', function (event) {
+
+ var 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');
$(document).on('click', '.os_exit_btn', function (event) {
document.cookie = "event=done; max-age=86400";
osho_gats.style.display = 'none';
});
-});
-
\ No newline at end of file
diff --git a/img/sysimage/share_1.svg b/img/sysimage/share_1.svg
new file mode 100644
index 0000000..0b31b3e
--- /dev/null
+++ b/img/sysimage/share_1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/index.php b/index.php
index 573da73..00186e3 100644
--- a/index.php
+++ b/index.php
@@ -56,6 +56,14 @@ $servericonfile = "server/servericon.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';
@@ -129,9 +137,15 @@ if ("serviceWorker" in navigator) {
-
-
-
+
+
+
>
+
+
+
+
+
+
diff --git a/js/console_notice.js b/js/console_notice.js
index 818bb75..68c5917 100644
--- a/js/console_notice.js
+++ b/js/console_notice.js
@@ -26,4 +26,5 @@ console.log(
"color:#000;",
"",
"uwuzuサーバー運営者及びuwuzu開発者がCookie情報等を要求することはありません。",
-);
\ No newline at end of file
+);
+
diff --git a/login.php b/login.php
index 20b8f38..2ef80f2 100644
--- a/login.php
+++ b/login.php
@@ -2,6 +2,14 @@
$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');
@@ -190,9 +198,15 @@ $pdo = null;
-
-
-
+
+
+
>
+
+
+
+
+
+
ログイン
diff --git a/new.php b/new.php
index 7999c55..ae55578 100644
--- a/new.php
+++ b/new.php
@@ -18,6 +18,14 @@ require('db.php');
$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";
$onlyuser = file_get_contents($onlyuserfile);
@@ -474,9 +482,15 @@ $pdo = null;
-
-
-
+
+
+
>
+
+
+
+
+
+
アカウント登録
diff --git a/nextpage/notificationview.php b/nextpage/notificationview.php
index 48a0aa8..0619eac 100644
--- a/nextpage/notificationview.php
+++ b/nextpage/notificationview.php
@@ -26,8 +26,8 @@ class MessageDisplay {
echo ' ';
// 投稿内のHTMLコードを表示する部分
- echo '
' . htmlentities($this->value['title']) . ' ';
- echo '
' . nl2br(htmlentities($this->value['msg'])) . '
';
+ echo '
' . $this->value['title'] . ' ';
+ echo '
' . nl2br($this->value['msg']) . '
';
echo '
詳細をみる ';
echo '
';
diff --git a/nextpage/usermediapage.php b/nextpage/usermediapage.php
index 47b3b68..881c0cb 100644
--- a/nextpage/usermediapage.php
+++ b/nextpage/usermediapage.php
@@ -54,7 +54,14 @@ if (!empty($pdo)) {
$userQuery->execute();
$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->execute();
$message_array = $messageQuery->fetchAll();
diff --git a/nextpage/view.php b/nextpage/view.php
index 4c18627..b5d5abb 100644
--- a/nextpage/view.php
+++ b/nextpage/view.php
@@ -55,10 +55,10 @@ function replaceEmojisWithImages($postText) {
}
}, $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) {
$hashtags = $matches[1];
- return "
".'#'.$hashtags." ";
+ return "
" . '#' . $hashtags . " ";
}, $postTextWithImagesAndUsernames);
return $postTextWithHashtags;
@@ -157,7 +157,22 @@ class MessageDisplay {
}
echo '
' . processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(replaceURLsWithLinks(nl2br($this->value['ueuse'])))) . '
';
- if (!empty($this->value['photo2']) && $this->value['photo2'] !== 'none') {
+ if (!empty($this->value['photo4']) && $this->value['photo4'] !== 'none') {
+ echo '
';
+ echo '
';
+ echo '
';
+ echo '
';
+ echo '
';
+ echo '
';
+ } elseif (!empty($this->value['photo3']) && $this->value['photo3'] !== 'none') {
+ echo '
';
+ echo '
';
+ echo '
';
+ echo '
';
+ echo '
';
+ echo '
';
+ echo '
';
+ } elseif (!empty($this->value['photo2']) && $this->value['photo2'] !== 'none') {
echo '
';
echo '
';
echo '
';
@@ -196,6 +211,7 @@ class MessageDisplay {
echo '
' . htmlentities($this->value['favcnt']) . ' ';
}
echo '
'.htmlentities($this->value['reply_count']).'';
+ echo '
';
if($this->value['account'] === $this->userid){
if(!($this->value['role'] === "ice")){
if($this->value['abi'] === "none"){
diff --git a/others/index.php b/others/index.php
index 8a01967..38c77aa 100644
--- a/others/index.php
+++ b/others/index.php
@@ -518,6 +518,10 @@ require('../logout/logout.php');
API
APIの簡単な使用法です。
+
サーバー情報取得API
+
https://[ドメイン名(uwuzu.netなど)]/api/serverinfo-api
+
これによりサーバーの各種情報を取得できます。
+
ユーザー情報取得API
https://[ドメイン名(uwuzu.netなど)]/api/userdata-api?userid=[ユーザーID]
これによりユーザーのユーザーネーム(user_name)、プロフィール(profile)、登録日時(registered_date)、フォローしている人一覧(follow)、フォロワー一覧(follower)、フォロー・フォロワー数(follow_cnt,follower_cnt)が取得できます。
diff --git a/passrecovery/badrecovery.php b/passrecovery/badrecovery.php
index d38d575..7392f04 100644
--- a/passrecovery/badrecovery.php
+++ b/passrecovery/badrecovery.php
@@ -1,5 +1,13 @@
@@ -20,9 +28,15 @@ $servernamefile = "../server/servername.txt";
-
-
-
+
+
+
>
+
+
+
+
+
+
パスワード変更不可
diff --git a/passrecovery/donerecovery.php b/passrecovery/donerecovery.php
index 22d1d55..1a1695b 100644
--- a/passrecovery/donerecovery.php
+++ b/passrecovery/donerecovery.php
@@ -1,5 +1,13 @@
@@ -20,9 +28,15 @@ $servernamefile = "../server/servername.txt";
-
-
-
+
+
+
>
+
+
+
+
+
+
パスワードの変更が完了しました!
diff --git a/passrecovery/index.php b/passrecovery/index.php
index 9be48eb..f49b237 100644
--- a/passrecovery/index.php
+++ b/passrecovery/index.php
@@ -2,6 +2,14 @@
$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');
@@ -144,9 +152,15 @@ $pdo = null;
-
-
-
+
+
+
>
+
+
+
+
+
+
パスワードの復元
diff --git a/passrecovery/startrecovery.php b/passrecovery/startrecovery.php
index 4633cdb..26880e3 100644
--- a/passrecovery/startrecovery.php
+++ b/passrecovery/startrecovery.php
@@ -2,6 +2,14 @@
$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');
@@ -241,9 +249,15 @@ $pdo = null;
-
-
-
+
+
+
>
+
+
+
+
+
+
二段階認証
diff --git a/require/leftbox.php b/require/leftbox.php
index 0961ef1..c2671a2 100644
--- a/require/leftbox.php
+++ b/require/leftbox.php
@@ -1,8 +1,22 @@
-
+
+
+
+
>
+
+
+
ホーム
diff --git a/require/rightbox.php b/require/rightbox.php
index 59afc8e..d693ec9 100644
--- a/require/rightbox.php
+++ b/require/rightbox.php
@@ -18,6 +18,30 @@
for( $i=0;$i<$cnt;$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 = "
$domain ";
+
+ // URLをドメインのみを表示するaタグで置き換え
+ $postText = preg_replace('/' . preg_quote($url, '/') . '/', $link, $postText);
+ }
+
+ return $postText;
+ }
?>
お知らせ
@@ -32,7 +56,7 @@
diff --git a/rule/privacypolicy.php b/rule/privacypolicy.php
index 5afd0cb..c613852 100644
--- a/rule/privacypolicy.php
+++ b/rule/privacypolicy.php
@@ -1,6 +1,14 @@
+
+
プライバシーポリシー -
-
-
-
+
+
+
>
+
+
+
+
+
+
diff --git a/rule/releasenotes.php b/rule/releasenotes.php
index 4bf81fc..1068450 100644
--- a/rule/releasenotes.php
+++ b/rule/releasenotes.php
@@ -1,6 +1,14 @@
$1 ', $markdownText);
+ // リリースノートの項目わけ
+ $markdownText = preg_replace('/^new: (.+)/m', '
', $markdownText);
+ $markdownText = preg_replace('/^fix: (.+)/m', '
', $markdownText);
+ $markdownText = preg_replace('/^chg: (.+)/m', '
', $markdownText);
+ $markdownText = preg_replace('/^del: (.+)/m', '
', $markdownText);
+
+ $markdownText = preg_replace('/^ (.+)/m', '
', $markdownText);
+
// 空行の前に何もない行をHTMLのpタグに変換
$markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1
$2
', $markdownText);
@@ -62,6 +78,8 @@ foreach ($srelease as $release) {
+
+
リリースノート -
@@ -69,9 +87,15 @@ foreach ($srelease as $release) {
-
-
-
+
+
+
>
+
+
+
+
+
+
diff --git a/rule/serverabout.php b/rule/serverabout.php
index 8146890..c0af1d6 100644
--- a/rule/serverabout.php
+++ b/rule/serverabout.php
@@ -7,14 +7,16 @@ require('../db.php');
session_name('uwuzu_s_id');
session_start();
-$servericonfile = file_get_contents("../server/servericon.txt");
-$servericondata = explode( "\n", $servericonfile );
-$cnt = count($servericondata);
-for( $i=0;$i<$cnt;$i++ ){
- $uwuzuicon[$i] = ($servericondata[$i]);
-}
+$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]);
+}
$contactfile = "../server/contact.txt";
@@ -91,9 +93,15 @@ $count2 = $result2->num_rows;
-
-
-
+
+
+
>
+
+
+
+
+
+
@@ -101,7 +109,7 @@ $count2 = $result2->num_rows;
サーバー情報
-
+
diff --git a/rule/terms.php b/rule/terms.php
index f852b1b..c2c5c54 100644
--- a/rule/terms.php
+++ b/rule/terms.php
@@ -1,6 +1,14 @@
+
+
利用規約 -
-
-
-
+
+
+
>
+
+
+
+
+
+
diff --git a/rule/uwuzuabout.php b/rule/uwuzuabout.php
index b4e58dc..fbdc06e 100644
--- a/rule/uwuzuabout.php
+++ b/rule/uwuzuabout.php
@@ -1,6 +1,14 @@
+
+
について -
@@ -69,9 +79,15 @@ foreach ($sterms as $terms) {
-
-
-
+
+
+
>
+
+
+
+
+
+
diff --git a/search/index.php b/search/index.php
index 2e15762..2c1fcd1 100644
--- a/search/index.php
+++ b/search/index.php
@@ -260,7 +260,6 @@ $pdo = null;
+
サーバー名
サーバー名です。
diff --git a/settings_admin/userinfo.php b/settings_admin/userinfo.php
index 2aae2b6..a99c44a 100644
--- a/settings_admin/userinfo.php
+++ b/settings_admin/userinfo.php
@@ -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->bindParam(':touserid', $touserid, PDO::PARAM_STR);
- $stmt->bindParam(':msg', $msg, PDO::PARAM_STR);
- $stmt->bindParam(':url', $url, PDO::PARAM_STR);
- $stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR);
- $stmt->bindParam(':title', $title, PDO::PARAM_STR);
+ $stmt->bindParam(':touserid', htmlentities($touserid), PDO::PARAM_STR);
+ $stmt->bindParam(':msg', htmlentities($msg), PDO::PARAM_STR);
+ $stmt->bindParam(':url', htmlentities($url), PDO::PARAM_STR);
+ $stmt->bindParam(':userchk', htmlentities($userchk), 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クエリの実行
$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->bindParam(':touserid', $touserid, PDO::PARAM_STR);
- $stmt->bindParam(':msg', $msg, PDO::PARAM_STR);
- $stmt->bindParam(':url', $url, PDO::PARAM_STR);
- $stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR);
- $stmt->bindParam(':title', $title, PDO::PARAM_STR);
+ $stmt->bindParam(':touserid', htmlentities($touserid), PDO::PARAM_STR);
+ $stmt->bindParam(':msg', htmlentities($msg), PDO::PARAM_STR);
+ $stmt->bindParam(':url', htmlentities($url), PDO::PARAM_STR);
+ $stmt->bindParam(':userchk', htmlentities($userchk), 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クエリの実行
$res2 = $stmt->execute();
diff --git a/success.php b/success.php
index 03e1795..8c0dda0 100644
--- a/success.php
+++ b/success.php
@@ -1,5 +1,14 @@
-
-
-
+
+
+
>
+
+
+
+
+
+
アカウント作成完了!
diff --git a/ueuse/index.php b/ueuse/index.php
index b9011c7..c103a1a 100644
--- a/ueuse/index.php
+++ b/ueuse/index.php
@@ -238,6 +238,7 @@ if( !empty($_POST['btn_submit']) ) {
}
+
if (empty($_FILES['upload_images']['name'])) {
$photo1 = "none";
} 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'])) {
$video1 = "none";
} else {
@@ -366,7 +447,7 @@ if( !empty($_POST['btn_submit']) ) {
try {
// 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(':account', $userid, PDO::PARAM_STR);
@@ -376,6 +457,8 @@ if( !empty($_POST['btn_submit']) ) {
$stmt->bindParam(':photo1', $photo1, 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(':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->bindParam(':touserid', $touserid, PDO::PARAM_STR);
+ $stmt->bindParam(':touserid', htmlentities($touserid), PDO::PARAM_STR);
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR);
- $stmt->bindParam(':url', $url, PDO::PARAM_STR);
- $stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR);
- $stmt->bindParam(':title', $title, PDO::PARAM_STR);
+ $stmt->bindParam(':url', htmlentities($url), PDO::PARAM_STR);
+ $stmt->bindParam(':userchk', htmlentities($userchk), 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クエリの実行
$res = $stmt->execute();
@@ -515,6 +598,11 @@ $pdo = null;
+
@@ -543,6 +631,14 @@ $pdo = null;
+
+
+
+
+
+
+
+
@@ -569,6 +665,29 @@ $pdo = null;
});
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 = '画像を選択しました。
';
+ 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 = '画像を選択しました。
';
+ element.insertAdjacentHTML('afterend', createElement);
+ $("#images4").show();
+ });
+ file_reader.readAsText(e.target.files[0]);
+ });
+
document.getElementById("upload_images2").addEventListener('change', function(e){
var file_reader = new FileReader();
// ファイルの読み込みを行ったら実行
@@ -576,6 +695,7 @@ $pdo = null;
const element = document.querySelector('#images2');
const createElement = '画像を選択しました。
';
element.insertAdjacentHTML('afterend', createElement);
+ $("#images3").show();
});
file_reader.readAsText(e.target.files[0]);
});
@@ -849,6 +969,37 @@ $(document).ready(function() {
});
});
+ $(document).on('click', '.share', function (event) {
+
+ var 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) {
+ // シェア失敗時の処理
+ });
+
+ });
+
});
diff --git a/user/index.php b/user/index.php
index 124e045..ed16535 100644
--- a/user/index.php
+++ b/user/index.php
@@ -233,11 +233,14 @@ if( !empty($pdo) ) {
foreach ($matches[0] as $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タグを生成
$urlWithoutSpaces = preg_replace('/\s+/', '', $url);
- $link = "$domain ";
+ $link = "$domain ";
// URLをドメインのみを表示するaタグで置き換え
$postText = preg_replace('/' . preg_quote($url, '/') . '/', $link, $postText);
@@ -363,7 +366,7 @@ if( !empty($pdo) ) {
if (!empty($_POST['follow'])) {
// フォローボタンが押された場合の処理
$followerList = explode(',', $userdata['follower']);
- if (!in_array($userid, $followerList)) {
+ if (!(in_array($userid, $followerList))) {
// 自分が相手をフォローしていない場合、相手のfollowerカラムと自分のfollowカラムを更新
$followerList[] = $userid;
$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->bindParam(':touserid', $touserid, PDO::PARAM_STR);
- $stmt->bindParam(':msg', $msg, PDO::PARAM_STR);
- $stmt->bindParam(':url', $url, PDO::PARAM_STR);
- $stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR);
- $stmt->bindParam(':title', $title, PDO::PARAM_STR);
+ $stmt->bindParam(':touserid', htmlentities($touserid), PDO::PARAM_STR);
+ $stmt->bindParam(':msg', htmlentities($msg), PDO::PARAM_STR);
+ $stmt->bindParam(':url', htmlentities($url), PDO::PARAM_STR);
+ $stmt->bindParam(':userchk', htmlentities($userchk), 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クエリの実行
$res = $stmt->execute();
@@ -559,6 +562,9 @@ $pdo = null;
+
🦖💨 インターネットへの接続が切断されました...
@@ -1301,6 +1307,37 @@ $(document).ready(function() {
$("#offline").show();
}
}
+
+ $(document).on('click', '.share', function (event) {
+
+ var 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) {
+ // シェア失敗時の処理
+ });
+
+ });
});
diff --git a/uwuzu_database.sql b/uwuzu_database.sql
index 38531a8..d96b609 100644
--- a/uwuzu_database.sql
+++ b/uwuzu_database.sql
@@ -3,7 +3,7 @@
-- https://www.phpmyadmin.net/
--
-- ホスト: ひみつ
--- 生成日時: 2023-10-03 17:20:43
+-- 生成日時: 2023-11-15 14:03:33
-- サーバのバージョン: 10.4.28-MariaDB
-- PHP のバージョン: 8.2.4
@@ -171,6 +171,8 @@ CREATE TABLE `ueuse` (
`ueuse` text NOT NULL,
`photo1` varchar(512) NOT NULL,
`photo2` varchar(512) NOT NULL,
+ `photo3` varchar(512) NOT NULL,
+ `photo4` varchar(512) NOT NULL,
`video1` varchar(512) NOT NULL,
`datetime` datetime NOT NULL,
`favorite` text NOT NULL,