lverea
V2EX  ›  PHP

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

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