V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lverea
V2EX  ›  PHP

麻烦老手给个 PHP 写入文件的实例

  •  
  •   lverea · 2018-01-31 19:13:40 +08:00 via Android · 2604 次点击
    这是一个创建于 2266 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想要实现表单提交内容,写入 config.php 对应位置
    14 条回复    2018-02-13 10:50:43 +08:00
    xubeiyan
        1
    xubeiyan  
       2018-01-31 21:44:09 +08:00 via Android
    这样是不安全的,因为 php 文件是可解释执行的,不怕别人插入恶意代码吗?应该使用 php 去读写某个不可执行的文件,或者使用数据库,大概是这样 write_config.php 写入-> config_file ->被 read_config.php 读取
    lverea
        2
    lverea  
    OP
       2018-02-01 01:52:26 +08:00 via Android
    @xubeiyan 也就是说,config.ini.php 文件不是直接写入文件生成的,都是数据入库后生成的?
    to2false
        3
    to2false  
       2018-02-01 09:24:08 +08:00
    config 一般存储一些不经改动的配置项,如果是动态的存数据库,至于表单提交做好过滤
    zarte
        4
    zarte  
       2018-02-01 10:09:31 +08:00
    file_put_contents(var_export($_POST),'config.php');
    xubeiyan
        5
    xubeiyan  
       2018-02-01 14:37:31 +08:00
    @lverea 你楼下的那位说得对……这种有修改需求的最好是写入数据库……就算你要写入文件,也要用不可以被解释执行的文件来保障安全
    lverea
        6
    lverea  
    OP
       2018-02-02 04:36:10 +08:00 via Android
    @zarte 大概是这意思,感谢你的回答,相比其他切合实际点。
    lverea
        7
    lverea  
    OP
       2018-02-02 04:38:31 +08:00 via Android
    首先感谢大家的回答,但这些都有点答非所问的感觉。也许是我的提问不对。我重新换个问法。
    lverea
        8
    lverea  
    OP
       2018-02-02 04:54:49 +08:00 via Android
    我打算用 php 做一个自己的 blog,blog 的数据链接我已经手动配置到 config.php 文件里了,我想把 blog 名称,描述等几个常量也写在里面,方便调用。现在问题来了,我希望通过网站后台直接修改 blog 名称,而不是每次都 FTP 修改 config 文件。现在大致知道需要用到的 php 函数,但问题是没有一个实际的例子可学习,所以到此发问。结果回答的都是专家级的解答也是醉了。愿意花时间帮解答的,愿意支付酬金,可直接加我 QQ81525260
    lslqtz
        9
    lslqtz  
       2018-02-02 10:16:45 +08:00
    以上并不是专家级的回答,而是基本的安全常识。。。。
    lverea
        10
    lverea  
    OP
       2018-02-02 19:56:59 +08:00 via Android
    @lslqtz 对啊都是些基本常识,却说的好像多牛逼似的。总之都是些口水话,没有任何意义。
    lverea
        11
    lverea  
    OP
       2018-02-02 19:57:45 +08:00 via Android
    越是谦虚越是跟你显摆
    vishun
        12
    vishun  
       2018-02-10 10:26:17 +08:00
    博客名称,描述这种可以修改的配置,放到数据库里就是了,没必要修改配置文件。
    abusizhishen
        13
    abusizhishen  
       2018-02-11 13:26:53 +08:00 via Android
    为什么不存到数据库里呢?
    phpok
        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 进行安全封装下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3793 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 04:28 · PVG 12:28 · LAX 21:28 · JFK 00:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.