为演示目的创建站点的副本/会话

rsl1atfo  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(360)

我编写了一个php电子商务网站,我将展示给潜在的客户/买家。他们将能够创建和删除类别,产品,上传图片和发挥他们希望的网站和数据库,甚至删除一切,有些人无疑会。
这是一个完整的产品演示,用户将访问一个演示管理员帐户,作为一个投资组合或说服小企业购买它。
基本上我希望他们可以免费使用网站,因为他们会,但我不想恢复它手动每次有人破坏它。
因此,我的想法是,每当访问者单击url时,创建站点和mysql数据库的副本/会话,并在关闭浏览器时将其删除。一个新用户将得到一个新的,原始的网站副本。
同时来访者每人都有一份自己的副本。
用google/bing搜索这种东西的实现使我失败了。也许我说不好,但我找不到任何接近我需要的东西。
所以我请求帮助我如何编写代码。提前谢谢。

zazmityj

zazmityj1#

方案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-您需要阅读cpanelapi2函数。使用php为用户创建子域,如下代码(api1示例):

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

然后复制你的package.zip,然后从里面提取 /public_html/NewUserDirectory 然后用cpanelapi2函数创建一个数据库和帐户。
使用此代码在用户配置文件中添加数据库用户名/密码/名称:

$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'] )然后为每个用户使用前缀表或其他数据库(&T)(例如,如果它们打开 user1.domain.ir 使用 user_TABLENAME 并为每个用户创建一个上载目录。

相关问题