需要的方向 - 如何创建可自定义的文件?

时间:2013-10-10 14:48:42

标签: php

以下是我想要实现的流程:

  1. 我在服务器上有一组模板.php文件。
  2. 网站访问者选择一些选项
  3. 选项作为代码片段添加到模板文件中
  4. 访问者下载自定义文件(.zip应包含默认模板文件,如果不自定义,则自定义文件)
  5. 原始文件对于下一位访问者保持不变
  6. 流程类似于bootstrap自定义,唯一区别在于引导访问者正在编辑.less文件,我的访问者将编辑.php文件

    如果您能指出我如何执行步骤3,4和5,我将不胜感激,请记住用户输入将使用javascript存储在对象和数组中。

    我的PHP知识非常简陋,所以我不知道从哪里开始。

    如果您需要任何澄清,请不要犹豫。

    谢谢!

4 个答案:

答案 0 :(得分:1)

如果用户只修改配置选项,那么最好的方法就是使用JSON,因为它很容易用JS&编码/解码。 PHP $.parseJSON(jQuery)和json_decode()&分别为json_encode()

您将提供一个表单,然后将这些用户输入转换为JSON格式并将其存储在.json文件中,然后将其压缩并作为下载文件发送给您的用户。

这也允许用户上传他们的zip文件,并将表单输入默认为原始选项。

让我们来看看bootstrap是如何做到的。

  1. 用于自定义引导程序文件的页面,您可以使用类似的表单执行相同操作。
  2. 表单张贴后,取表格输入数组并验证以获取恶意输入,更正数据等数据类型等,并删除不应存在的任何表单输入。
  3. 将输入转换为JSON,无需验证,这很容易json_encode($_POST)
  4. 将其写入JSON文件并允许用户下载(如果需要,请将其压缩)。
  5. 在你的情况下,你有多个PHP文件,这似乎有点偏,你不应该使用PHP文件来保存这种变量配置数据,JSON似乎更适合。

    看看这个问题:What is the best file format for configuration file?

    提到了三种方法,PHP的方式,JSON& XML。请你选择,但我愿意打赌,最简单的就是JSON。

    如果您之前没有使用过JSON,请创建一个新的PHP脚本并尝试使用多维数组的函数并进行游戏。

    PHP Documention for JSON

答案 1 :(得分:0)

如果您使用JavaScript来存储用户选择等,我建议您不要将php实际用于您描述的任何功能。所以这样做:

  1. 将模板存储为带有划分部分的静态文本文件以插入用户选项。使划分的部分与php语法不同,如@@@Your option here@@@
  2. 这很容易。
  3. 使用AJAX获取相关模板,并在划分的部分用JavaScript替换一个简单的字符串。
  4. 使用JavaScript将生成的PHP代码放入<textarea>,然后将其复制并粘贴到记事本或其他内容
  5. 原始文件是静态的,代码是客户端的,所以这很好

答案 2 :(得分:0)

所以我知道你想发送为用户定制的php脚本。

考虑让php文件满足所有可能的用户输入。然后将用户选项捕获到配置文件中,其中结构是可预测且易于创建的。

例如

# config.inc.php
# Created by script that captures user options
$config['allow_shipping'] = true;

然后在php脚本

# file1.php
include config.inc.php
if ($config[$config['allow_shipping'] === true) {
  some_php_code;
}

您的步骤将是

  1. 我在服务器上有一组.php脚本文件。
  2. 网站访问者选择一些选项
  3. 将选项发送到创建配置文件的服务器脚本。
  4. 访客下载自定义文件(.zip应包含脚本文件和配置文件)
  5. 原始文件对于下一位访问者(减去配置文件)保持不变
  6. 有些帖子可以指导您 How I can create installer for website. PHP mysqlPHP Installer Script

答案 3 :(得分:0)

我会考虑制作默认代码段,并将每个“选项”链接到各种所需的代码段。这样,每次选择一个选项时,它都会使用正确的代码。 要继续使用@ Crafter的示例,您可以使用以下代码片段

  • if (
  • $config[
  • ]
  • ===
  • ) {
  • }

在我尝试使用类似Java的东西之前,我已经做过一次,虽然它似乎比它应该做的更多,但是一旦你得到一个相当大的代码片段“数据库”,它将会非常有用。

希望它有用吗?

-Peter