Я создал сайт электронной коммерции на PHP, который покажу потенциальным клиентам / покупателям. Они смогут создавать и удалять категории, продукты, загружать изображения и играть по своему усмотрению с сайтом и базой данных, даже удаляя все, как некоторые, без сомнения, сделают.
Это полная демонстрация продукта, к которой пользователь получит доступ с помощью демо-учетной записи администратора, в качестве портфолио или для того, чтобы убедить малый бизнес купить его.
По сути, я хочу, чтобы они могли свободно использовать сайт по своему усмотрению, но я не хочу восстанавливать его вручную каждый раз, когда кто-то его разрушает.
Итак, моя идея состоит в том, чтобы создавать копию / сеанс сайта и базы данных MySQL каждый раз, когда посетитель щелкает URL-адрес, и удалять его при закрытии браузера. Новый пользователь получит новую копию сайта в первозданном виде.
У сопутствующих посетителей будет каждый свой экземпляр для использования.
Googling / Binging мне не удалось реализовать такую вещь. Может быть, я не могу сформулировать это правильно, но я не нашел ничего близкого к тому, что мне нужно.
Так что я прошу помощи по поводу указателей на то, как я мог бы это закодировать. Заранее спасибо.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Опция 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, если он существует.) и создайте каталог загрузки для каждого пользователя.
Вау, спасибо! Это очень помогает. Я попробую и доложу, когда вернусь к своему компьютеру.