• 技术文章 >php教程 >php手册

    Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口

    2016-06-13 12:31:30原创419
    你需要修改attachment.php文件 在根目录下
    在$attachexists = $ispaid = FALSE;下面添加
    if (!empty($checktwo)) {
    在最末尾的?>前添加
    } else {
    echo "";
    echo "";
    }
    我在本机架设Discuz! 5.0.1调试通过了
    完整代码如下:
    /*
    [Discuz!] (C)2001-2006 Comsenz Inc.
    This is NOT a freeware, use is subject to license terms
    $RCSfile: attachment.php,v $
    $Revision: 1.13 $
    $Date: 2006/08/11 06:51:07 $
    */
    require_once './include/common.inc.php';
    $discuz_action = 14;
    if($attachrefcheck && $_SERVER['HTTP_REFERER'] && preg_replace("/https?:\/\/([^\/]+).*/i", "\\1", $_SERVER['HTTP_REFERER']) != $_SERVER['HTTP_HOST']) {
    //header("Location: {$boardurl}images/common/invalidreferer.gif");
    showmessage('attachment_referer_invalid', NULL, 'HALTED');
    }
    /*
    $query = $db->query("SELECT a.*, t.fid, p.authorid FROM {$tablepre}attachments a, {$tablepre}threads t, {$tablepre}posts p
    WHERE a.aid='$aid' AND t.tid=a.tid AND p.pid=a.pid AND t.displayorder>='0' AND p.invisible='0'");
    $attach = $db->fetch_array($query);
    */
    periodscheck('attachbanperiods');
    $attachexists = $ispaid = FALSE;
    if (!empty($checktwo)) {
    if(!empty($aid)) {
    $query = $db->query("SELECT * FROM {$tablepre}attachments WHERE aid='$aid'");
    if($attach = $db->fetch_array($query)) {
    $query = $db->query("SELECT tid, fid, price, special FROM {$tablepre}threads WHERE tid='$attach[tid]' AND displayorder>='0'");
    $thread = $db->fetch_array($query);
    if($thread['fid']) {
    $query = $db->query("SELECT authorid FROM {$tablepre}posts WHERE pid='$attach[pid]' AND invisible='0'");
    if($db->num_rows($query)) {
    $attach['authorid'] = $db->result($query, 0);
    $attachexists = TRUE;
    }
    }
    }
    }
    if($allowgetattach && ($attach['readperm'] && $attach['readperm'] > $readaccess) && $adminid <= 0 && !($discuz_uid && $discuz_uid == $attach['authorid'])) {
    showmessage('attachment_forum_nopermission', NULL, 'NOPERM');
    }
    if(!$thread['special'] && $thread['price'] > 0 && (!$discuz_uid || ($discuz_uid && $discuz_uid != $attach['authorid'] && $adminid <=0))) {
    $query = $db->query("SELECT uid FROM {$tablepre}paymentlog WHERE uid='$discuz_uid' AND tid='$attach[tid]'");
    if($db->result($query, 0)) {
    $ispaid = TRUE;
    } else {
    showmessage('attachment_payto', 'viewthread.php?tid='.$attach['tid']);
    }
    }
    $filename = $attachdir.'//m.sbmmt.com/m/'.$attach['attachment'];
    if(is_readable($filename) && $attachexists) {
    $query = $db->query("SELECT f.viewperm, f.getattachperm, f.getattachcredits, a.allowgetattach FROM {$tablepre}forumfields f
    LEFT JOIN {$tablepre}access a ON a.uid='$discuz_uid' AND a.fid=f.fid
    WHERE f.fid='$thread[fid]'");
    $forum = $db->fetch_array($query);
    if(!$ispaid) {
    if(!$forum['allowgetattach']) {
    if(!$forum['getattachperm'] && !$allowgetattach) {
    showmessage('group_nopermission', NULL, 'NOPERM');
    } elseif(($forum['getattachperm'] && !forumperm($forum['getattachperm'])) || ($forum['viewperm'] && !forumperm($forum['viewperm']))) {
    showmessage('attachment_forum_nopermission', NULL, 'NOPERM');
    }
    }
    }
    if(!($isimage = preg_match("/^image\/.+/", $attach['filetype']))) {
    checklowerlimit($creditspolicy['getattach'], -1);
    }
    if(empty($noupdate)) {
    if($delayviewcount == 2 || $delayviewcount == 3) {
    $logfile = './forumdata/cache/cache_attachviews.log';
    if(substr($timestamp, -1) == '0') {
    require_once DISCUZ_ROOT.'./include/misc.func.php';
    updateviews('attachments', 'aid', 'downloads', $logfile);
    }
    if(@$fp = fopen(DISCUZ_ROOT.$logfile, 'a')) {
    fwrite($fp, "$aid\n");
    fclose($fp);
    } elseif($adminid == 1) {
    showmessage('view_log_invalid');
    }
    } else {
    $db->query("UPDATE {$tablepre}attachments SET downloads=downloads+'1' WHERE aid='$aid'", 'UNBUFFERED');
    }
    }
    if(!$isimage) {
    $forum['getattachcredits'] = $forum['getattachcredits'] ? unserialize($forum['getattachcredits']) : array();
    $getattachcredits = $forum['getattachcredits'] ? $forum['getattachcredits'] : $creditspolicy['getattach'];
    updatecredits($discuz_uid, $getattachcredits, -1);
    }
    $filesize = filesize($filename);
    ob_end_clean();
    header('Cache-control: max-age=31536000');
    header('Expires: '.gmdate('D, d M Y H:i:s', $timestamp + 31536000).' GMT');
    header('Content-Encoding: none');
    $attach['filename'] = (strtolower($charset) == 'utf-8' && strexists($_SERVER['HTTP_USER_AGENT'], 'MSIE')) ? urlencode($attach['filename']) : $attach['filename'];
    if($isimage && !empty($noupdate)) {
    header('Content-Disposition: inline; filename='.$attach['filename']);
    } else {
    header('Content-Disposition: attachment; filename='.$attach['filename']);
    }
    header('Content-Type: '.$attach['filetype']);
    @$fp = fopen($filename, 'rb');
    @flock($fp, 2);
    $attachment = @fread($fp, $filesize);
    @fclose($fp);
    echo $attachment;

    } else {
    showmessage('attachment_nonexistence');
    }
    } else {
    echo "";
    echo "";
    }
    ?>
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:什么是MVC,好东西啊 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • php根据用户语言跳转相应网页• PHP弹出提示框并跳转到新页面即重定向到新页面• PHP 动态生成静态HTML页面示例代码• 对MVC的理解,MVC理解• ThinkPHP框架里隐藏index.php,thinkphpindex.php
    1/1

    PHP中文网