请选择 进入手机版 | 继续访问电脑版

硬汉工作室

搜索
热搜: 活动 交友 discuz

[开发技术] txt附件下载时追加内容到txt

[复制链接]
发表于 2021-8-23 18:01:30 | 显示全部楼层 |阅读模式
硬汉工作室有一个线上插件:TXT附件追加内容,地址:https://addon.dismall.com/plugins/nciaer_attach_add_text.html,这个是新发帖时往txt里追加内容,老帖不生效,并且追加的内容也是楼主的信息。今天有位站长希望实现的是追加下载会员的信息。用插件实现起来难度比较大,我直接改源码了

找到文件:source/module/forum/forum_attachment.php,在230多行下面追加下面的代码:

function detect_encoding($file) { // 这个函数用来检测txt文件的编码
    $list = array('gbk', 'utf-8');
    $str = file_get_contents($file);
    foreach ($list as $item) {
        $tmp = mb_convert_encoding($str, $item, $item);
        if (md5($tmp) == md5($str)) {
            return $item;
        }
    }
    return null;
}
// 判断是否是txt内容
if(strpos($attach['filename'], '.txt') !== FALSE) {

    $filecontent = file_get_contents($filename);
    $pconfig['msg'] = $filecontent."{$_G['uid']}";
    $fp = fopen($filename,"rb");
    $str ="";
    while(!feof($fp)){
        $str .= fgets($fp);
    }
    $dateline = date('Y-m-d H:i:s');
    $newmsg = "本资源由{$_G['username']}(UID:{$_G['uid']})于{$dateline}下载,仅限本人使用";
    $newfilename = $filename.'_tmp';
    unlink($newfilename);
    $charset = detect_encoding($filename);
    if(!empty($charset)) {
        if($charset == 'gbk' && $_G['charset'] == 'utf-8') {
            file_put_contents($newfilename, $str.PHP_EOL.iconv('UTF-8', 'GBK', $newmsg));
        } elseif($charset == 'utf-8' && $_G['charset'] == 'gbk') {
            file_put_contents($newfilename, $str.PHP_EOL.iconv('GBK', 'UTF-8', $newmsg));
        } else {
            file_put_contents($newfilename, $str.PHP_EOL.$newmsg);
        }
    }
    $filename = $newfilename;
    //$attach['filename'] = $attach['filename'].'_tmp'; // 客户的dz版本必须要这行才能正常添加
    //$filesize = filesize($filename);
}


其实原理就是当有人访问下载时,会临时生成一个tmp文件,这个文件里追加下载人的信息,然后下载。

当然如果同时下载的人很多的话,可能会出问题,
有关PHP系统、Discuz或网站等各种问题,可以联系QQ1069971363寻求付费支持
Discuz插件商店:http://addon.dismall.com/?@56030.developer
回复

使用道具 举报

QQ|Archiver|手机版|小黑屋|硬汉工作室 ( 冀ICP备13021567号-9 )

GMT+8, 2024-4-19 07:15 , Processed in 0.050970 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表