1

ユーザーがデータベースから削除された後でも、ユーザーの情報を追跡したいと考えています。

これをやりたい理由は2つあります。まず、ユーザーが削除された後、「$name は正常に削除されました」というメッセージを表示したいと考えています。次に、削除したユーザーの名前をログ ファイルに書き込みたいと思います。

ユーザーがデータベースから削除されると、名前が NULL になるため (私は $_SESSION 変数を使用しています)、私が今持っているものは機能しません。この情報にアクセスする方法はありますか? それを行う最も賢い方法は何ですか?

4

8 に答える 8

6

DBに追加のフィールドを入力して、レコードが「削除」されたことを示し、ログイン時など、「deleted = true」レコードが表示されないように、これらのレコードを使用しようとする場合は常に適切なフィルタリングを実行します。

SELECT ...
FROM users
WHERE (username = '...') AND (password = '...') AND (deleted = FALSE)

このようにして、ユーザーレコード全体をデータベースに保持しますが、削除済みのフラグが設定されているため、使用できません。

于 2012-06-12T15:07:06.580 に答える
2

最も賢い答えは、ユーザーを削除しないことです。

DBに、ユーザーが削除されたことを示す列を作成し、それを残りのクエリにレコードが存在しないかのように扱います。

于 2012-06-12T15:07:21.293 に答える
2

ユーザーの「ストーリー」を保持し、ユーザー名または ID でアクセスしたい場合は、ユーザーが削除されたときに「False」である「アクティブ」列を追加してみませんか?

明らかに、ユーザーを作成すると、その値は「True」になり、一般的なユーザーに関連するすべてのアクション (ただし、賢い場合は、ログインのみとしましょう) でその列の値を考慮する必要があります。

于 2012-06-12T15:07:33.810 に答える
1

絶対に最善の方法は、データを削除しないことです。

'is_active' (デフォルト値は true) または 'is_deleted' (デフォルト値は false) というラベルの付いたテーブルにビット フラグを追加するだけで、データの一部にアクセスできるかどうかを示すことができます。

誰かがその情報を削除したい場合は、フラグ値を交換します。また、そのテーブルで実行するすべてのクエリでそのフラグを使用して、アクティブなデータのみを検索します。

于 2012-06-12T15:07:31.363 に答える
1

削除確認ページに名前を表示する方法を探しているだけの場合は、名前を GET パラメーターとして渡すだけです。

$name = user_get_name($user_id);
user_delete($user_id);

header('Location: deleted.php?user=' . urlencode($name));

次に、 内で次のdeleted.phpようにします。

echo 'User "' . htmlspecialchars($_GET['user']) . '" has been deleted.';

参考までに、htmlspecialchars呼び出しは XSS 攻撃からあなたを救うためにあります。

更新: 2 番目のスクリプトで呼び出していることを確認しsession_start()、ユーザーを削除またはログアウトするときにセッション変数の設定を解除しないでください。

于 2012-06-12T15:17:21.203 に答える
0

ここでOP。私はセッション変数を使用することになりました(今は機能しますが、私のばかげた間違いでした)。削除されたユーザーの名前だけが必要だったので、これが最も簡単な方法であると主張します。また、これにより、削除されたユーザーの情報をデータベースに保持するかどうかのジレンマが解消されます。

于 2012-06-12T15:37:50.500 に答える
0

好きなこと:

$username = $user->get_name(); // OR Copy the object and use the copy for logging and messages
......

$user->delete();

$log->write_log('...... $username....');

PS。一部の国では、プロファイルを削除した後にユーザー データを保存することは違法です。

于 2012-06-12T15:08:08.757 に答える
0

ユーザーを削除する前に、いつでもログ ファイルに書き込み、メッセージを表示できますか? そうすれば、必要なときにすべての情報にアクセスできます。

于 2012-06-12T15:08:11.100 に答える