あけましておめでとうございます!
あけましておめでとうございます
今日からですね~!
今年もどうぞuwuzuをよろしくお願いいたします!
・
PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_MULTI_STATEMENTS => false ); $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); } catch(PDOException $e) { // 接続エラーのときエラー内容を取得する $error_message[] = $e->getMessage(); } if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] == true) { $passQuery = $pdo->prepare("SELECT username,userid,loginid,follow,admin,role,sacinfo,blocklist FROM account WHERE userid = :userid"); $passQuery->bindValue(':userid', htmlentities($_SESSION['userid'])); $passQuery->execute(); $res = $passQuery->fetch(); if(empty($res["userid"])){ header("Location: ../login.php"); exit; }elseif($_SESSION['loginid'] === $res["loginid"] && $_SESSION['userid'] == $res["userid"]){ // セッションに値をセット $userid = htmlentities($res['userid']); // セッションに格納されている値をそのままセット $username = htmlentities($res['username']); // セッションに格納されている値をそのままセット $loginid = htmlentities($res["loginid"]); $role = htmlentities($res["role"]); $sacinfo = htmlentities($res["sacinfo"]); $myblocklist = htmlentities($res["blocklist"]); $myfollowlist = htmlentities($res["follow"]); $_SESSION['admin_login'] = true; $_SESSION['userid'] = $userid; $_SESSION['username'] = $username; $_SESSION['loginid'] = $res["loginid"]; setcookie('userid', $userid, [ 'expires' => time() + 60 * 60 * 24 * 14, 'path' => '/', 'samesite' => 'lax', 'secure' => true, 'httponly' => true, ]); setcookie('username', $username,[ 'expires' => time() + 60 * 60 * 24 * 14, 'path' => '/', 'samesite' => 'lax', 'secure' => true, 'httponly' => true, ]); setcookie('loginid', $res["loginid"],[ 'expires' => time() + 60 * 60 * 24 * 14, 'path' => '/', 'samesite' => 'lax', 'secure' => true, 'httponly' => true, ]); setcookie('admin_login', true,[ 'expires' => time() + 60 * 60 * 24 * 14, 'path' => '/', 'samesite' => 'lax', 'secure' => true, 'httponly' => true, ]); }else{ header("Location: ../login.php"); exit; } } elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { $passQuery = $pdo->prepare("SELECT username,userid,loginid,follow,admin,role,sacinfo,blocklist FROM account WHERE userid = :userid"); $passQuery->bindValue(':userid', htmlentities($_COOKIE['userid'])); $passQuery->execute(); $res = $passQuery->fetch(); if(empty($res["userid"])){ header("Location: ../login.php"); exit; }elseif($_COOKIE['loginid'] === $res["loginid"] && $_COOKIE['userid'] == $res["userid"]){ // セッションに値をセット $userid = htmlentities($res['userid']); // クッキーから取得した値をセット $username = htmlentities($res['username']); // クッキーから取得した値をセット $loginid = htmlentities($res["loginid"]); $role = htmlentities($res["role"]); $sacinfo = htmlentities($res["sacinfo"]); $myblocklist = htmlentities($res["blocklist"]); $myfollowlist = htmlentities($res["follow"]); $_SESSION['admin_login'] = true; $_SESSION['userid'] = $userid; $_SESSION['username'] = $username; $_SESSION['loginid'] = $res["loginid"]; setcookie('userid', $userid,[ 'expires' => time() + 60 * 60 * 24 * 14, 'path' => '/', 'samesite' => 'lax', 'secure' => true, 'httponly' => true, ]); setcookie('username', $username,[ 'expires' => time() + 60 * 60 * 24 * 14, 'path' => '/', 'samesite' => 'lax', 'secure' => true, 'httponly' => true, ]); setcookie('loginid', $res["loginid"],[ 'expires' => time() + 60 * 60 * 24 * 14, 'path' => '/', 'samesite' => 'lax', 'secure' => true, 'httponly' => true, ]); setcookie('admin_login', true,[ 'expires' => time() + 60 * 60 * 24 * 14, 'path' => '/', 'samesite' => 'lax', 'secure' => true, 'httponly' => true, ]); }else{ header("Location: ../login.php"); exit; } } else { // ログインが許可されていない場合、ログインページにリダイレクト header("Location: ../login.php"); exit; } if(empty($userid)){ header("Location: ../login.php"); exit; } if(empty($username)){ header("Location: ../login.php"); exit; } $notiQuery = $pdo->prepare("SELECT COUNT(*) as notification_count FROM notification WHERE touserid = :userid AND userchk = 'none'"); $notiQuery->bindValue(':userid', $userid); $notiQuery->execute(); $notiData = $notiQuery->fetch(PDO::FETCH_ASSOC); $notificationcount = $notiData['notification_count']; //-----------------URLから取得---------------- if(isset($_GET['text'])) { $ueuse = htmlentities($_GET['text'], ENT_QUOTES, 'UTF-8', false); }elseif(isset($_COOKIE['ueuse'])) { $ueuse = htmlentities($_COOKIE['ueuse'], ENT_QUOTES, 'UTF-8', false); } //-----------------絵文字の取得---------------- if (!empty($pdo)) { $custom_emoji_Query = "SELECT emojifile,emojiname,emojiinfo,emojidate FROM emoji ORDER BY emojidate DESC"; $custom_emoji_array = $pdo->query($custom_emoji_Query); while ($row = $custom_emoji_array->fetch(PDO::FETCH_ASSOC)) { $custom_emoji[] = $row; } } //------------------------------------------- function get_mentions_userid($postText) { // @useridを検出する $usernamePattern = '/@(\w+)/'; $mentionedUsers = []; preg_replace_callback($usernamePattern, function($matches) use (&$mentionedUsers) { $mention_username = $matches[1]; $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, )); $mention_userQuery = $dbh->prepare("SELECT username, userid FROM account WHERE userid = :userid"); $mention_userQuery->bindValue(':userid', $mention_username); $mention_userQuery->execute(); $mention_userData = $mention_userQuery->fetch(); if (!empty($mention_userData)) { $mentionedUsers[] = $mention_username; } }, $postText); return $mentionedUsers; } if( !empty($_POST['btn_submit']) ) { $ueuse = htmlentities($_POST['ueuse'], ENT_QUOTES, 'UTF-8', false); if(isset($_POST['nsfw_chk'])){ $nsfw_chk = htmlentities($_POST['nsfw_chk'], ENT_QUOTES, 'UTF-8', false); }else{ $nsfw_chk = "false"; } if($nsfw_chk === "true"){ $save_nsfw = "true"; }else{ $save_nsfw = "false"; } // メッセージの入力チェック if( empty($ueuse) ) { $error_message[] = '内容を入力してください。(INPUT_PLEASE)'; } else { // 文字数を確認 if( (int)htmlentities(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8', false) < mb_strlen($ueuse, 'UTF-8') ) { $error_message[] = '内容は'.htmlentities(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8', false).'文字以内で入力してください。(INPUT_OVER_MAX_COUNT)'; } // 禁止url確認 for($i = 0; $i < count($banurl); $i++) { if(!($banurl[$i] == "")){ if (false !== strpos($ueuse, 'https://'.$banurl[$i])) { $error_message[] = '投稿が禁止されているURLが含まれています。(INPUT_CONTAINS_PROHIBITED_URL)'; } } } } $old_datetime = date("Y-m-d H:i:00"); $now_datetime = date("Y-m-d H:i:00",strtotime("+1 minute")); $rate_Query = $pdo->prepare("SELECT * FROM ueuse WHERE account = :userid AND TIME(datetime) BETWEEN :old_datetime AND :now_datetime"); $rate_Query->bindValue(':userid', $userid); $rate_Query->bindValue(':old_datetime', $old_datetime); $rate_Query->bindValue(':now_datetime', $now_datetime); $rate_Query->execute(); $rate_count = $rate_Query->rowCount(); if(!($rate_count > $max_ueuse_rate_limit-1)){ if (empty($_FILES['upload_images']['name'])) { $photo1 = "none"; } else { // アップロードされたファイル情報 $uploadedFile = $_FILES['upload_images']; if(check_mime($uploadedFile['tmp_name'])){ // アップロードされたファイルの拡張子を取得 $extension = pathinfo($uploadedFile['name'], PATHINFO_EXTENSION); // 新しいファイル名を生成(uniqid + 拡張子) $newFilename = uniqid() . '-'.$userid.'.' . $extension; // 保存先のパスを生成 $uploadedPath = '../ueuseimages/' . $newFilename; // EXIF削除 delete_exif($extension, $uploadedFile['tmp_name']); // ファイルを移動 $result = move_uploaded_file($uploadedFile['tmp_name'], $uploadedPath); if ($result) { $photo1 = $uploadedPath; // 保存されたファイルのパスを使用 } else { $errnum = $uploadedFile['error']; if($errnum === 1){$errcode = "FILE_DEKASUGUI_PHP_INI_KAKUNIN";} if($errnum === 2){$errcode = "FILE_DEKASUGUI_HTML_KAKUNIN";} if($errnum === 3){$errcode = "FILE_SUKOSHIDAKE_UPLOAD";} if($errnum === 4){$errcode = "FILE_UPLOAD_DEKINAKATTA";} if($errnum === 6){$errcode = "TMP_FOLDER_NAI";} if($errnum === 7){$errcode = "FILE_KAKIKOMI_SIPPAI";} if($errnum === 8){$errcode = "PHPINFO()_KAKUNIN";} $error_message[] = 'アップロード失敗!(1)エラーコード:' .$errcode.''; } }else{ $error_message[] = "使用できない画像形式です。(SORRY_FILE_HITAIOU)"; } } if (empty($_FILES['upload_images2']['name'])) { $photo2 = "none"; } else { if (empty($_FILES['upload_images']['name'])){ $error_message[] = '画像1から画像を選択してください!!!(PHOTO_SELECT_PLEASE)'; } // アップロードされたファイル情報 $uploadedFile2 = $_FILES['upload_images2']; if(check_mime($uploadedFile2['tmp_name'])){ // アップロードされたファイルの拡張子を取得 $extension2 = pathinfo($uploadedFile2['name'], PATHINFO_EXTENSION); // 新しいファイル名を生成(uniqid + 拡張子) $newFilename2 = uniqid() . '-'.$userid.'.' . $extension2; // 保存先のパスを生成 $uploadedPath2 = '../ueuseimages/' . $newFilename2; // EXIF削除 delete_exif($extension, $uploadedFile2['tmp_name']); // ファイルを移動 $result2 = move_uploaded_file($uploadedFile2['tmp_name'], $uploadedPath2); if ($result2) { $photo2 = $uploadedPath2; // 保存されたファイルのパスを使用 } else { $errnum = $uploadedFile2['error']; if($errnum === 1){$errcode = "FILE_DEKASUGUI_PHP_INI_KAKUNIN";} if($errnum === 2){$errcode = "FILE_DEKASUGUI_HTML_KAKUNIN";} if($errnum === 3){$errcode = "FILE_SUKOSHIDAKE_UPLOAD";} if($errnum === 4){$errcode = "FILE_UPLOAD_DEKINAKATTA";} if($errnum === 6){$errcode = "TMP_FOLDER_NAI";} if($errnum === 7){$errcode = "FILE_KAKIKOMI_SIPPAI";} if($errnum === 8){$errcode = "PHPINFO()_KAKUNIN";} $error_message[] = 'アップロード失敗!(2)エラーコード:' .$errcode.''; } }else{ $error_message[] = "使用できない画像形式です。(SORRY_FILE_HITAIOU)"; } } if (empty($_FILES['upload_images3']['name'])) { $photo3 = "none"; } else { if (empty($_FILES['upload_images2']['name'])){ $error_message[] = '画像2から画像を選択してください!!!(PHOTO_SELECT_PLEASE)'; } // アップロードされたファイル情報 $uploadedFile3 = $_FILES['upload_images3']; if(check_mime($uploadedFile3['tmp_name'])){ // アップロードされたファイルの拡張子を取得 $extension3 = pathinfo($uploadedFile3['name'], PATHINFO_EXTENSION); // 新しいファイル名を生成(uniqid + 拡張子) $newFilename3 = uniqid() . '-'.$userid.'.' . $extension3; // 保存先のパスを生成 $uploadedPath3 = '../ueuseimages/' . $newFilename3; // EXIF削除 delete_exif($extension3, $uploadedFile3['tmp_name']); // ファイルを移動 $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.''; } }else{ $error_message[] = "使用できない画像形式です。(SORRY_FILE_HITAIOU)"; } } if (empty($_FILES['upload_images4']['name'])) { $photo4 = "none"; } else { if (empty($_FILES['upload_images3']['name'])){ $error_message[] = '画像3から画像を選択してください!!!(PHOTO_SELECT_PLEASE)'; } // アップロードされたファイル情報 $uploadedFile4 = $_FILES['upload_images4']; if(check_mime($uploadedFile4['tmp_name'])){ // アップロードされたファイルの拡張子を取得 $extension4 = pathinfo($uploadedFile4['name'], PATHINFO_EXTENSION); // 新しいファイル名を生成(uniqid + 拡張子) $newFilename4 = uniqid() . '-'.$userid.'.' . $extension4; // 保存先のパスを生成 $uploadedPath4 = '../ueuseimages/' . $newFilename4; // EXIF削除 delete_exif($extension4, $uploadedFile4['tmp_name']); // ファイルを移動 $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.''; } }else{ $error_message[] = "使用できない画像形式です。(SORRY_FILE_HITAIOU)"; } } if (empty($_FILES['upload_videos1']['name'])) { $video1 = "none"; } else { // アップロードされたファイル情報 $uploadedVideo = $_FILES['upload_videos1']; // アップロードされたファイルの拡張子を取得 $extensionVideo = strtolower(pathinfo($uploadedVideo['name'], PATHINFO_EXTENSION)); // 小文字に変換 if(check_mime_video($uploadedVideo['tmp_name'])){ // 正しい拡張子の場合、新しいファイル名を生成 $newFilenameVideo = uniqid() . '-'.$userid.'.' . $extensionVideo; // 保存先のパスを生成 $uploadedPathVideo = '../ueusevideos/' . $newFilenameVideo; // ファイルを移動 $resultVideo = move_uploaded_file($uploadedVideo['tmp_name'], $uploadedPathVideo); if ($resultVideo) { $video1 = $uploadedPathVideo; // 保存されたファイルのパスを使用 } else { $errnum = $uploadedVideo['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[] = 'アップロード失敗!(5)エラーコード:' .$errcode.''; } } else { $error_message[] = '対応していないファイル形式です!(SORRY_FILE_HITAIOU)'; } } if( empty($error_message) ) { //一時保存していたユーズ内容の削除 setcookie("ueuse", "", time() - 30); // 書き込み日時を取得 $datetime = date("Y-m-d H:i:s"); $uniqid = createUniqId(); $abi = "none"; // トランザクション開始 $pdo->beginTransaction(); try { // SQL作成 $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, ueuse, photo1, photo2, photo3, photo4, video1, datetime, abi, nsfw) VALUES (:username, :account, :uniqid, :ueuse, :photo1, :photo2, :photo3, :photo4, :video1, :datetime, :abi, :nsfw)"); $stmt->bindParam(':username', htmlentities($username, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); $stmt->bindParam(':account', htmlentities($userid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); $stmt->bindParam(':uniqid', htmlentities($uniqid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); $stmt->bindParam(':ueuse', htmlentities($ueuse, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); $stmt->bindParam(':photo1', htmlentities($photo1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); $stmt->bindParam(':photo2', htmlentities($photo2, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); $stmt->bindParam(':photo3', htmlentities($photo3, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); $stmt->bindParam(':photo4', htmlentities($photo4, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); $stmt->bindParam(':video1', htmlentities($video1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); $stmt->bindParam(':datetime', htmlentities($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); $stmt->bindParam(':nsfw', htmlentities($save_nsfw, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); $stmt->bindParam(':abi', htmlentities($abi, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); // SQLクエリの実行 $res = $stmt->execute(); // コミット $res = $pdo->commit(); $mentionedUsers = array_unique(get_mentions_userid($ueuse)); foreach ($mentionedUsers as $mentionedUser) { $pdo->beginTransaction(); try { $fromuserid = $userid; $touserid = $mentionedUser; $datetime = date("Y-m-d H:i:s"); $msg = "" . $ueuse . ""; $title = "" . $userid . "さんにメンションされました!"; $url = "/!" . $uniqid . ""; $userchk = 'none'; // 通知用SQL作成 $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, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); $stmt->bindParam(':touserid', htmlentities($touserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); $stmt->bindParam(':msg', htmlentities($msg, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); $stmt->bindParam(':url', htmlentities($url, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); $stmt->bindParam(':userchk', htmlentities($userchk, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); $stmt->bindParam(':title', htmlentities($title, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); $stmt->bindParam(':datetime', htmlentities($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR); // SQLクエリの実行 $res = $stmt->execute(); // コミット $res = $pdo->commit(); } catch(Exception $e) { // エラーが発生した時はロールバック $pdo->rollBack(); } } } catch(Exception $e) { // エラーが発生した時はロールバック $pdo->rollBack(); } if( $res ) { $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];; header("Location:".$url.""); exit; } else { $error_message[] = $e->getMessage(); } // プリペアドステートメントを削除 $stmt = null; } }else{ $error_message[] = "投稿回数のレート制限を超過しています。(OVER_RATE_LIMIT)"; } } require('../logout/logout.php'); // データベースの接続を閉じる $pdo = null; ?>
あけましておめでとうございます
今日からですね~!
今年もどうぞuwuzuをよろしくお願いいたします!
・