File PHP Serbaguna

✍️ Ditulis :
🔄 Diperbaharui :

Karena seringnya terpakai, daripada repot cari-cari lagi di laptop, mending paste disini aja deh.

master-copy.php
Buat menampilkan semua kode di satu direktori

<?php
// Mendapatkan direktori saat ini
$directory = __DIR__;

// Daftar ekstensi file yang ingin dipindai
$extensions = ['php', 'html', 'js', 'json'];

// Menyimpan hasil dalam variabel
$output = '';

// Membuka direktori dan memindai file
if ($handle = opendir($directory)) {
    while (false !== ($file = readdir($handle))) {
        // Mengabaikan file master-copy.php dan direktori '.' dan '..'
        if ($file != 'master-copy.php' && $file != '.' && $file != '..') {
            // Mendapatkan ekstensi file
            $file_extension = pathinfo($file, PATHINFO_EXTENSION);
            // Memeriksa apakah ekstensi file ada dalam daftar
            if (in_array($file_extension, $extensions)) {
                // Membaca isi file
                $file_content = htmlspecialchars(file_get_contents($file));
                // Menambahkan hasil ke output
                $output .= "file: $filen```n$file_contentn```nn";
            }
        }
    }
    closedir($handle);
}

?>
<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Master Copy</title>
</head>
<body>
    <h1>Master Copy of Files</h1>
    <textarea rows="20" cols="80"><?php echo $output; ?></textarea>
</body>
</html>

 

_create.php
buat memudahkan bikin file sekaligus banyak

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Build Fast</title>
    <style>
        body { font-family: Arial, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; background-color: #f4f4f4; }
        h1 { text-align: center; color: #333; }
        .file-input { margin-bottom: 20px; }
        textarea { width: 100%; height: 150px; padding: 10px; margin-bottom: 10px; border: 1px solid #ccc; border-radius: 4px; font-family: monospace; }
        input[type="text"] { width: 100%; padding: 10px; margin-bottom: 10px; border: 1px solid #ccc; border-radius: 4px; font-family: Arial, sans-serif; }
        .directory-input { background-color: #e0f7fa; }
        .filename-input { background-color: #fff3e0; }
        button { padding: 10px 20px; margin-right: 10px; margin-bottom: 20px; cursor: pointer; border: none; border-radius: 4px; font-size: 16px; }
        #add-file { background-color: #4caf50; color: white; }
        #add-file-dir { background-color: #2196f3; color: white; }
        button[type="submit"] { background-color: #ff9800; color: white; width: 100%; }
        .file-block { border: 1px solid #ccc; padding: 20px; margin-bottom: 15px; border-radius: 5px; background-color: white; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
    </style>
</head>
<body>

    <h1>Build Fast</h1>
    <form action="" method="POST">
        <div id="file-container">
            <div class="file-block">
                <input type="text" name="directories[]" class="directory-input" placeholder="Enter directory (e.g., include) or leave blank" />
                <input type="text" name="filenames[]" class="filename-input" placeholder="Enter filename (e.g., config.php)" required>
                <textarea name="contents[]" placeholder="Enter file content here..." required></textarea>
            </div>
        </div>
        <button type="button" id="add-file">+ Add Another File</button>
        <button type="button" id="add-file-dir">+ Add Another File in Directory</button>
        <button type="submit" name="process">Process</button>
    </form>

    <script>
        document.getElementById('add-file').addEventListener('click', function() {
            var container = document.getElementById('file-container');
            var block = document.createElement('div');
            block.className = 'file-block';
            block.innerHTML = `
                <input type="text" name="directories[]" class="directory-input" placeholder="Enter directory (e.g., include) or leave blank" />
                <input type="text" name="filenames[]" class="filename-input" placeholder="Enter filename (e.g., script.js)" required>
                <textarea name="contents[]" placeholder="Enter file content here..." required></textarea>
            `;
            container.appendChild(block);
        });

        document.getElementById('add-file-dir').addEventListener('click', function() {
            var container = document.getElementById('file-container');
            var block = document.createElement('div');
            block.className = 'file-block';
            block.innerHTML = `
                <input type="text" name="directories[]" class="directory-input" placeholder="Enter directory (e.g., include)" required>
                <input type="text" name="filenames[]" class="filename-input" placeholder="Enter filename (e.g., config.php)" required>
                <textarea name="contents[]" placeholder="Enter file content here..." required></textarea>
            `;
            container.appendChild(block);
        });
    </script>

    <?php
    if (isset($_POST['process'])) {
        $directories = $_POST['directories'];
        $filenames = $_POST['filenames'];
        $contents = $_POST['contents'];

        foreach ($filenames as $index => $filename) {
            $directory = $directories[$index];
            if ($directory) {
                $dirPath = __DIR__ . '/' . $directory;
                if (!is_dir($dirPath)) {
                    mkdir($dirPath, 0755, true); // Buat direktori jika belum ada
                }
                $filepath = $dirPath . '/' . $filename;
            } else {
                $filepath = __DIR__ . '/' . $filename;
            }
            file_put_contents($filepath, $contents[$index]);
            echo "<p>File <strong>$filename</strong> created successfully in " . ($directory ? $directory : "root") . " directory.</p>";
        }
    }
    ?>

</body>
</html>

Leave a Reply

Your email address will not be published. Required fields are marked *