Discuzフォーラムを運営する場合、管理者は、スパムアカウントや悪意のあるユーザーのクリーンアップなど、バッチでユーザーを削除する必要がある状況を経験する場合があります。ただし、Discuzバックエンドはバッチ削除を直接提供しません。この記事では、いくつかの実用的なヒントを紹介し、不要なユーザーを効果的に削除するのに役立つ特定のコード例を提供します。
バッチ削除操作を実行する前に、データベースバックアップを実行する必要があります。バックアップデータは、不必要な損失を回避するために、運用上のエラーまたは問題が発生したときにタイムリーにデータを復元できます。
バッチでユーザーを削除する前に、特定の条件(登録時間、投稿数、最終ログイン時間など)に基づいて削除する必要があるユーザーを除外することをお勧めします。削除操作には、条件を満たしているユーザーのみが関与し、通常のユーザーの誤って削除されないようにしてください。
ユーザーの削除が必要な場合は、関連するユーザーにサイトレターまたはアナウンスを事前に通知し、特定の処理時間を与えることをお勧めします。これは、ユーザーの突然の削除から生じる紛争を回避するのに役立ちます。
バッチ削除操作を実行するときは注意してください。最初にテスト環境の操作ステップを検証し、プロセスが正しいことを確認し、正式な環境で削除操作を実行することを強くお勧めします。
管理者は、SQLステートメントを実行することにより、ユーザーのバッチ削除を実装できます。登録時間が特定の日付の前にあるユーザーを削除するように設計されたサンプルSQLステートメントは次のとおりです。
DELETE
FROM
pre_common_member
WHERE
regdate < UNIX_TIMESTAMP(
'2022-01-01'
);
Discuzは、単純なPHPスクリプトを介してユーザーのバッチ削除を可能にする管理インターフェイスを提供します。 Discuzインターフェイスを使用して、登録時間が日付の前だったユーザーを削除するサンプルPHPスクリプトを次に示します。
<?php
define(
'IN_DISCUZ'
, true);
require
'./source/class/class_core.php'
;
$discuz
= C::app();
$discuz
->init();
$users
= C::t(
'common_member'
)->fetch_all_by_regdate(0, UNIX_TIMESTAMP(
'2022-01-01'
));
foreach
(
$users
as
$user
) {
C::t(
'common_member'
)->
delete
(
$user
[
'uid'
]);
}
このサンプルコードは参照のみであり、実際のニーズに応じて調整されます。
この記事で紹介されたヒントとコードの例を通じて、管理者はバッチで不要なユーザーをより効率的に削除し、フォーラム管理の効率を向上させることができます。バッチ削除操作を実行するときは、フォーラムの適切な運用を維持するために、データセキュリティとユーザーエクスペリエンスを確保するように注意してください。