1
xubeiyan 2018-01-31 21:44:09 +08:00 via Android
这样是不安全的,因为 php 文件是可解释执行的,不怕别人插入恶意代码吗?应该使用 php 去读写某个不可执行的文件,或者使用数据库,大概是这样 write_config.php 写入-> config_file ->被 read_config.php 读取
|
2
lverea OP @xubeiyan 也就是说,config.ini.php 文件不是直接写入文件生成的,都是数据入库后生成的?
|
3
to2false 2018-02-01 09:24:08 +08:00
config 一般存储一些不经改动的配置项,如果是动态的存数据库,至于表单提交做好过滤
|
4
zarte 2018-02-01 10:09:31 +08:00
file_put_contents(var_export($_POST),'config.php');
|
5
xubeiyan 2018-02-01 14:37:31 +08:00
@lverea 你楼下的那位说得对……这种有修改需求的最好是写入数据库……就算你要写入文件,也要用不可以被解释执行的文件来保障安全
|
7
lverea OP 首先感谢大家的回答,但这些都有点答非所问的感觉。也许是我的提问不对。我重新换个问法。
|
8
lverea OP 我打算用 php 做一个自己的 blog,blog 的数据链接我已经手动配置到 config.php 文件里了,我想把 blog 名称,描述等几个常量也写在里面,方便调用。现在问题来了,我希望通过网站后台直接修改 blog 名称,而不是每次都 FTP 修改 config 文件。现在大致知道需要用到的 php 函数,但问题是没有一个实际的例子可学习,所以到此发问。结果回答的都是专家级的解答也是醉了。愿意花时间帮解答的,愿意支付酬金,可直接加我 QQ81525260
|
9
lslqtz 2018-02-02 10:16:45 +08:00
以上并不是专家级的回答,而是基本的安全常识。。。。
|
11
lverea OP 越是谦虚越是跟你显摆
|
12
vishun 2018-02-10 10:26:17 +08:00
博客名称,描述这种可以修改的配置,放到数据库里就是了,没必要修改配置文件。
|
13
abusizhishen 2018-02-11 13:26:53 +08:00 via Android
为什么不存到数据库里呢?
|
14
phpok 2018-02-13 10:50:43 +08:00
代码如下:
$dbconfig = array(); $dbconfig['host'] = $_POST['host']; $dbconfig['port'] = $_POST['port']; $dbconfig['user'] = $_POST['user']; $dbconfig['pass'] = $_POST['pass']; $dbconfig['data'] = $_POST['data']; $dbconfig['prefix'] = $_POST['prefix']; $content = file_get_contents('config.php'); $content = preg_replace('/host\s*=.*/i','host = "'.$dbconfig['host'].'"',$content); $content = preg_replace('/port\s*=.*/i','port = "'.$dbconfig['port'].'"',$content); $content = preg_replace('/user\s*=.*/i','user = "'.$dbconfig['user'].'"',$content); $content = preg_replace('/pass\s*=.*/i','pass = "'.$dbconfig['pass'].'"',$content); $content = preg_replace('/data\s*=.*/i','data = "'.$dbconfig['data'].'"',$content); $content = preg_replace('/prefix\s*=.*/i','prefix = "'.$dbconfig['prefix'].'"',$content); file_put_contents('config.php',$content); 特别说明下,上面代码没有任何过滤,也就是很容易出现安全问题。 建议您可以对 $_POST 进行安全封装下。 |