diff --git a/api/bot-api.php b/api/bot-api.php index 6fc92e1..5e71f39 100644 --- a/api/bot-api.php +++ b/api/bot-api.php @@ -190,20 +190,22 @@ if(isset($_GET['token'])&&isset($_GET['type'])) { try { // SQL作成 - $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, ueuse, photo1, photo2, video1, datetime, abi) VALUES (:username, :account, :uniqid, :ueuse, :photo1, :photo2, :video1, :datetime, :abi)"); + $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, ueuse, photo1, photo2, photo3, photo4, video1, datetime, abi) VALUES (:username, :account, :uniqid, :ueuse, :photo1, :photo2, :photo3, :photo4, :video1, :datetime, :abi)"); - $stmt->bindParam(':username', $username, PDO::PARAM_STR); - $stmt->bindParam(':account', $userid, PDO::PARAM_STR); - $stmt->bindParam(':uniqid', $uniqid, PDO::PARAM_STR); - $stmt->bindParam(':ueuse', $ueuse, PDO::PARAM_STR); + $stmt->bindParam(':username', htmlspecialchars($username, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':account', htmlspecialchars($userid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':uniqid', htmlspecialchars($uniqid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':ueuse', htmlspecialchars($ueuse, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); - $stmt->bindParam(':photo1', $nones, PDO::PARAM_STR); - $stmt->bindParam(':photo2', $nones, PDO::PARAM_STR); - $stmt->bindParam(':video1', $nones, PDO::PARAM_STR); + $stmt->bindParam(':photo1', htmlspecialchars($nones, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':photo2', htmlspecialchars($nones, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':photo3', htmlspecialchars($nones, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':photo4', htmlspecialchars($nones, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':video1', htmlspecialchars($nones, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); - $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + $stmt->bindParam(':datetime', htmlspecialchars($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); - $stmt->bindParam(':abi', $abi, PDO::PARAM_STR); + $stmt->bindParam(':abi', htmlspecialchars($abi, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); // SQLクエリの実行 $res = $stmt->execute(); @@ -218,6 +220,7 @@ if(isset($_GET['token'])&&isset($_GET['type'])) { $pdo->beginTransaction(); try { + $fromuserid = $userid; $touserid = $mentionedUser; $datetime = date("Y-m-d H:i:s"); $msg = "" . $ueuse . ""; @@ -226,16 +229,16 @@ if(isset($_GET['token'])&&isset($_GET['type'])) { $userchk = 'none'; // 通知用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 (fromuserid, touserid, msg, url, datetime, userchk, title) VALUES (:fromuserid, :touserid, :msg, :url, :datetime, :userchk, :title)"); + $stmt->bindParam(':fromuserid', htmlspecialchars($fromuserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':touserid', htmlspecialchars($touserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':msg', htmlspecialchars($msg, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':url', htmlspecialchars($url, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':userchk', htmlspecialchars($userchk, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':title', htmlspecialchars($title, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); - $stmt->bindParam(':touserid', $touserid, PDO::PARAM_STR); - $stmt->bindParam(':msg', $msg, PDO::PARAM_STR); - $stmt->bindParam(':url', $url, PDO::PARAM_STR); - $stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR); - $stmt->bindParam(':title', $title, PDO::PARAM_STR); - - $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + $stmt->bindParam(':datetime', htmlspecialchars($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); // SQLクエリの実行 $res = $stmt->execute(); diff --git a/css/home.css b/css/home.css index 53a736e..70f0461 100644 --- a/css/home.css +++ b/css/home.css @@ -488,6 +488,7 @@ main h1{ width: auto; height:auto; margin-bottom: 12px; + overflow-wrap: break-all; } .userheader .hed img{ @@ -5706,7 +5707,7 @@ summary { overflow-wrap: break-word; margin-top: 32px; margin-bottom: auto; - margin-left: -6px; + margin-left: 0px; font-size: 16px; color:var(--link-color); text-decoration: none; diff --git a/delete/delete.php b/delete/delete.php index b6ee1f7..3a3f490 100644 --- a/delete/delete.php +++ b/delete/delete.php @@ -44,7 +44,56 @@ if (htmlentities(isset($_POST['uniqid'])) && htmlentities(isset($_POST['userid'] $result2 = $query->fetch(); if($result2["loginid"] === $loginid){ + $photo_query = $dbh->prepare("SELECT * FROM ueuse WHERE account = :userid AND uniqid = :uniqid"); + $photo_query->bindValue(':userid', $postUserid); + $photo_query->bindValue(':uniqid', $postUniqid); + $photo_query->execute(); + $photo_and_video = $photo_query->fetch(); + + if(!($photo_and_video["photo1"] == "none")){ + $photoDelete1 = glob($photo_and_video["photo1"]); // 「-ユーザーID.拡張子」というパターンを検索 + foreach ($photoDelete1 as $photo1) { + if (is_file($photo1)) { + unlink($photo1); + } + } + } + if(!($photo_and_video["photo2"] == "none")){ + $photoDelete2 = glob($photo_and_video["photo2"]); // 「-ユーザーID.拡張子」というパターンを検索 + foreach ($photoDelete2 as $photo2) { + if (is_file($photo2)) { + unlink($photo2); + } + } + } + if(!($photo_and_video["photo3"] == "none")){ + $photoDelete3 = glob($photo_and_video["photo3"]); // 「-ユーザーID.拡張子」というパターンを検索 + foreach ($photoDelete3 as $photo3) { + if (is_file($photo3)) { + unlink($photo3); + } + } + } + if(!($photo_and_video["photo4"] == "none")){ + $photoDelete4 = glob($photo_and_video["photo4"]); // 「-ユーザーID.拡張子」というパターンを検索 + foreach ($photoDelete4 as $photo4) { + if (is_file($photo4)) { + unlink($photo4); + } + } + } + if(!($photo_and_video["video1"] == "none")){ + $videoDelete1 = glob($photo_and_video["video1"]); // 「-ユーザーID.拡張子」というパターンを検索 + foreach ($videoDelete1 as $video1) { + if (is_file($video1)) { + unlink($video1); + } + } + } + + try { + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS); // 削除クエリを実行 diff --git a/home/ftl.php b/home/ftl.php index 73779ec..5b4a52f 100644 --- a/home/ftl.php +++ b/home/ftl.php @@ -225,10 +225,10 @@ function get_mentions_userid($postText) { if( !empty($_POST['btn_submit']) ) { - $ueuse = htmlentities($_POST['ueuse']); + $ueuse = htmlspecialchars($_POST['ueuse'], ENT_QUOTES, 'UTF-8', false); if(isset($_POST['nsfw_chk'])){ - $nsfw_chk = htmlentities($_POST['nsfw_chk']); + $nsfw_chk = htmlspecialchars($_POST['nsfw_chk'], ENT_QUOTES, 'UTF-8', false); }else{ $nsfw_chk = "false"; } @@ -244,8 +244,8 @@ if( !empty($_POST['btn_submit']) ) { $error_message[] = '内容を入力してください。(INPUT_PLEASE)'; } else { // 文字数を確認 - if( (int)htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8') < mb_strlen($ueuse, 'UTF-8') ) { - $error_message[] = '内容は'.htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8').'文字以内で入力してください。(INPUT_OVER_MAX_COUNT)'; + if( (int)htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8', false) < mb_strlen($ueuse, 'UTF-8') ) { + $error_message[] = '内容は'.htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8', false).'文字以内で入力してください。(INPUT_OVER_MAX_COUNT)'; } // 禁止url確認 @@ -492,21 +492,21 @@ if( !empty($_POST['btn_submit']) ) { // SQL作成 $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); - $stmt->bindParam(':uniqid', $uniqid, PDO::PARAM_STR); - $stmt->bindParam(':ueuse', $ueuse, PDO::PARAM_STR); + $stmt->bindParam(':username', htmlspecialchars($username, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':account', htmlspecialchars($userid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':uniqid', htmlspecialchars($uniqid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':ueuse', htmlspecialchars($ueuse, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); - $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); + $stmt->bindParam(':photo1', htmlspecialchars($photo1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':photo2', htmlspecialchars($photo2, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':photo3', htmlspecialchars($photo3, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':photo4', htmlspecialchars($photo4, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':video1', htmlspecialchars($video1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':datetime', htmlspecialchars($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); - $stmt->bindParam(':nsfw', $save_nsfw, PDO::PARAM_STR); + $stmt->bindParam(':nsfw', htmlspecialchars($save_nsfw, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); - $stmt->bindParam(':abi', $abi, PDO::PARAM_STR); + $stmt->bindParam(':abi', htmlspecialchars($abi, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); // SQLクエリの実行 $res = $stmt->execute(); @@ -532,14 +532,14 @@ if( !empty($_POST['btn_submit']) ) { $stmt = $pdo->prepare("INSERT INTO notification (fromuserid, touserid, msg, url, datetime, userchk, title) VALUES (:fromuserid, :touserid, :msg, :url, :datetime, :userchk, :title)"); - $stmt->bindParam(':fromuserid', htmlentities($fromuserid), PDO::PARAM_STR); - $stmt->bindParam(':touserid', htmlentities($touserid), PDO::PARAM_STR); - $stmt->bindParam(':msg', $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(':fromuserid', htmlspecialchars($fromuserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':touserid', htmlspecialchars($touserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':msg', htmlspecialchars($msg, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':url', htmlspecialchars($url, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':userchk', htmlspecialchars($userchk, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':title', htmlspecialchars($title, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); - $stmt->bindParam(':datetime', htmlentities($datetime), PDO::PARAM_STR); + $stmt->bindParam(':datetime', htmlspecialchars($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); // SQLクエリの実行 $res = $stmt->execute(); diff --git a/home/index.php b/home/index.php index 7ba7ea8..79d35f8 100644 --- a/home/index.php +++ b/home/index.php @@ -190,7 +190,7 @@ $notificationcount = $notiData['notification_count']; //-----------------URLから取得---------------- if(isset($_GET['text'])) { - $ueuse = htmlentities($_GET['text']); + $ueuse = htmlspecialchars($_GET['text'], ENT_QUOTES, 'UTF-8', false); } //------------------------------------------- @@ -222,10 +222,10 @@ function get_mentions_userid($postText) { } if( !empty($_POST['btn_submit']) ) { - $ueuse = htmlentities($_POST['ueuse']); + $ueuse = htmlspecialchars($_POST['ueuse'], ENT_QUOTES, 'UTF-8', false); if(isset($_POST['nsfw_chk'])){ - $nsfw_chk = htmlentities($_POST['nsfw_chk']); + $nsfw_chk = htmlspecialchars($_POST['nsfw_chk'], ENT_QUOTES, 'UTF-8', false); }else{ $nsfw_chk = "false"; } @@ -241,8 +241,8 @@ if( !empty($_POST['btn_submit']) ) { $error_message[] = '内容を入力してください。(INPUT_PLEASE)'; } else { // 文字数を確認 - if( (int)htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8') < mb_strlen($ueuse, 'UTF-8') ) { - $error_message[] = '内容は'.htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8').'文字以内で入力してください。(INPUT_OVER_MAX_COUNT)'; + if( (int)htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8', false) < mb_strlen($ueuse, 'UTF-8') ) { + $error_message[] = '内容は'.htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8', false).'文字以内で入力してください。(INPUT_OVER_MAX_COUNT)'; } // 禁止url確認 @@ -490,21 +490,21 @@ if( !empty($_POST['btn_submit']) ) { // SQL作成 $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); - $stmt->bindParam(':uniqid', $uniqid, PDO::PARAM_STR); - $stmt->bindParam(':ueuse', $ueuse, PDO::PARAM_STR); + $stmt->bindParam(':username', htmlspecialchars($username, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':account', htmlspecialchars($userid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':uniqid', htmlspecialchars($uniqid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':ueuse', htmlspecialchars($ueuse, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); - $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); + $stmt->bindParam(':photo1', htmlspecialchars($photo1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':photo2', htmlspecialchars($photo2, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':photo3', htmlspecialchars($photo3, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':photo4', htmlspecialchars($photo4, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':video1', htmlspecialchars($video1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':datetime', htmlspecialchars($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); - $stmt->bindParam(':nsfw', $save_nsfw, PDO::PARAM_STR); + $stmt->bindParam(':nsfw', htmlspecialchars($save_nsfw, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); - $stmt->bindParam(':abi', $abi, PDO::PARAM_STR); + $stmt->bindParam(':abi', htmlspecialchars($abi, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); // SQLクエリの実行 $res = $stmt->execute(); @@ -531,14 +531,14 @@ if( !empty($_POST['btn_submit']) ) { $stmt = $pdo->prepare("INSERT INTO notification (fromuserid, touserid, msg, url, datetime, userchk, title) VALUES (:fromuserid, :touserid, :msg, :url, :datetime, :userchk, :title)"); - $stmt->bindParam(':fromuserid', htmlentities($fromuserid), PDO::PARAM_STR); - $stmt->bindParam(':touserid', htmlentities($touserid), PDO::PARAM_STR); - $stmt->bindParam(':msg', $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(':fromuserid', htmlspecialchars($fromuserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':touserid', htmlspecialchars($touserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':msg', htmlspecialchars($msg, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':url', htmlspecialchars($url, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':userchk', htmlspecialchars($userchk, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); + $stmt->bindParam(':title', htmlspecialchars($title, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); - $stmt->bindParam(':datetime', htmlentities($datetime), PDO::PARAM_STR); + $stmt->bindParam(':datetime', htmlspecialchars($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); // SQLクエリの実行 $res = $stmt->execute(); diff --git a/nextpage/notification.php b/nextpage/notification.php index 0a6b3e0..0f1d2c5 100644 --- a/nextpage/notification.php +++ b/nextpage/notification.php @@ -73,7 +73,7 @@ if (isset($_GET['userid']) && isset($_GET['account_id'])) { if (!empty($message_array)) { foreach ($message_array as $value) { - $value["servericon"] = htmlspecialchars($serversettings["serverinfo"]["server_icon"], ENT_QUOTES, 'UTF-8'); + $value["servericon"] = htmlspecialchars($serversettings["serverinfo"]["server_icon"], ENT_QUOTES, 'UTF-8', false); if(!(empty($value['fromuserid']))){ if(!($value['fromuserid'] == "uwuzu-fromsys")){ $userQuery = $dbh->prepare("SELECT username,iconname FROM account WHERE userid = :userid"); diff --git a/nextpage/notificationview.php b/nextpage/notificationview.php index a54852f..0de2ffe 100644 --- a/nextpage/notificationview.php +++ b/nextpage/notificationview.php @@ -39,6 +39,7 @@ function processMarkdownAndWrapEmptyLines($markdownText){ } //Profile function replaceProfileEmojiImages($postText) { + $postText = str_replace(''', '\'', $postText); // プロフィール名で絵文字名(:emoji:)を検出して画像に置き換える $emojiPattern = '/:(\w+):/'; $postTextWithImages = preg_replace_callback($emojiPattern, function($matches) { @@ -63,6 +64,7 @@ function replaceProfileEmojiImages($postText) { return $postTextWithImages; } function replaceEmojisWithImages($postText) { + $postText = str_replace(''', '\'', $postText); // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える $emojiPattern = '/:(\w+):/'; $postTextWithImages = preg_replace_callback($emojiPattern, function($matches) { @@ -104,14 +106,14 @@ function replaceEmojisWithImages($postText) { if(empty($mentionsuserData)){ return "@$username"; }else{ - return "@".replaceProfileEmojiImages(htmlentities($mentionsuserData["username"])).""; + return "@".replaceProfileEmojiImages(htmlspecialchars($mentionsuserData["username"], ENT_QUOTES, 'UTF-8', false)).""; } }, $postTextWithImages); $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 "" . '#' . htmlspecialchars($hashtags, ENT_QUOTES, 'UTF-8', false) . ""; }, $postTextWithImagesAndUsernames); return $postTextWithHashtags; @@ -133,11 +135,11 @@ class MessageDisplay { echo '
' . processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(nl2br($this->value['msg']))) . '
'; - echo ' 詳細をみる'; + echo '' . processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(nl2br(htmlspecialchars($this->value['msg'], ENT_QUOTES, 'UTF-8', false)))) . '
'; + echo ' 詳細をみる'; echo ''; } diff --git a/nextpage/user_view.php b/nextpage/user_view.php index 2980a04..8b0878c 100644 --- a/nextpage/user_view.php +++ b/nextpage/user_view.php @@ -17,16 +17,16 @@ class UserdataDisplay { echo '' .replaceEmojisWithImages(replaceURLsWithLinks(nl2br($this->value['profile']))) . '
'; + echo '' .replaceEmojisWithImages(replaceURLsWithLinks(nl2br(htmlspecialchars($this->value['profile'], ENT_QUOTES, 'UTF-8', false)))) . '
'; echo 'NSFW指定がされている投稿です!
職場や公共の場での表示には適さない場合があります。
表示ボタンを押すと表示されます。
' . replaceEmojisWithImages(processMarkdownAndWrapEmptyLines(replaceURLsWithLinks(nl2br($this->value['ueuse'])))) . '
'; + echo '' . replaceEmojisWithImages(processMarkdownAndWrapEmptyLines(replaceURLsWithLinks(nl2br(htmlspecialchars($this->value['ueuse'], ENT_QUOTES, 'UTF-8', false))))) . '
'; if (!empty($this->value['photo4']) && $this->value['photo4'] !== 'none') { echo ''.processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(replaceURLsWithLinks(nl2br($this->value['abi'])))) . '
'; - echo ''.processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(replaceURLsWithLinks(nl2br(htmlspecialchars($this->value['abi'], ENT_QUOTES, 'UTF-8', false))))) . '
'; + echo '@
+@
;"> - +