Создать копию / сеанс сайта для демонстрационных целей - PullRequest
0 голосов
/ 21 октября 2018

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

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

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

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

У каждого из сопутствующих посетителей будет своя собственная копия.

Поиск в Google / Binging реализация такой вещи провалилась,Возможно, я не могу сказать это правильно, но я не нашел ничего, что было бы близко к тому, что мне нужно.

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

1 Ответ

0 голосов
/ 21 октября 2018

Вариант 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);

каждый пользователь имеет поддомен дляtest / use.

Вариант 3:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...