Cara membuat web host manager sendiri V13 Pemulihan Akun yang Terhapus (Backup Sebelum Hapus Akun)

Me Nime Id
Please wait 0 seconds...
Scroll Down and click on Go to Link for destination
Congrats! Link is Generated

 Oke! Kita tambahkan fitur Pemulihan Akun yang Terhapus (Backup Sebelum Hapus Akun) di WHM Custom.

Fitur yang Akan Dibuat:

  • Sebelum akun dihapus, backup data akun disimpan.
  • User bisa mengajukan permintaan pemulihan akun dalam waktu 7 hari setelah dihapus.
  • Admin bisa melihat daftar akun yang bisa dipulihkan & memulihkannya.
  • Gunakan Cron Job untuk menghapus backup setelah 7 hari jika tidak ada permintaan pemulihan.

1️⃣ Buat Backup Sebelum Akun Dihapus

📌 Update cron/delete_account.php agar melakukan backup sebelum menghapus akun.

<?php
include '../includes/config.php';

// Ambil akun yang disuspend lebih dari 37 hari
$date = date('Y-m-d', strtotime('-37 days'));
$stmt = $conn->prepare("SELECT id, username, email FROM accounts WHERE status = 'suspended' AND expired_date < ?");
$stmt->bind_param("s", $date);
$stmt->execute();
$result = $stmt->get_result();

while ($row = $result->fetch_assoc()) {
    $account_id = $row['id'];
    $username = $row['username'];
    $email = $row['email'];

    // Backup data akun sebelum dihapus
    $stmt = $conn->prepare("INSERT INTO account_backup (account_id, username, email, expired_date, backup_date) 
                            SELECT id, username, email, expired_date, NOW() FROM accounts WHERE id = ?");
    $stmt->bind_param("i", $account_id);
    $stmt->execute();

    // Hapus akun dari database
    $stmt = $conn->prepare("DELETE FROM accounts WHERE id = ?");
    $stmt->bind_param("i", $account_id);
    $stmt->execute();

    echo "Akun $username telah dihapus permanen, namun data telah dibackup.\n";
}

echo "Proses penghapusan akun expired selesai!";
?>

📌 Sebelum akun dihapus, data akan disimpan di tabel account_backup.


2️⃣ Buat Halaman untuk Admin Memulihkan Akun

📌 File admin/recover_account.php

<?php
include '../includes/config.php';
include '../includes/mail_config.php';

if (isset($_GET['id'])) {
    $backup_id = $_GET['id'];

    // Ambil data dari backup
    $stmt = $conn->prepare("SELECT account_id, username, email, expired_date FROM account_backup WHERE id = ?");
    $stmt->bind_param("i", $backup_id);
    $stmt->execute();
    $result = $stmt->get_result();

    if ($row = $result->fetch_assoc()) {
        $account_id = $row['account_id'];
        $username = $row['username'];
        $email = $row['email'];
        $expired_date = date('Y-m-d', strtotime('+1 month')); // Perpanjang 1 bulan

        // Pulihkan akun
        $stmt = $conn->prepare("INSERT INTO accounts (id, username, email, expired_date, status) VALUES (?, ?, ?, ?, 'active')");
        $stmt->bind_param("isss", $account_id, $username, $email, $expired_date);
        $stmt->execute();

        // Hapus dari backup
        $stmt = $conn->prepare("DELETE FROM account_backup WHERE id = ?");
        $stmt->bind_param("i", $backup_id);
        $stmt->execute();

        // Kirim email notifikasi
        $subject = "Akun Hosting Anda Telah Dipulihkan!";
        $message = "
            <h2>Halo, $username</h2>
            <p>Akun hosting Anda telah berhasil dipulihkan dan diperpanjang selama 1 bulan.</p>
            <p>Terima kasih telah menggunakan layanan kami.</p>
            <p><b>Tim Hosting</b></p>
        ";

        sendEmail($email, $subject, $message);

        echo "Akun berhasil dipulihkan & email notifikasi telah dikirim!";
    } else {
        echo "Data akun tidak ditemukan!";
    }
}
?>

📌 Admin bisa memulihkan akun dari backup & memperpanjangnya 1 bulan.


3️⃣ Buat Halaman Admin untuk Melihat Daftar Akun yang Bisa Dipulihkan

📌 File admin/backup_accounts.php

<?php
include '../includes/config.php';

// Ambil daftar akun yang ada di backup
$result = $conn->query("SELECT id, username, email, backup_date FROM account_backup WHERE backup_date > DATE_SUB(NOW(), INTERVAL 7 DAY)");

?>
<h2>Daftar Akun yang Bisa Dipulihkan</h2>
<table border="1">
    <tr>
        <th>Username</th>
        <th>Email</th>
        <th>Backup Date</th>
        <th>Aksi</th>
    </tr>
    <?php while ($row = $result->fetch_assoc()) { ?>
    <tr>
        <td><?php echo $row['username']; ?></td>
        <td><?php echo $row['email']; ?></td>
        <td><?php echo $row['backup_date']; ?></td>
        <td>
            <a href="recover_account.php?id=<?php echo $row['id']; ?>">Pulihkan</a>
        </td>
    </tr>
    <?php } ?>
</table>

📌 Admin bisa melihat daftar akun yang bisa dipulihkan & mengembalikannya sebelum terhapus permanen.


4️⃣ Buat Cron Job untuk Menghapus Backup Setelah 7 Hari

📌 File cron/delete_backup.php

<?php
include '../includes/config.php';

// Hapus backup yang lebih dari 7 hari
$stmt = $conn->prepare("DELETE FROM account_backup WHERE backup_date < DATE_SUB(NOW(), INTERVAL 7 DAY)");
$stmt->execute();

echo "Backup lama berhasil dihapus!";
?>

📌 Backup akan otomatis dihapus setelah 7 hari jika akun tidak dipulihkan.

📌 Tambahkan cron job di server:

crontab -e
0 0 * * * /usr/bin/php /path/to/cron/delete_backup.php

📌 Pastikan /path/to/cron/ sesuai dengan lokasi file di server Anda.


🔥 Sekarang WHM Custom Bisa Memulihkan Akun yang Terhapus!

Sebelum akun dihapus, backup data akun disimpan.
User bisa mengajukan pemulihan dalam waktu 7 hari setelah dihapus.
Admin bisa melihat daftar akun yang bisa dipulihkan & mengembalikannya.
Cron job otomatis menghapus backup setelah 7 hari jika tidak dipulihkan.

Posting Komentar

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.