罗码网络discuz插件模板教程微信小程序安卓电脑软件htmlphp源码下载

罗码gitluo

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索
开启左侧

[DZ教程] Discuz二次开发必备技术手册(持续更新)

[复制链接]
罗码男神 实名认证 官方 发表于 2020-1-20 01:24:54 来自手机 | 显示全部楼层 |阅读模式
登录& ^$ N0 X* @; M( j, T
<a href="member.php?mod=logging&action=login" title="登录">登录</a>
- b3 E% z  Z# r, G$ e! v5 F1 K4 D+ e3 z' |4 A0 w% N& r" t: H
注册
7 W7 i1 r) p/ |7 G2 X% {<a href="member.php?mod=register" title="立即注册">立即注册</a>
- H6 a7 S1 U- h( h' f; q6 X9 L* _/ O0 M
忘记密码
: `, ?8 o. Q7 E<a href="javascript:;" title="找回密码">找回密码</a>8 c; T1 D/ v$ N: [, U; x

* K1 \5 l# }& V  r4 ^. j# r购买邀请码
/ Q4 K6 H  d" u0 Umisc.php?mod=buyinvitecode
9 b# Q! e" e3 L8 x- A& q* D. `/ J! C7 B  a% Y0 y
JS跳转
5 G' Y( Y- l+ h& m; X" [onclick="window.location.href='home.php?mod=mobile&do=friend';"
" x$ }) R7 l0 P6 D. ]
9 i% j+ d7 y% v/ {9 B# r! RJS更换class的名称/ X& w, `$ f2 {0 L* \; g* D2 \
document.getElementById('idname').className='a';
0 U, d- I; j+ H, y5 b' y. E% ]+ Wdocument.getElementById('idname').style.display='block';8 a1 M5 w4 ?% n: O  v" [2 d
document.getElementById("idname").style.marginTop="30px";
) k! X" U  T5 ?4 _. x, g# J
  ?( `" j8 V' |1 M& N( J批量替换超链接:
8 Y: X  s0 p6 `6 G8 W2 P$ ihref="[^"]*"
5 \3 S  ^0 T+ e" O8 x1 O$ u) n. h  N- S0 d) L
过滤DZ代码:
8 `6 J8 `8 T- Epreg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));
% y/ O1 q( ~* O) V/ N' {& o2 z# `4 i, X4 v; g* P& \' S% b2 E
调用单个数据! t" I( D7 G3 P2 h9 B+ [4 d
$a = DB::result(DB::query("SELECT qi FROM ".DB::table('abc')." WHERE id = '1'"));
* d! \1 ^6 x# _2 K6 g% C' z" {/ W$ n8 D) Z
调用统计数据
* K9 \7 M# o& A9 c3 F* K$a = DB::result(DB::query("SELECT count(*) FROM ".DB::table('abc')." WHERE id = '1'"));5 j1 k3 k1 M) G3 B5 w

# K5 M; ?; L- R单数据表调用. n  X' y  y- w9 |7 M3 N6 v
$perpage = 20;4 r% P: Q1 E0 u/ t0 z$ ~' Y7 M6 U$ x
$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );; m& T! c; y. q" p  n6 F# l
$start = ($curpage-1)*$perpage;& n( I! x# h7 T/ `5 m
$askcount = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('forum_thread')." WHERE fid = '2' AND authorid > 1"));, Y  _+ K* F: i& w& Q, \/ A
//$asklist) |7 ?. o) E$ B
$asklist = array();) a" K! u$ P( ~( y5 e- A4 f7 f
if ($askcount) {
4 Z$ _' x- D" |. T  j        $query = DB::query("SELECT * FROM ".DB::table('forum_thread')." WHERE fid = '2' AND displayorder > -1 ORDER BY tid ASC LIMIT $start,$perpage");  P' S/ m1 w% X& J& c$ |
        while ($value = DB::fetch($query)) {# W( k( o/ I5 d7 j& N2 ^1 }
                $asklist[] = $value;
* ?, V: ~. O! w8 {  x# `; ^5 k. y$ u        }
& N" t9 c  {6 i% G}5 K$ D' V, g0 `1 F5 d; n
$multi = multi($askcount, $perpage, $curpage, "这里填写跳转地址");. z& C) V3 u+ L( s9 B. U- U

' F4 y, a5 R/ f
# y* [+ \& f7 _* R3 k* C, ?+ g& v
多数据表调用
% F9 s7 m5 y- E/ R6 [/ R6 y$perpage = 40;5 G& X( r) ?3 H+ s4 U
$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );
/ b& m+ @  V, {/ n$start = ($curpage-1)*$perpage;
+ f' z7 L7 F. M0 e$acount = DB::result(DB::query("SELECT count(*) FROM ".DB::table('forum_forum')." b LEFT JOIN ".DB::table('forum_forumfield')." bf ON bf.fid=b.fid WHERE b.type='sub' AND b.status = 3 AND bf.icon != ''"));
& J6 g; U% @0 D, J' I//$alist& M( R+ c$ q7 Z, g+ ~; {
$alist = array();) K' y! ], M. T' n' I
if ($acount) {" y) F& H" u. m: G0 l, |* a3 d
        $query = DB::query("SELECT bf.*, b.* FROM ".DB::table('forum_forum')." b LEFT JOIN ".DB::table('forum_forumfield')." bf ON bf.fid=b.fid WHERE b.type='sub' AND b.status = 3 AND bf.icon != '' ORDER BY bf.shoplevel DESC, b.commoncredits DESC, bf.fid DESC LIMIT $start,$perpage");
. ]) V4 U8 R) h) I        while ($value = DB::fetch($query)) {
+ r4 m+ k: k" ~6 T+ ]' j                $alist[] = $value;
( g6 r* u! S$ I: N: u0 R: c" X        }2 S5 Q$ r" T& `/ Q( e
}7 B( n- Z) n3 t5 a
$multi = multi($acount, $perpage, $curpage, "这里填写跳转地址");: v; ~/ V# L/ k& n

* }' M1 ~* ?. U/ ?1 W
* X' J  I. Z, u, e4 l0 H9 @7 a. d% Q: h: ~5 c. g
前台数据显示* }" Z/ U9 l3 J9 k
<!--{loop $alist $key $value}-->
0 O) ^4 {; t% R( V3 @7 ~<!--{eval $tupianfm = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_threadimage')." WHERE tid = '$value[tid]'"));}-->
& r: s+ @! T7 D4 Z<img src="$tupianfm"><br>$value[authorid]& v/ S6 j$ l; ]( D/ t3 Z" `
<!--{/loop}-->
  ], W/ l- h8 J7 S. N- l
% J9 Z  E2 w7 i5 ~/ V8 W- F( C
* p  ]9 `1 K2 m# v取数据表中符合条件的第一条数据
6 c) J9 Z. m2 I- w) k# }$app=array();# {- i2 @7 N- |2 n
$app=DB::fetch_first("select * from ".DB::table('abc')." where id='{$id}'");
$ O8 c6 U+ R8 k" p! F- N% d# X4 p  ?
1 B" Q$ d& D! a/ P

% l( R2 ?1 d! {人性化时间戳  _+ @, x: f/ f
<!--{echo dgmdate(这里填写时间参数, 'u', '9999', getglobal('setting/dateformat'))}-->/ x8 u9 _2 R' K+ Z2 \( a- Z" ]
<!--{echo date("Y-m/d H:i:s",这里填写时间参数)}-->
$ |2 T; h+ i3 g$ }6 B- M; `
5 R* n2 C/ F; J$ z; h
9 G2 p+ G- h0 n; D截取字符字数
& Y# n$ e; W! u7 J. ^<!--{echo cutstr(这里填写参数,40)}-->
. E; G, k% Y$ z% a
/ z8 d+ J/ S/ d% q; ^
, x6 U7 G8 _* n- l7 \4 h5 C过滤DISCUZ代码5 g6 ]" x6 F+ m) d! s1 j1 |
preg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));3 u* ^/ o) S4 Z  D  J) ]7 p  M4 K
1 d: \4 V- }8 r
/ o% ?3 S/ j5 M+ o- Q
写入数据库
  p. J* d6 w+ c2 _5 ^* L& c3 {& ]if(submitcheck('tijiao')) {; }, [% R- ]) b( G
        $setarr = array(
# P+ f2 T5 _; u                'tid' => $_GET['topicid'],
# r  Z, I" h9 u4 D6 I3 D                'name' => $_POST['name'],9 Y$ Y; }/ ~4 B& m
                'position' => $_GET['position'],& W5 `1 ]3 B+ `4 `0 ~( @
                'dateline' => $_G['timestamp'],; U8 F2 |4 b0 f9 l2 j5 F2 y# Q% X
        );( L' k5 ^% r/ R0 w* d0 J3 A+ @
        DB::insert('abc', $setarr, 1);4 _2 `3 @4 M/ T+ j3 P! u0 b
        $query = DB::query("UPDATE ".DB::table('abc')." SET stickreply='1' WHERE tid='$tid'");
0 d8 E6 l  A1 o+ L        $query = DB::query("DELETE FROM ".DB::table('abc')." WHERE pid='$pid'");
$ h; h2 D/ a' l; O' |: T. b        showmessage('成功的提示信息', "跳转地址");
; T' z- F. Q% P# u( a" b( I. q2 F9 b# T}' y, }3 u+ Y( k: L
) x6 f  ]0 |8 R% Q1 M

4 `, }1 ^; F3 q5 q) R0 \
; U8 k* M! ~) `4 g) h表单提交:9 H1 z2 }3 R* Y
<form action="do.php" method="post" autocomplete="off">
" g1 W" z5 x% q- j        <input type="hidden" value="{FORMHASH}" name="formhash" />  G0 w9 k8 |7 m- V
        最低奖金:<input name="qi" type="text" value="" /> 
% x; U! t6 t2 w        最高奖金:<input name="end" type="text" value="" />  # V6 {- M* z% ]% n3 q0 G9 i/ u% f
        <button value="true" name="tijiao" type="submit">提交设置</button>
2 p$ ~" [  R# I/ |* X& M/ T        <input type="hidden" name="tijiao" value="true" />5 m( z' j) C* l$ ^2 T" y" W8 Q
</form>
% v4 a: t2 p! Y) U
2 ]4 W. c1 s+ o6 n+ R( o5 m# A; ]* g5 B7 v) c. ~& P! B- m3 A
, r" K, e. ?6 @) r" d$ }0 A
以下两个时间格式是对等关系( t- H1 b: s& Z
date("Ymd",time());  20150212
( h" h8 y$ i8 [% Z3 KFROM_UNIXTIME(dateline, '%Y%m%d')
8 {- c( }$ |9 ~# A7 Y0 c0 \/ J+ @7 Q( e$ ^  o- }9 A
前者用于PHP,后者用于数据库调用的字段的格式化0 a; e. ]8 t3 c: a( F2 ^6 |( W

. P6 `5 X0 m7 K0 c; ?1 W5 `调用图片附件
# B7 E" P5 r' s, ]<!--{eval $biaoid = substr($value[tid], -1); $cover = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_attachment_'.$biaoid.'')." WHERE tid = '$value[tid]'"));}-->
- {: Z4 b$ {5 u4 Q& E) L0 X" r, T& E. T# i$ T) q; W& J! C/ Z

4 w& }& }5 d9 L: X% f数据库循环嵌套调用
8 P1 f; v  Y' \0 b8 J( c<!--{eval $slides = DB::fetch_all("SELECT * FROM ".DB::table('a')." WHERE `uid`= $_G[uid] ORDER BY `id` DESC");}-->
) l$ C1 d# z0 a<!--{loop $slides $slide}--># J" M* `! [0 {  t+ e" ^
$slide[name]2 Z8 F1 }$ ]; }
<!--{/loop}-->8 I% c5 v, q6 |! @( M

4 P1 v, N& s2 M/ x
9 e* g, K3 m8 k9 V5 {2 i( Bucenter无法登录:/ x* h* |# V' n- p  i  P
打开uc_server/model/admin.php1 ^3 I5 p" L, a
找到第22行的, Y: V9 L. @4 w6 a  F5 e; d0 y+ {
$this->cookie_status = 0;
' t# a9 `+ r. z7 ?, M& x$ O! V- C: ~
  d' H; d5 `: @2 u/ @( i  [3 O+ K/ b" i! j* d! l% ^
改成
8 ^; x  [" ]$ E% ?# w3 G$this->cookie_status = isset($_COOKIE['sid']) ? 1 : 0;- w: y) Z+ w) }0 D% F" d5 B, m

) x# V# _0 r" n6 J& W  Q" L# W1 d0 X" B
/ H  b+ h) Y6 A
无刷新切换li标签并且同时加载框架页面:
) U  v- T0 q) F, Z& Q; q<script type="text/javascript"> 1 l- n, g$ p0 c' J$ K
var jq = jQuery.noConflict();
: U3 d. Y9 w8 d/ I& \jq(function(){   \- [. U/ F# D, X2 S
jq("#changemenu>li").mouseover(function(){ , e# ?- u/ T) h1 D  {
jq("#changemenu>li").each(function(i){ ) W( B# b1 o9 H8 W8 [
jq(this).removeClass("current");
& @* c$ {; U$ d$ u* u2 v- I/ N" D}); 9 v! Y" ^3 N  g; V
jq(this).addClass("current"); 3 S; A% e! Z# r& n
document.getElementById("changenr").innerHTML='<iframe src="do.php?id='+jq(this).attr('dataid')+'" height="350" width="1070" frameborder="0" scrolling="no"></iframe>';
, T6 y6 `) z9 y/ f8 _% l}).mouseout(function(){ 3 L# g3 m4 `5 E0 l  q* Y+ r
jq(this).addClass("current");
! g: L2 ~0 `! r5 C});
8 Y) L6 F5 j1 M});
5 |9 s. K5 i7 ^8 ^# `4 r</script>2 g+ u2 ~+ K, u# S% n
<ul id="changemenu">( e7 D5 p2 }; T$ Q$ h8 v
   <li class="current" dataid="1"></li>% B$ D, O# z4 [2 X4 D
   <li dataid="2"></li>4 w+ I+ B$ i! V0 q
</ul>  z5 I$ o+ v6 v- q. g9 V
<div id="changenr"></div>
3 D" r$ ?7 Q# Z! f7 F6 `& Z1 L  i7 I3 X! B( y7 |7 @8 u

/ D7 _3 c! L# {; b6 s
8 Q+ x8 ?7 _2 v- e8 ^快速发帖
% ?$ W$ Z" C; ~2 ^: W# g- T% s" B<a href="forum.php?mod=misc&action=nav">发布新话题</a>8 r- F! G% |5 o/ f) v
* H/ r( q- H+ Z2 x- T( D, g
( a% N& f; ]* R

% Z, ]% M3 _, b) o% g% ]! D; W, \8 C7 z( fDISCUZ JSON数据解析获取
, o! A# V( @: y# h$str = 'a:2:{s:8:"sitename";s:8:"源码哥";s:3:"pic";s:12:"ymg6.jpg";}';" H; L0 H# @1 q# \2 x
$newstr = str_replace("\","",$str);" l* f# P. C1 g  e
$data = unserialize($newstr);& H, Y7 R2 ~$ v5 G9 _' p
echo $data[sitename];//输出结果为源码哥- a! @- U! c4 Y8 E( D  i$ ^
4 i; w3 d. j% o! m2 h- P9 W- j

0 M3 _0 _5 v) j5 e9 y% }- \. `+ I5 `% G1 ^2 p; O$ F. \
DISCUZ云平台站点同步提示DNS错误解决方法:打开source\plugin\manyou\Service\Client\Restful.php,找到代码:5 C0 \. e8 D7 @6 ^4 \% x4 Q6 v
$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 5);
) R3 ]& R% ], g2 [; o* S8 b  }& Q* i1 Y0 ~

6 P! i! D  [: O2 Z0 k2 P# P, v修改为:
' P' b+ J" c( ]8 q" T* r) U+ y$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 30);  S/ h6 W* A5 P! B
" T3 P+ s  V6 s+ j# G) Z2 `6 Y2 G
; h& e2 Z) |: M

: i2 {% N% _: k9 Y' A/ C4 p' uLI标签列表自适应宽度JS实现代码(去除每行最后一个li标签的右边距):
0 U2 W0 `9 G# M<script type="text/javascript" src="http://www.banban.so/new/bang/uploads/146383669567393.js"></script>: {5 O" [( i) l7 f6 e7 s0 d: g
<style>ul,li{margin:0; padding:0; list-style:none;}.list{width:100%; margin:0 auto;}.list li{width:32%; float:left; margin-right:2%; background:#0092B9; text-align:center; color:#fff; height:300px; line-height:300px; margin-bottom:10px;}</style>
" e' X) ]2 r9 h0 o7 U3 y<div class="list">
: i( F" i) Q- ^5 w  E        <ul>
8 G: T* X0 n6 L  a1 ~, q        <li>源码哥</li>3 q  D1 Y( C! V% T5 d/ m4 i( C
        <li>源码哥</li>
4 K( a% l+ [, F% r) s) J( l2 I, a1 o        <li>源码哥</li>
+ e8 W0 k7 K& j& W5 T1 s$ P0 L        <li>源码哥</li>0 V& E% d0 e7 z3 v& b8 p
        <li>源码哥</li>; C; g; M. [2 H" K  M3 p
        <li>源码哥</li>/ W, b' m' B* [% ~/ y
    </ul>& x6 [2 M. ~+ B% S& G
</div>
' R' m2 F2 V2 ^8 r<script type="text/javascript">
/ i/ F. o; S& Z7 g    $('.list li:nth-child(3n)').css('marginRight', '0');( C! R- ^) M! x0 s( [9 \
</script>
# r+ ^8 m+ y' q+ P; O1 V  o4 D
! d; _  A* L3 x( i7 t: D, Y. d
% i0 p3 j% N, x& _2 M" h3 e2 [2 X) |: m
常用词汇
  {7 N' |; c7 m; n  bselect 选择
% W1 d6 o8 Q! b, scount 总数  ^5 {3 j' j* @- H6 ?; l% `/ w
table 表( c& X% N* v; L7 Q7 C
where 条件) ~! k9 a: _  x3 A) v7 e% h
result 结果
8 f, f$ W$ M3 n  e, r! Cperpage 每页
  v$ L; Y; P/ q; v5 r1 Lcurpage 当前页2 D( I! r( `: r' N2 K& b( e; c
update 更新* G  R( \- M- h* N7 U
delete 删除( Y  f1 ^' a+ r: v, E* X
insert 写入$ \4 ^# J# _! H! v1 q* S1 K0 v
dateline 日期9 }9 ^7 L+ H1 o- X
time 时间
. r5 T+ B. A1 x! j5 c9 n  z  aecho 输出   <?php   echo '123';   ?>
+ N+ p" c( V2 i5 U4 s$ y) Emulti 分页函数
+ g  h! k* F. p9 N3 Pif 如果
% M$ a0 ]* Z" P( j8 h5 I6 Zelse 否则
2 f2 L! p7 A7 ?elseif
7 {- h7 l: z6 Q6 [start 起始
) |4 m; U) R' k0 h! a! J% y* Zlimit 限制  limit 10! V' a7 d. A# M1 u
DESC 倒序
8 |$ Y& m+ _1 X7 w) ?1 VASC 正序
3 V+ g  A, Q5 J6 o) l2 B
# v/ z* m' Y% V' w
5 d' `$ R. T' y6 j- X# Y5 x$ U$ t4 x4 ^8 d( Y
活动帖发布页面核心处理文件:
# q  l% Q$ {" d0 Ysource\class\extend\extend_thread_activity.php2 l* c) A9 Z7 m: `6 d
: p% `5 Z. p, `6 M% v' Z
分类信息解析文件- N4 `9 }: |1 D+ H2 |' H
source\function\function_threadsort.php
- |& i) q# R; o' g' x( X7 XDiscuz模版运行php代码. r9 U6 a) m3 |+ Y# \" _6 D
<!--{eval echo'源码哥';}-->' ^! {0 x( o4 b0 k: g! }
或7 d" ^8 g  Z. u2 p  y
<!--{eval}-->, J& t8 Z" m% S0 w
echo'源码哥';
, ~# @- p7 b* [, O: |4 ]<!--{/eval}-->  \, @7 w& W( }5 @7 _$ q: U* b) C
标签获得焦点后触发js
) r0 j: }! ^, ~- e" Tonfocus="ymgcom()": i  b2 O. E' _* K

0 r5 B! Q% {8 |
& K# B( h: A5 ^4 y) H标签失去焦点后触发js   N) `% b  l- U) P  q' X. h

7 h0 l+ ?+ q9 T0 p7 `5 V5 p/ @onblur="ymgcom();"
- M: ~( P; ?' x3 `0 T7 ~! |6 D" H! o# v- _4 C
/ {0 F# r2 f, V* ~
密码输出1*****6
! O" T& _3 h+ g* M/ q. @//原密码为$_GET['password']
. ]! ?, r* H0 U. D* h# }& }$password = preg_replace("/^(.{".round(strlen($_GET['password']) / 4)."})(.+?)(.{".round(strlen($_GET['password']) / 6)."})$/s", "\\1***\\3", $_GET['password']);! E8 `9 U1 O! ?4 C5 V
echo $password;9 `: h) P+ u# M
1578843666617.jpeg

想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
yyc男神 发表于 2020-1-21 03:31:41 | 显示全部楼层
看帖回帖是美德!

回复

使用道具 举报

雨后晴天 发表于 2020-1-21 04:32:56 | 显示全部楼层
帮帮顶顶!!

回复

使用道具 举报

MR.Z 发表于 2020-1-21 04:46:00 | 显示全部楼层
路过,支持一下啦

回复

使用道具 举报

66666 发表于 2020-1-21 16:44:35 | 显示全部楼层
这是什么东东啊

回复

使用道具 举报

 shu1332725 发表于 2020-1-21 17:24:28 | 显示全部楼层
路过,支持一下啦

回复

使用道具 举报

foryun 发表于 2020-1-22 03:36:46 | 显示全部楼层
真是 收益 匪浅

回复

使用道具 举报

666男神 发表于 2020-1-24 23:52:00 | 显示全部楼层
相当不错,感谢无私分享精神!

回复

使用道具 举报

全村的希望 发表于 2020-1-26 11:18:50 | 显示全部楼层
前排支持下

回复

使用道具 举报

jjj111 发表于 2020-1-26 12:32:02 | 显示全部楼层
不错 支持下

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录 手机动态码快速登录

本版积分规则

QQ|Archiver|手机版|小黑屋|罗码 ( 粤ICP备17073043号 )https://beian.miit.gov.cn/#/home

GMT+8, 2026-10-12 05:47 , Processed in 0.175817 second(s), 62 queries .

Powered by 罗码网络! X3.4

© 2001-2017

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