discuz论坛与其它网站登录注册整合

108 篇文章 2 订阅
21 篇文章 0 订阅

discuz论坛与其它网站登录注册整合

本文以discuz 7.0.0 php版本的论坛与 .net 2.0的网站注册登录整合为类.
没有采用uc_center或第三方插件.以另类的方式实现.
此方法实现的好处是不用过多了解论坛本身的实现细节,借助论坛自己的登录,注册页面来完成,我们只是获到参数post到这个页面来实现注册及登录过程,修改密码也可以用这个方式,但考虑到修改相对简单,就用直接修改数据库的方式实现.

一、论坛修改的地方

1. 论坛入口修改
a. templates/default/header.htm 修改注册和登录入口到网站
b. forumdata/ templates/1_discuz.tpl.php   修改注册和登录的入口
2. register.php改成如下:
    <?php

/*
 [Discuz!] (C)2001-2009 Comsenz Inc.
 This is NOT a freeware, use is subject to license terms

 $Id: redirect.php 16688 2008-11-14 06:41:07Z cnteacher $
*/

define('CURSCRIPT', 'viewthread');

require_once './include/common.inc.php';

if($goto == 'findpost') {

 $pid = intval($pid);
 $ptid = intval($ptid);
 
 if($post = $db->fetch_first("SELECT p.tid, p.dateline, t.special FROM {$tablepre}

posts p LEFT JOIN {$tablepre}threads t USING(tid) WHERE p.pid='$pid'")) {
  $sqladd = $post['special'] ? "AND first=0" : '';
  $page = ceil($db->result_first("SELECT count(*) FROM {$tablepre}posts WHERE

tid='$post[tid]' AND dateline<='$post[dateline]' $sqladd") / $ppp);
  if(!empty($special) && $special == 'trade') {
   dheader("Location: viewthread.php?do=tradeinfo&tid=$post[tid]

&pid=$pid");
  } else {
   dheader("Location: viewthread.php?tid=$post[tid]&page=$page".

(isset($_GET['modthreadkey']) && ($modthreadkey=modthreadkey($post['tid'])) ?

"&modthreadkey=$modthreadkey": '')."#pid$pid");
  }
 } else {
         $ptid = !empty($ptid) ? intval($ptid) : 0;
  showmessage('post_check', NULL, 'HALTED');
 }
}

$tid = $forum['closed'] < 2 ? $tid : $forum['closed'];

if(empty($tid)) {
 showmessage('thread_nonexistence');
}

if(isset($fid) && empty($forum)) {
 showmessage('forum_nonexistence', NULL, 'HALTED');
}

@include DISCUZ_ROOT.'./forumdata/cache/cache_viewthread.php';

if($goto == 'lastpost') {

 if($tid) {
  $query = $db->query("SELECT tid, replies, special FROM {$tablepre}threads

WHERE tid='$tid' AND displayorder>='0'");
 } else {
  $query = $db->query("SELECT tid, replies, special FROM {$tablepre}threads

WHERE fid='$fid' AND displayorder>='0' ORDER BY lastpost DESC LIMIT 1");
 }
 if(!$thread = $db->fetch_array($query)) {
  showmessage('thread_nonexistence');
 }
 $page = ceil(($thread['special'] ? $thread['replies'] : $thread['replies'] + 1) /

$ppp);
 $tid = $thread['tid'];

 require_once DISCUZ_ROOT.'./viewthread.php';
 exit();

} elseif($goto == 'newpost') {

 $page = max(ceil($db->result_first("SELECT COUNT(*) FROM {$tablepre}posts WHERE

tid='$tid' AND dateline<='$lastvisit'") / $ppp), 1);

 require_once DISCUZ_ROOT.'./viewthread.php';
 exit();

} elseif($goto == 'nextnewset') {

 if($fid && $tid) {
  $this_lastpost = $db->result_first("SELECT lastpost FROM {$tablepre}threads

WHERE tid='$tid' AND displayorder>='0'");
  if($next = $db->fetch_first("SELECT tid FROM {$tablepre}threads WHERE

fid='$fid' AND displayorder>='0' AND lastpost>'$this_lastpost' ORDER BY lastpost ASC LIMIT

1")) {
   $tid = $next['tid'];
   require_once DISCUZ_ROOT.'./viewthread.php';
   exit();
  } else {
   showmessage('redirect_nextnewset_nonexistence');
  }
 } else {
  showmessage('undefined_action', NULL, 'HALTED');
 }

} elseif($goto == 'nextoldset') {

 if($fid && $tid) {
  $this_lastpost = $db->result_first("SELECT lastpost FROM {$tablepre}threads

WHERE tid='$tid' AND displayorder>='0'");
  if($last = $db->fetch_first("SELECT tid FROM {$tablepre}threads WHERE

fid='$fid' AND displayorder>='0' AND lastpost<'$this_lastpost' ORDER BY lastpost DESC LIMIT

1")) {
   $tid = $last['tid'];
   require_once DISCUZ_ROOT.'./viewthread.php';
   exit();
  } else {
   showmessage('redirect_nextoldset_nonexistence');
  }
 } else {
  showmessage('undefined_action', NULL, 'HALTED');
 }

} else {
 showmessage('undefined_action', NULL, 'HALTED');
}

?>
修改register.php页面,主要是去掉上面的if判断请求来路


二、网站本身修改的地方
1.登录  
   a.直接从本站登录:把用户名和密码加密后存入session, 点击导航上 论坛链接 转到bbslogin.aspx

页面
   b.如果是从论坛网站登录。直接请求BBSlogin.aspx登录论坛并打开登录页面。Window.open();

{
存入session
   string name = Common.DEncrypt.DESEncrypt.Encrypt(username.Text.Trim().ToString(),

"efdsfdedasf48545111111"); //用户名加密
                        string pass = Common.DEncrypt.DESEncrypt.Encrypt

(txtPassword.Text.Trim().ToString(), "efdsfdedasf48545111111");//密码加密
                        Session["name"] = name;
                        Session["pass"] = pass;
}

{
   //网站登录成功之后,进行论坛登录        用户是从论坛过来的
            if (ViewState["url"].ToString().IndexOf("xxx.com") != -1)
            {
                string u_name = Common.DEncrypt.DESEncrypt.Encrypt

(username.Text.Trim(), "efdsfdedasf48545111111"); //用户名加密
                string u_pass = Common.DEncrypt.DESEncrypt.Encrypt

(txtPassword.Text.Trim(), "efdsfdedasf48545111111");//密码加密
                Page.ClientScript.RegisterStartupScript(GetType(), "bbskey",

"<script>window.open('/User/BBSLogoin.aspx?n=" + u_name + "&p=" + u_pass +

"');window.location.href='/User/index.aspx'</script>", false);

            }
}
{  登录
protected void Page_Load(object sender, EventArgs e)
    {
        ShowUserInfo();
    }
    public void ShowUserInfo()
    {
        string u_name = Session["name"].ToString();
        string u_pass = Session["pass"].ToString();
        Response.Redirect(SitePath + "User/BBSLogoin.aspx?n=" + u_name + "&p=" + u_pass +

"");
        Response.Redirect(SitePath + "login.aspx");
    }
}

 

bbslogin.aspx前台页面内容
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="BBSLogoin.aspx.cs"

Inherits="User_BBSLogoin" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>正在登录论坛</title>

    <script>
    function loginbbs()
    {
        var form = document.getElementById("loginform");
        form.submit();
    }
     if(document.readyState == "complete" )
     {       
        loginbbs();
     }
    </script>

</head>
<body οnlοad="loginbbs()">
   <div style="display:none;">
    <form action="http://论坛url/logging.php?

action=login&amp;loginsubmit=yes&amp;floatlogin=yes"
    id="loginform" name="login" method="post">
    <h3 id="returnmessage">
        用户登录<%=Username %><%=Pwd %></h3>
    <input type="hidden" value="21e0ca66" name="formhash">
    <input type="hidden" value="http://论坛url/index.php" name="referer">
    <div class="loginform nolabelform">
        <div class="selectinput">
            <select selecti="0" name="loginfield" style="float: left; width: 50px; display:

none;"
                id="loginfield">
                <option value="username"></option>
            </select><a tabindex="1" οnclick="loadselect_viewmenu(this, 'loginfield', 0,

'floatlayout_login');doane(event)"
                οnkeyup="loadselect_key(this, event, 'loginfield', 'floatlayout_login')"

οnmοuseοut="this.blur()"
                οnmοuseοver="this.focus()" οnblur="loadselect_keyinit(event, 2)"

οnfοcus="loadselect_keyinit(event, 1)"
                id="loginfield_selectinput" class="loadselect" hidefocus="true"

href="javascript:;">用户名</a><ul
                    style="display: none;" id="loginfield_selectmenu" class="newselect"

οnblur="loadselect_keyinit(event, 2)"
                    οnfοcus="loadselect_keyinit(event, 1)">
                    <li οnclick="loadselect_liset('loginfield', 0,

'loginfield','username',this.innerHTML, 0)"
                        k_value="username" k_id="loginfield" class="current">用户名</li><li

οnclick="loadselect_liset('loginfield', 0, 'loginfield','uid',this.innerHTML, 1)"
                            k_value="uid" k_id="loginfield">UID</li></ul>
            <input type="text" tabindex="1" class="txt" size="36" autocomplete="off"
                name="username" id="username" value="<%=Username %>" />
        </div>
        <p class="selectinput loginpsw">
            <label for="password3">
                密 码 :</label>
            <input type="password" tabindex="1" class="txt" size="36" name="password"

id="password3" value="<%=Pwd %>">
        </p>
        <div class="selecttype">
            <select style="width: 175px; display: none;" selecti="0" id="questionid"

name="questionid"
                change="if($('questionid').value &gt; 0) {$('answer').style.display='';}

else {$('answer').style.display='none';}">
                <option value="0"></option>
            </select><a tabindex="1" οnclick="loadselect_viewmenu(this, 'questionid', 0,

'floatlayout_login');doane(event)"
                οnkeyup="loadselect_key(this, event, 'questionid', 'floatlayout_login')"

οnmοuseοut="this.blur()"
                οnmοuseοver="this.focus()" οnblur="loadselect_keyinit(event, 2)"

οnfοcus="loadselect_keyinit(event, 1)"
                id="questionid_selectinput" class="loadselect" hidefocus="true"

href="javascript:;">安全提问</a><ul
                    style="display: none;" id="questionid_selectmenu" class="newselect"

οnblur="loadselect_keyinit(event, 2)"
                    οnfοcus="loadselect_keyinit(event, 1)">
                    <li οnclick="loadselect_liset('questionid', 0,

'questionid','0',this.innerHTML, 0)"
                        k_value="0" k_id="questionid" class="current">安全提问</li><li

οnclick="loadselect_liset('questionid', 0, 'questionid','1',this.innerHTML, 1)"
                            k_value="1" k_id="questionid">母亲的名字</li><li

οnclick="loadselect_liset('questionid', 0, 'questionid','2',this.innerHTML, 2)"
                                k_value="2" k_id="questionid">爷爷的名字</li><li

οnclick="loadselect_liset('questionid', 0, 'questionid','3',this.innerHTML, 3)"
                                    k_value="3" k_id="questionid">父亲出生的城市</li><li

οnclick="loadselect_liset('questionid', 0, 'questionid','4',this.innerHTML, 4)"
                                        k_value="4" k_id="questionid">您其中一位老师的名字

</li><li οnclick="loadselect_liset('questionid', 0, 'questionid','5',this.innerHTML, 5)"
                                            k_value="5" k_id="questionid">您个人计算机的型

号</li><li οnclick="loadselect_liset('questionid', 0, 'questionid','6',this.innerHTML, 6)"
                                                k_value="6" k_id="questionid">您最喜欢的餐

馆名称</li><li οnclick="loadselect_liset('questionid', 0, 'questionid','7',this.innerHTML,

7)"
                                                    k_value="7" k_id="questionid">驾驶执照

的最后四位数字</li></ul>
        </div>
        <p>
            <input type="text" tabindex="1" class="txt" size="36" autocomplete="off"

style="display: none;"
                id="answer" name="answer"></p>
    </div>
    <p class="fsubmit">
        <button tabindex="1" value="true" name="loginsubmit" type="submit" class="submit">
            登录</button>
        <input type="checkbox" value="2592000" tabindex="1" id="cookietime"

name="cookietime"
            class="checkbox">
        <label for="cookietime">
            记住我的登录状态</label>
    </p>
    </form>
    </div>
    <div style="text-align:center;">
       <img src="/images/jdt.gif" />
    </div>
</body>
</html>
BBSlogin.aspx后台内容
  protected string Username;
    protected string Pwd;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request["n"] != null)
        {
            Username = Common.DEncrypt.DESEncrypt.Decrypt(Request["n"].ToString(),

"efdsfdedasf48545111111");
        }
        if (Request["p"] != null)
        {
            Pwd = Common.DEncrypt.DESEncrypt.Decrypt(Request["p"].ToString(),

"efdsfdedasf48545dfesfe");
        }   
        Page.RegisterStartupScript("key", "<script>loginbbs();</script>");
    }

2.注册的修改 (用户名密码邮箱) 传入BBSRegister.aspx 进行注册
BBSRegister.aspx前台内容

{  注册
   string bbs_uName = Common.DEncrypt.DESEncrypt.Encrypt

(this.txtLogName.Value,"edfck8745debc778888"); //论坛用户名(加密)
                string bbs_uPass = Common.DEncrypt.DESEncrypt.Encrypt

(this.password.Value, "edfck8745debc778888"); //论坛密码
                string bbs_uEmail = this.email.Value.Trim(); //论坛邮箱
               // Page.ClientScript.RegisterStartupScript(GetType(), "mykey",

"<script>alert('注册成功!请通过邮件激活后登录至用户中心完善您的资料');window.open('" +

URLReturn + "');window.open('user/BBSRegister.aspx?

b_N="+bbs_uName+"&b_P="+bbs_uPass+"&b_E="+bbs_uEmail+"')</script>");
                Page.ClientScript.RegisterStartupScript(GetType(), "mykey", "<script>alert

('注册成功!请通过邮件激活后登录至用户中心完善您的资料');window.open

('user/BBSRegister.aspx?b_N=" + bbs_uName + "&b_P=" + bbs_uPass + "&b_E=" + bbs_uEmail +

"')</script>");

}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="BBSRegister.aspx.cs"

Inherits="User_BBSRegister" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>正在同步登录论坛</title>

    <script type="text/javascript">
   
    function regbbs()
    {
        var form = document.getElementById("registerform");
        form.submit();
    }
    if(document.readyState == "complete" )
    {
        debugger;
        regbbs();
     } 
    </script>

</head>
<body οnlοad="regbbs()">
    <div style="display:none;">
        <form action="http://论坛url/register.php?regsubmit=yes"

id="registerform"
        name="register" method="post">
        <h3 id="returnmessage4">
            注册</h3>
        <input type="hidden" value="bae784cb" name="formhash" />
        <input type="hidden" value="http://论坛url/index.php" name="referer" />
        <input type="hidden" value="register" name="handlekey" />
        <input type="hidden" value="true" name="activationauth" />
        <div class="loginform regform">
            <div>
                <span id="activation_hidden">
                    <label>
                        <em>用户名:</em><input type="text" tabindex="1" value="<%=Username

%>" maxlength="15"
                            size="25" autocomplete="off" name="username" id="username" />
                        *</label>
                    <label>
                        <em>密码:</em><input type="password" tabindex="1" id="password"

size="25" name="password"
                            value="<%=Pwd %>" />
                        *</label>
                    <label>
                        <em>确认密码:</em><input type="password" tabindex="1" value="<%=Pwd

%>" id="password2"
                            size="25" name="password2" />
                        *</label>
                    <label>
                        <em>Email:</em><input type="text" tabindex="1" id="email" size="25"

name="email"
                            value="<%=Email %>" />
                        *</label>
                </span>
            </div>
        </div>
        <p>
            <span id="reginfo_a_btn"><em>&nbsp;</em>
                <button tabindex="1" value="true" name="regsubmit" type="submit"

id="registerformsubmit">
                    提交</button>
            </span>
        </p>
        </form>
    </div>
    <div style="text-align: center;">
        <img src="/images/jdt.gif" />
    </div>
</body>
</html>
BBSRedister.aspx.cs内容
protected string Username;
    protected string Pwd;
    protected string Email;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request["b_N"] != null)
        {
            Username = Common.DEncrypt.DESEncrypt.Decrypt(Request["b_N"],

"edfck8745debc778888"); //解密用户名
        }
        if (Request["b_P"] != null)
        {
            Pwd = Common.DEncrypt.DESEncrypt.Decrypt(Request["b_P"],

"edfck8745debc778888");//解密密码
        }
        if (Request["b_E"] != null)
        {
            Email = Request["b_E"];
        }
}
3. 用户密码的修改 (直接操作数据库;注意discuz密码加密方式先用新密码a进行一次MD5加密32

位,然后用a+(“discuz_uc_members表中的salt字段的值”))在进行一次MD5加密

   
    public void BBSPwdUpdate(string name, string pwd)
    {
        string constr =

"host=121.9.1.1;database=discuz;UserName=dbusername;password=123456";
        string res = GetRegistrerCodeByName(UserName.ToString());
        string pwd1 = Common.StrHelper.Md5(pwd, 32).ToString();
        string pwd2 = Common.StrHelper.Md5((pwd1 + res), 32).ToString();
        string sql = "update cdb_members set password ='" + pwd2 + "' where username = '" +

name + "'";
        string sql1 = "update cdb_uc_members set password ='" + pwd2 + "' where username =

'" + name + "'";
        using (MySqlConnection con = new MySqlConnection(constr))
        {
            try
            {
                con.Open();
                MySqlCommand cmd = new MySqlCommand(sql, con);
                MySqlCommand cmd1 = new MySqlCommand(sql1, con);
                cmd.ExecuteNonQuery();
                cmd1.ExecuteNonQuery();
            }
            catch (MySqlException ex)
            {
                throw new Exception(ex.Message);
            }
        }
    }


    public string GetRegistrerCodeByName(string name)
    {
        string constr =

"host=121.9.1.1;database=discuz;UserName=dbusername;password=123456";
        string sql = "select salt from cdb_uc_members where username='" + name + "'";
        string res = "";
        using (MySqlConnection con = new MySqlConnection(constr))
        {
            try
            {
                con.Open();
                MySqlCommand com = new MySqlCommand(sql, con);
                res = com.ExecuteScalar().ToString();
            }
            catch (MySqlException ex)
            {
                throw new Exception(ex.Message);
            }
        }
        return res;
    }
   

三、mysql远程连接失败解决方法
   1。改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那

台电脑,登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从“localhost”

改称“%”
mysql -u root -pvmwaremysql>use mysql;
mysql>update user set host = ‘%’ where user = ‘root’;
mysql>select host, user from user;
2. 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@'%’ IDENTIFIED BY ‘mypassword’ WI
TH GRANT OPTION;
如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@'192.168.1.3′ IDENTIFIED BY
‘mypassword’ WITH GRANT OPTION;
我用的第一个方法,刚开始发现不行,在网上查了一下,少执行一个语句 mysql>FLUSH PRIVILEGES
使修改生效.就可以了


个人中心的 密码及安全问题链接去掉
把templates 下的 personal_navbar.htm 下的
  <li><a href="memcp.php?action=profile&typeid=1">{lang

memcp_profile_security}</a></li>
去掉,
如果不更新缓存把
1_memcp_profile.tpl.php 中的该链接也去掉

其它有登录,注册链接要改掉的话方法类似,找到对应的模板改掉即可,有时需要更新下缓存.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Discuz论坛是国内知名的论坛系统之一,拥有广泛的用户群体和丰富的功能。随着网络发展的进步,许多论坛网站都逐渐开始重视网站的整体设计和用户体验。在Discuz论坛中,图标是一个重要的元素,它能够增加网站的美观度和交互性。 Discuz论坛图标大全是指收集和整理所有Discuz论坛所使用的图标资源,包括导航图标、功能图标、社交媒体图标等。这些图标能够帮助用户迅速了解和识别论坛中的各个功能和模块,提供更好的用户体验。 Discuz论坛图标大全一般会提供以下几种类型的图标: 1. 导航图标:用于论坛的顶部或侧边栏导航,包括首页、论坛、帖子、会员、消息等。 2. 功能图标:用于各个功能模块,如发帖、回复、点赞、分享、收藏等,方便用户快速操作论坛。 3. 社交媒体图标:用于显示论坛与其他社交媒体平台的链接,如微博、微信、QQ等,方便用户进行跨平台的分享和交流。 Discuz论坛图标大全的好处是为网站管理员和设计师提供了丰富的资源选择,可以根据论坛需求进行自由组合和调整。同时,用户在使用论坛时,能够更加便利地找到所需功能,提高浏览和操作的效率。 总之,Discuz论坛图标大全是一项重要的设计资源,能够提升论坛的外观和用户体验,为网站的发展打下良好的基础。 ### 回答2: Discuz论坛是一个非常流行的论坛平台,拥有庞大的用户群体和丰富的功能。在Discuz论坛中,图标大全是指论坛中各种各样的图标集合。 Discuz论坛图标大全包括了论坛中常用的各种图标,比如帖子图标、表情图标、板块图标等等。这些图标的作用是丰富论坛的界面,使其更加直观、美观。帖子图标是用于标识不同类型的帖子,比如置顶帖、精华帖等等。表情图标是用于丰富用户在帖子中的表达方式,让用户能够更好地表达自己的情感和态度。板块图标用于标识不同的板块分类,让用户能够方便地找到感兴趣的话题。 Discuz论坛图标大全的使用非常简便。管理员只需在后台设置中进行相应的配置,即可选择适合自己论坛风格的图标集合。用户在浏览论坛时,会看到各种图标的应用,提高了论坛的可视化和易用性。 总之,Discuz论坛图标大全对于论坛来说是非常重要的一部分。它丰富了论坛的界面效果,提升了用户的体验和参与度。无论是管理员还是用户,都可以通过使用图标大全来使论坛更加美观、活跃。 ### 回答3: Discuz论坛图标大全是一个包含各种类型图标的资源库。在Discuz论坛中,图标起到了很重要的作用,可以用于标识不同的功能模块、提示用户等。因此,拥有一个图标齐全、多样化的资源库对于论坛的运营和用户体验来说非常重要。 Discuz论坛图标大全覆盖了各种常见的图标类型,例如站点导航图标、主题分类图标、用户头像等。可以根据自己的需要,选择合适的图标来为自己的论坛添加更多个性化的元素和特色。 通过Discuz论坛图标大全,管理员可以轻松地对论坛进行美化和功能定位。比如,可以为各个板块设置不同的图标,使用户在浏览时更易于辨识和理解;还可以通过不同的图标样式和颜色来区分不同的主题分类,从而让用户更方便地找到自己感兴趣的内容。 另外,Discuz论坛图标大全也为用户提供了更多的个性化选择。用户可以根据自己的喜好和需求选择不同风格、颜色和大小的头像来展示自己的个性。这不仅能够增加用户的参与度和归属感,还能够促进用户之间的交流和互动。 综上所述,Discuz论坛图标大全是一个方便用户进行个性化设置、美化论坛界面和提升用户体验的重要资源库。通过合理运用这些图标,可以使论坛更加吸引人、易于使用,并提升用户的满意度和粘性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值