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,admin FROM account WHERE userid = :userid"); $passQuery->bindValue(':userid', $_SESSION['userid']); $passQuery->execute(); $res = $passQuery->fetch(); if(empty($res["userid"])){ header("Location: ../login.php"); exit; }elseif($_SESSION['loginid'] === $res["loginid"]){ // セッションに値をセット $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット $username = $_SESSION['username']; // セッションに格納されている値をそのままセット $_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', ]); setcookie('username', $username,[ 'expires' => time() + 60 * 60 * 24 * 14, 'path' => '/', 'samesite' => 'lax', ]); setcookie('loginid', $res["loginid"],[ 'expires' => time() + 60 * 60 * 24 * 14, 'path' => '/', 'samesite' => 'lax', ]); setcookie('admin_login', true,[ 'expires' => time() + 60 * 60 * 24 * 14, 'path' => '/', 'samesite' => 'lax', ]); }else{ header("Location: ../login.php"); exit; } } elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); $passQuery->bindValue(':userid', $_COOKIE['userid']); $passQuery->execute(); $res = $passQuery->fetch(); if(empty($res["userid"])){ header("Location: ../login.php"); exit; }elseif($_COOKIE['loginid'] === $res["loginid"]){ // セッションに値をセット $userid = $_COOKIE['userid']; // クッキーから取得した値をセット $username = $_COOKIE['username']; // クッキーから取得した値をセット $_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', ]); setcookie('username', $username,[ 'expires' => time() + 60 * 60 * 24 * 14, 'path' => '/', 'samesite' => 'lax', ]); setcookie('loginid', $res["loginid"],[ 'expires' => time() + 60 * 60 * 24 * 14, 'path' => '/', 'samesite' => 'lax', ]); setcookie('admin_login', true,[ 'expires' => time() + 60 * 60 * 24 * 14, 'path' => '/', 'samesite' => 'lax', ]); }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']; //------------------------------------------- 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']); // メッセージの入力チェック if( empty($ueuse) ) { $error_message[] = '内容を入力してください。'; } else { // 文字数を確認 if( 1024 < mb_strlen($ueuse, 'UTF-8') ) { $error_message[] = '内容は1024文字以内で入力してください。'; } } if (empty($_FILES['upload_images']['name'])) { $photo1 = "none"; } else { // アップロードされたファイル情報 $uploadedFile = $_FILES['upload_images']; // アップロードされたファイルの拡張子を取得 $extension = pathinfo($uploadedFile['name'], PATHINFO_EXTENSION); // 新しいファイル名を生成(uniqid + 拡張子) $newFilename = uniqid() . '-'.$userid.'.' . $extension; // 保存先のパスを生成 $uploadedPath = '../ueuseimages/' . $newFilename; // ファイルを移動 $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[] = 'アップロード失敗!(2)エラーコード:' .$errcode.''; } } if (empty($_FILES['upload_images2']['name'])) { $photo2 = "none"; } else { if (empty($_FILES['upload_images']['name'])){ $error_message[] = '画像1から画像を選択してください!!!'; } // アップロードされたファイル情報 $uploadedFile2 = $_FILES['upload_images2']; if( 10000000 < $uploadedFile2["size"] ) { $error_message[] = 'ファイルサイズが大きすぎます!'; } // アップロードされたファイルの拡張子を取得 $extension2 = pathinfo($uploadedFile2['name'], PATHINFO_EXTENSION); // 新しいファイル名を生成(uniqid + 拡張子) $newFilename2 = uniqid() . '-'.$userid.'.' . $extension2; // 保存先のパスを生成 $uploadedPath2 = '../ueuseimages/' . $newFilename2; // ファイルを移動 $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.''; } } if (empty($_FILES['upload_videos1']['name'])) { $video1 = "none"; } else { // アップロードされたファイル情報 $uploadedFile3 = $_FILES['upload_videos1']; // アップロードされたファイルの拡張子を取得 $extension3 = strtolower(pathinfo($uploadedFile3['name'], PATHINFO_EXTENSION)); // 小文字に変換 // サポートされている動画フォーマットの拡張子を配列で定義 $supportedExtensions = array("mp4", "avi", "mov", "webm"); if (in_array($extension3, $supportedExtensions)) { // 正しい拡張子の場合、新しいファイル名を生成 $newFilename3 = uniqid() . '-'.$userid.'.' . $extension3; // 保存先のパスを生成 $uploadedPath3 = '../ueusevideos/' . $newFilename3; // ファイルを移動 $result3 = move_uploaded_file($uploadedFile3['tmp_name'], $uploadedPath3); if ($result3) { $video1 = $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[] = 'アップロード失敗!(2)エラーコード:' .$errcode.''; } } else { $error_message[] = '対応していないファイル形式です!'; } } if( empty($error_message) ) { // 書き込み日時を取得 $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, video1, datetime, abi) VALUES (:username, :account, :uniqid, :ueuse, :photo1, :photo2, :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(':photo1', $photo1, PDO::PARAM_STR); $stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR); $stmt->bindParam(':video1', $video1, PDO::PARAM_STR); $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); $stmt->bindParam(':abi', $abi, PDO::PARAM_STR); // SQLクエリの実行 $res = $stmt->execute(); // コミット $res = $pdo->commit(); $mentionedUsers = get_mentions_userid($ueuse); foreach ($mentionedUsers as $mentionedUser) { $pdo->beginTransaction(); try { $touserid = $mentionedUser; $datetime = date("Y-m-d H:i:s"); $msg = "" . $ueuse . ""; $title = "" . $username . "さんにメンションされました!"; $url = "/!" . $uniqid . "~" . $userid . ""; $userchk = 'none'; // 通知用SQL作成 $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(':datetime', $datetime, 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['REQUEST_URI']; header("Location:".$url.""); exit; } else { $error_message[] = $e->getMessage(); } // プリペアドステートメントを削除 $stmt = null; } } require('../logout/logout.php'); // データベースの接続を閉じる $pdo = null; if(isset($_GET['text'])){ $ueuse = $_GET['text']; }else{ $ueuse = ""; } ?> ローカルタイムライン - <?php echo file_get_contents($servernamefile);?>
Happy New Year !!!

あけましておめでとうございます!

あけましておめでとうございます
今日からですね~!
今年もどうぞuwuzuをよろしくお願いいたします!

LTL FTL

画像のEXIF情報(位置情報など)は削除されません。
情報漏洩に気をつけてくださいね…