Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 创建安装脚本表单自定义web应用_Php_Installation - Fatal编程技术网

Php 创建安装脚本表单自定义web应用

Php 创建安装脚本表单自定义web应用,php,installation,Php,Installation,我正在寻找一个选项,让install.php用户将所有需要的数据放入其中,例如db host、db username、db pwd等。脚本必须将其放入名为config的php类中 public function __construct(){ $this->site_address = ''; $this->db_prefix = ''; $this->site_desc = ''; $this->site_title = ''; $

我正在寻找一个选项,让install.php用户将所有需要的数据放入其中,例如db host、db username、db pwd等。脚本必须将其放入名为config的php类中

public function __construct(){
    $this->site_address = '';
    $this->db_prefix = '';
    $this->site_desc = '';
    $this->site_title = '';
    $this->hash = '';
    $this->sidebar = false;
    $this->db_host = '';
    $this->db_name = '';
    $this->db_pass = '';
    $this->db_user = '';
    $this->db_port = 3306;
    $this->folder = NULL;
    $this->mailserver = '';
    $this->mailport = '';
    $this->mailuser = '';
    $this->mailpassword ='';

}
如何将install.php页面上表单中的数据放入此类构造函数?
我正在考虑从表单中获取内容->查找
$this->db\u host=
并替换
'
。$\u POST['db\u host'].,然后将内容放入文件并保存,但我不知道具体怎么做。请提供帮助。

只需将变量添加到您的
\u构造()

然后从表单中执行
新建yourAwesomeClassName('http://hello“,”$\u POST['db\u prefix'],…)

别忘了几件事:

  • 永远不要相信用户的输入
  • 在使用之前,请清理/检查所有数据/输入的格式
  • 不要以明文形式保存密码,至少要对密码进行散列,当然,最好是使用除此之外的salt
根据评论更新 (以下可能不是一个好的做法,但我愿意接受建议,因为这是我的一部分)

如果你需要保存你的数据,我建议你有一个通用文件,例如

通用文件

然后需要一个函数来写入数据

写入默认数据


\u construct()。完成后,您可以通过调用
ConfigClass::DB\u HOST
获取信息,例如…

只需将变量添加到
\u构造()

然后从表单中执行
新建yourAwesomeClassName('http://hello“,”$\u POST['db\u prefix'],…)

别忘了几件事:

  • 永远不要相信用户的输入
  • 在使用之前,请清理/检查所有数据/输入的格式
  • 不要以明文形式保存密码,至少要对密码进行散列,当然,最好是使用除此之外的salt
根据评论更新 (以下可能不是一个好的做法,但我愿意接受建议,因为这是我的一部分)

如果你需要保存你的数据,我建议你有一个通用文件,例如

通用文件

然后需要一个函数来写入数据

写入默认数据


\u construct()。完成后,您可以通过调用
ConfigClass::DB\u HOST
获取信息,例如…

是,但这将是临时的。。。它仅在安装脚本运行时可用。我需要一些想法如何将空变量从安装表单更改为例如字符串,它将永远保留在配置中(直到有人更改它)。我可以选择在指定文件夹中安装时生成名为config.php的新文件……另外要添加的一点是:不要以纯文本形式保存密码,至少要对密码进行散列,当然最好使用除此之外的salt。是的,我知道,这不是我的问题。我不知道如何通过install.php生成config.php文件,并保存install.php中的所有数据,以便永远从config使用。php@pusty更新了我的答案是的,但这将是暂时的。。。它仅在安装脚本运行时可用。我需要一些想法如何将空变量从安装表单更改为例如字符串,它将永远保留在配置中(直到有人更改它)。我可以选择在指定文件夹中安装时生成名为config.php的新文件……另外要添加的一点是:不要以纯文本形式保存密码,至少要对密码进行散列,当然最好使用除此之外的salt。是的,我知道,这不是我的问题。我不知道如何通过install.php生成config.php文件,并保存install.php中的所有数据,以便永远从config使用。php@pusty更新了我的答案
public function __construct($site_address='',$db_prefix='',$site_desc='',$site_title='',$hash='',$sidebar=false){
    $this->site_address = $site_address;
    $this->db_prefix = $db_prefix;
    $this->site_desc = $site_desc;
    $this->site_title = $site_title;
    $this->hash = $hash;
    $this->sidebar = $sidebar;

    // And so on 

}
class Database
{

    /**
     * Database host
     * @var string Default: 'your-database-host'
     */
    const DB_HOST = 'your-database-host';

    /**
     * Database name
     * @var string Default: 'your-database-name'
     */
    const DB_NAME = 'your-database-name';

    // And so on

}
public static function writeDatabaseConfig($data)
    {
        if (is_array($data)) {
            $root = static::getRoot();
            $databaseFile = $root . 'App' . DIRECTORY_SEPARATOR . 'Config' . DIRECTORY_SEPARATOR . 'Database.php';
            $currentFile = file_get_contents($databaseFile);
            if (strpos($currentFile, 'your') !== false) {
                $oldToNew = array(
                    'host' => 'your-database-host',
                    'name' => 'your-database-name',
                );
                foreach ($oldToNew as $key => $value) {
                    if (isset($data[$key])) {
                        $currentFile = str_replace($value, $data[$key], $currentFile);
                    }
                }
                if (file_put_contents($databaseFile, $currentFile)) {
                    return true;
                }
                return false;
            }
            return false;
        }
        return false;
    }