Php 创建安装脚本表单自定义web应用
我正在寻找一个选项,让install.php用户将所有需要的数据放入其中,例如db host、db username、db pwd等。脚本必须将其放入名为config的php类中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 = ''; $
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;
}