Создать копию / сеанс сайта для демонстрационных целей

Я создал сайт электронной коммерции на PHP, который покажу потенциальным клиентам / покупателям. Они смогут создавать и удалять категории, продукты, загружать изображения и играть по своему усмотрению с сайтом и базой данных, даже удаляя все, как некоторые, без сомнения, сделают.

Это полная демонстрация продукта, к которой пользователь получит доступ с помощью демо-учетной записи администратора, в качестве портфолио или для того, чтобы убедить малый бизнес купить его.

По сути, я хочу, чтобы они могли свободно использовать сайт по своему усмотрению, но я не хочу восстанавливать его вручную каждый раз, когда кто-то его разрушает.

Итак, моя идея состоит в том, чтобы создавать копию / сеанс сайта и базы данных MySQL каждый раз, когда посетитель щелкает URL-адрес, и удалять его при закрытии браузера. Новый пользователь получит новую копию сайта в первозданном виде.

У сопутствующих посетителей будет каждый свой экземпляр для использования.

Googling / Binging мне не удалось реализовать такую ​​вещь. Может быть, я не могу сформулировать это правильно, но я не нашел ничего близкого к тому, что мне нужно.

Так что я прошу помощи по поводу указателей на то, как я мог бы это закодировать. Заранее спасибо.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Опция 1:

Вы можете создать файл php с такими кодами:

$command = "mysql --user = {$vals['db_user']} --password='{$vals['db_pass']}' "
 . "-h {$vals['db_host']} -D {$vals['db_name']} < {$script_path}";

$output = shell_exec($command . '/backup.sql');

для восстановления базы данных и очистки вашей базы данных (в файле SQL нужно снова УДАЛИТЬ и СОЗДАТЬ все таблицы).

Для удаления загруженных файлов сделайте следующее:

//The name of the folder.
$folder = 'temporary_files';

//Get a list of all of the file names in the folder.
$files = glob($folder . '/*');

//Loop through the file list.
foreach($files as $file){
    //Make sure that this is a file and not a directory.
    if (is_file($file)){
        //Use the unlink function to delete the file.
        unlink($file);
    }
}

Используйте их оба в одном файле, например cron.php, а затем добавьте кнопку на свой веб-сайт, чтобы пользователи могли вручную очистить ее, также вы можете добавить ее в cronjob вашего сервера для ежечасной / ежедневной / еженедельной / ежемесячной очистки.

Вариант 2:

Если вы используете CPanel - вам нужно прочитать, что Функции cPanel API 2. создайте поддомен для пользователя с PHP, как этот код (пример API1):

$xmlapi->api1_query($cpanelusr, 'SubDomain', 'addsubdomain', array('user123','bodoamat.com',0,0, '/public_html/NewUserDirectory')

Затем скопируйте файл package.zip и извлеките его внутри /public_html/NewUserDirectory.

затем создайте базу данных и учетную запись с Функции cPanel API 2.

И с помощью этого кода добавьте имя пользователя / пароль / имя базы данных в файл конфигурации пользователя:

$file_path= 'public_html/NewUserDirectory/config.php';
// Open the file to get existing content
$current = file_get_contents($file_path);

$data_to_write = str_replace("DATABASE_USERNAME",$newdb_user,$current);
$data_to_write = str_replace("DATABASE_PASSWORD",$newdb_pass,$data_to_write);
$data_to_write = str_replace("DATABASE_NAME",$newdb_name,$data_to_write);

file_put_contents($file_path, $data_to_write);

у каждого пользователя есть поддомен для тестирования / использования.

Вариант 3:

Вы можете добавить этот поддомен (*.domain.ir в каталог /public_html) на DNS-сервере для домена.

в своих кодах PHP вы должны прочитать домен ($_SERVER['REQUEST_URI']), а затем использовать таблицы префиксов или другую базу данных для каждого пользователя. (например, если они открывают user1.domain.ir, используйте user_TABLENAME, если он существует.) и создайте каталог загрузки для каждого пользователя.

Вау, спасибо! Это очень помогает. Я попробую и доложу, когда вернусь к своему компьютеру.

César Augusto 21.10.2018 02:45

Другие вопросы по теме