创建网站的副本/会话以进行演示

时间:2018-10-20 21:57:52

标签: javascript php mysql session copy

我编码了一个PHP电子商务网站,该网站将向潜在的客户/购买者展示。他们将能够创建和删除类别,产品,上传图像并按照自己的意愿在网站和数据库中播放,甚至可以删除所有内容。

这是产品的完整演示,用户将使用演示管理员帐户作为产品组合访问或说服小型企业购买它。

基本上,我希望他们可以随意使用该网站,但我不想每次有人破坏它都手动进行恢复。

所以我的想法是每次访问者单击URL时都会创建站点和MySQL数据库的副本/会话,并在他们关闭浏览器时将其删除。新用户将获得该网站的原始副本。

陪同的访客将各自拥有自己的副本以供使用。

谷歌搜索/绑定这样的事情使我失败了。也许我说的不对,但是我发现没有什么东西可以满足我的需求。

因此,我需要有关如何编写代码的指针的帮助。预先感谢。

1 个答案:

答案 0 :(得分: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文件中需要DROP并再次创建所有表)。

要删除上传的文件,请执行以下操作:

//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 Functions。 使用以下代码为使用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 Functions创建一个数据库和帐户。

并使用以下代码在用户配置文件中添加数据库用户名/密码/名称:

$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:

您可以在域的DNS服务器中将此子域(*.domain.ir添加到/public_html目录中)。

在您的PHP代码中,您必须读取域($_SERVER['REQUEST_URI']),然后为每个用户使用前缀表或另一个数据库。 (例如,如果他们打开user1.domain.ir,请使用user_TABLENAME(如果存在)。并为每个用户创建一个上传目录。