2核1G3M服务器88一季度

腾讯云,阿里云百度云等 折扣价→点我←

Discuz X3.2 二次开发典型代码及Form submitcheck discuz 教程

游客1 游客组

Discuz X3.2 二次开发典型代码及Form submitcheck:

<?php
// 定义应用 ID 全局记录当前用户所在位置,不需要可定义为0 不要省略
define('APPTYPEID', 0);
define('CURSCRIPT', 'mood');

//====================================
// 基础文件引入
//====================================
require './source/class/class_core.php';

$discuz = & discuz_core::instance();

//====================================
//模块定义以及模块缓存定义
//====================================
$modarray = array('list', 'publish');

// 判断 $mod 的合法性

$mod = !in_array($discuz->var['mod'], $modarray) ? 'list' : $discuz->var['mod'];

//定义当前模块常量
define('CURMODULE', $mod);

//====================================
// 加载核心处理,各程序入口文件代码相同
//====================================
$discuz->init();

//====================================
// 以下内容由各个模块根据需要自行撰写程序运行环境
// 位于核心处理与mod加载之前,可以处理一些各mod共用的一些数据,或入口权限判断等...
// 由于本功能只需要游客做发布的限制,所以判断就要放到module/mood/publish.php中去了。
//====================================


//===================================
//加载 mod
//===================================

require DISCUZ_ROOT.'./source/module/mood/'.$mod.'.php';

?>



<?php
// mod文件只能被入口文件引用,不能直接访问
if(!defined('IN_DISCUZ')) {
        exit('Access Denied');
}

//初始化当前页码
$page = empty($_GET['page'])?1:intval($_GET['page']);
if($page<1) $page=1;

//分页
$perpage = 20;
$start = ($page-1)*$perpage;

//获取当前页的留言数据
$list = array();
$query = DB::query("SELECT * FROM ".DB::table('mood_wall')." WHERE 1 ORDER BY dateline DESC LIMIT $start, $perpage");
while($mood = DB::fetch($query)) {
        $mood['dateline'] = dgmdate($mood['dateline'], 'u');
        $list[] = $mood;
}

//获得一个简单的分页,只有上一页和下一页,这个不需要count()数据表中的所有记录
$multi = simplepage(count($list), $perpage, $page, 'mood.php?mod=list');

//数据准备完毕,引入相应的模板,准备输出
include_once template("mood/list");

?>


<!--//说明: 显示公共头部模板-->
<!--{template common/header}-->

<!--//说明: 开始显示留言-->
<div id="ct" class="wp cl">
        <h1 class="mt">心情墙 - <!--{if $_G[uid]}--><a href="mood.php?mod=publish">发表心情</a><!--{/if}--></h1> 
        <div class="bm">
                <!--{if $list}-->
                        <!--//说明: loop 循环一个数组 相当于foreach(){}-->
                        <!--{loop $list $mood}-->
                                <a href="home.php?mod=space&uid=$mood[uid]" target="_blank"><!--{avatar($value[authorid],small)}--></a><br>
                                <a href="home.php?mod=space&uid=$mood[uid]" title="$mood[username]" target="_blank" class="xi2">$mood[username]</a> 发表于: $mood[dateline]
                                <br>
                                心情: $mood[message]
                                <hr>
                        <!--{/loop}-->
                        <!--//说明: 显示准备好的分页链接-->
                        $multi
                <!--{else}-->
                        <p class="emp">暂时没有记录...</p>
                <!--{/if}-->
        </div>
</div>

<!--//说明: 显示公共尾部模板-->
<!--{template common/footer}-->


<?php
// mod文件只能被入口文件引用,不能直接访问
if(!defined('IN_DISCUZ')) {
        exit('Access Denied');
}

// 游客不能发表心情的判断
if(!$_G['uid']) {
        showmessage('抱歉,您尚未登录,无法进行此操作', '', array(), array('login' => 1));
}

if(submitcheck('submit')) {
        $message = cutstr(dhtmlspecialchars(stripslashes($_POST['message'])), 150, ''); //截取150个字节的内容
        DB::query("INSERT INTO ".DB::table('mood_wall')." (uid, username, dateline, message) VALUES ('$_G[uid]', '$_G[username]', '".TIMESTAMP."', '".daddslashes($message)."')");
        showmessage('发表成功。', 'mood.php?mod=list');
}

//显示发布表单
include_once template("mood/publish");
?>


<!--//说明: 显示公共头部模板-->
<!--{template common/header}-->

<!--//说明: 开始显示表单-->
<div id="ct" class="wp cl">
        <h1 class="mt"><a href="mood.php?mod=list">心情墙</a> - 发表心情</h1>
        <div class="bm">
                <form method="post" action="mood.php?mod=publish" class="pns">
                        <input type="hidden" name="formhash" id="formhash" value="{FORMHASH}" />
                        <!--FORMHASH 自动产生,submitcheck()函数要判断这个值-->
                        <textarea name="message"></textarea><br><br>
                        <input type="submit" class="pn vm" name="submit" value="发表" />
                </form>
        </div>
</div>

<!--//说明: 显示公共尾部模板-->
<!--{template common/footer}-->




关于语言包的提取
以上示例中的汉字都是写到模板和程序代码里的。如果你想支持多种汉字编码,那么提取到统一的语言包中,与代码分离会方便很多。
语言包目录:./source/language
首先给我们的功能建一个专用目录:./source/language/mood
在专用目录下创建文件:
lang_template.php 名称是固定的 lang()函数会自动加载这个文件

<?php
                $lang = array (
                        'mood_name' => '心情墙',
                        'mood_publish' => '发表心情',
                        'mood_publish_succeed' => '发表成功。',
                        'not_loggedin' => '抱歉,您尚未登录,无法进行此操作',
                  );
        ?>
        //注:'not_loggedin' 这个在公共的lang_message.php里已经存面
        //理论上是可以直接使用showmessage('not_loggedin'...),但还是用自己的踏实。showmessage(lang('mood/template', 'not_loggedin')...)
        //模板中的汉字替换成语言包


        <h1 class="mt"><a href="mood.php?mod=list">心情墙</a> - 发表心情</h1>

        变成

        <h1 class="mt"><a href="mood.php?mod=list">{lang mood_name}</a> - {lang mood_publish}</h1>
        

        
        //程序中使用语言包
        
        showmessage('抱歉,您尚未登录,无法进行此操作', '', array(), array('login' => 1));
        
        变成
        
        showmessage(lang('mood/template', 'not_loggedin'), '', array(), array('login' => 1));

站长窝论坛版权声明 1、本帖标题:Discuz X3.2 二次开发典型代码及Form submitcheck
2、论坛网址:站长窝论坛
3、站长窝论坛的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
4、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
5、站长窝论坛一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本帖由游客1在站长窝论坛《程序综合区》版块原创发布, 转载请注明出处!
评论
最新回复 (9)
返回
发新帖