質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

1356閲覧

画像投稿掲示板で投稿を削除するとき、画像やデータをサーバーに残すべきかどうか悩んでいます

takopo

総合スコア484

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2019/08/11 06:49

今 Laravel で画像掲示板を作成してるのですが、記事の削除に関してわからないことがあり質問させていただきました。

現在作成中のサイトでは、ユーザーによって投稿された記事をユーザー自身が削除するとき、サーバー容量やセキュリティのことなどを考えて、データベースのデータも画像ファイルも全部削除するように設定してました。(そうすると復元不可になるので、あとで「間違えた、元に戻して」と言われても困ってしまうのですが…)

しかし最近とある学習サイトのレッスンを受けている中で、
「削除する時は、データベースからいきなり削除するのではなくて、削除フラグというものを立てて、それで削除したかどうかを管理するのが一般的」と習い、投稿データのレコードは残して、status フィールドで、削除したものは delete 、そうでないものは active と切り替える形で管理されていました。
※ちなみにこちらはお問い合わせフォームの話になります。

削除フラグについて調べましたところ以下のメリットがあることが分かりました。

  • 誤って削除された場合の復旧が簡単
  • 削除データ一覧というページが作れる。そこから削除取り消し操作も可能
  • DELETE より UPDATE のほうが処理が早い など

復旧できるのは大きなメリットですが、サーバー容量やセキュリティのことを考えるとデメリットの方が大きい気がしまして、画像・データを残すべきかどうか迷っております。

経験者の皆様は画像投稿掲示板を作成される場合、どのような形で管理されていることが多いのでしょうか。
アドバイスいただけますと助かります。

【開発環境】
・vagrant(テスト用)
・さくらレンタルサーバー(本番用)
・Laravel 5.8
・php 7.3

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

復旧できるのは大きなメリットですが、サーバー容量やセキュリティのことを考えるとデメリットの方が大きい気がしまして、画像・データを残すべきかどうか迷っております。

要件次第です。
クライアントの要望によるのではないでしょうか
画像投稿掲示板であれば、問い合わせを受けて、戻してなどめんどくさそうなのでできませんで断ってしまっていいと思います

なお、LaravelにはSoftDeleteという機能があり、statusなど用意しなくても論理削除が可能です。

投稿2019/08/11 06:58

mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takopo

2019/08/11 07:08

ご回答ありがとうございます! 要件次第なのですね。今回自分が作成しているのは、完全に趣味のサイトでゲームの感想を画像と共に書きこむような感じのもので、特に重要な個人情報とかは受けつけていないのですが、完全に削除してしまっても問題ないでしょうか・・・? SoftDelete という機能初めて知りました。お教えいただきありがとうございます。これから調べてみたいと思います。
mikkame

2019/08/11 07:13

今回はあなたがステークホルだーだとして あなたがどこまでユーザー(使用者)のことをケアしたいか、じゃないでしょうか?
mikkame

2019/08/11 07:16

とりあえず私が匿名掲示板を作るなら(論理削除は関係なくなるんですが) 通報機能を実装し、一定数の通報が溜まったら一度非表示(削除とは若干違う)にし 最終的に運営判断で削除する/しない で物理削除したりとかですかね。
takopo

2019/08/11 07:25

なるほど、その方法はとても良さそうですね。通報ボタンも将来的に実装してみたいと思います。 mikkame様にアドバイスいただいたおかげで自分の中で結論が出まして、今回フラグは使わず完全に削除するようにしたいと思います。(お問い合わせが来た場合はお断りすることにします。) どうしようかとモヤモヤしていた部分が解決できたので助かりました。ありがとうございました。
m.ts10806

2019/08/11 07:28

匿名なら余計に投稿は完全自己責任でいいと思います。ブラックリスト方式で相応しくない文言入った投稿はさせないとか、ファイルサイズに制限かけるとかレベルで。
m.ts10806

2019/08/11 07:29

あ解決してた。横やり失礼しました
takopo

2019/08/11 07:33

m.ts10806様アドバイスありがとうございます! なるほど、事前に内容を検閲したりなど制限をかけるのがよいのですね。大変参考になりました。 難しいかもしれませんがチャレンジしてみたいと思います。
m.ts10806

2019/08/11 07:48

「バリデーション」の範疇です。 何文字以上入力されてたらエラーとか、そういう。ブラックリスト方式は「●●という文言が含まれてたらエラー」という形のバリデーションになります。 そういった意味だと管理者用の管理画面もしっかり作っておいた方が良さそうですね。直接コードやDBをいじるのは賢明ではないです。
takopo

2019/08/11 08:17

ありがとうございます。 ブラックリスト方式というバリデーションがあるのですね。詳しく調べてみたいと思います。 また管理者画面を作成してなるべくコードやDBを触らないようにしたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問