看到不少人写将已有的项目和论坛整合,我也来献丑啦!我想在网站的其他的地方也可以登陆与显示用户登陆信息,所以就新建一用户控件UserLogin.ascx
html:
<%@ Register TagPrefix="UControl" Namespace="tc.bbs.Themes" %>
<DIV class="lframe">
<TABLE cellSpacing="0" cellPadding="0" width="95%">
<TBODY>
<TR>
<TD class="tl"></TD>
<TD class="tm"><SPAN class="tt">会员登陆</SPAN>
</TD>
<TD class="tr"></TD>
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing="0" cellPadding="0" width="95%" id="loginTable" runat=server>
<TBODY>
<TR>
<TD class="ml"></TD>
<TD class="mm">
<table border="0">
<tr>
<td align="right">用户名:</td>
<td align="left"><asp:TextBox class="inputbg" id="userName" runat="server" Width="80px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="userName"
ErrorMessage="*"></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td align="right">密 码:</td>
<td align="left"><asp:TextBox class="inputbg" id="userPWD" runat="server" Width="80px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="userPWD"
ErrorMessage="*"></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td align="right">注册码:</td>
<td align="left"><asp:TextBox class="inputbg" id="CheckNum" runat="server" Width="80px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="CheckNum"
ErrorMessage="*"></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td align="right"></td>
<td align="left">
<asp:Image ID="VImage" ImageUrl="~/ValidateCode.aspx" runat="server" /></td>
</tr>
<tr>
<td align=right>有效时间:</td>
<td><UControl:CookieDropDownList id="saveValue" runat=server></UControl:CookieDropDownList></td>
</tr>
<tr>
<td align="center" colspan="2">
<asp:Button id="btn_ok" runat="server" Text="登录" OnClick="btn_ok_Click"></asp:Button>
</td>
</tr>>
</table>
</TD>
<TD class="mr"></TD>
</TR>
</TBODY>
</TABLE>
<table cellSpacing="0" cellPadding="0" width="95%" id="Haveloin" visible=false runat=server>
<tr>
<td>欢迎回来:</td><td><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></td>
</tr>
<tr>
<td>
IP</td><td><asp:Label ID="Label2" runat="server" Text="Label"></asp:Label></td>
</tr>
</table>
<TABLE cellSpacing="0" cellPadding="0" width="95%">
<TBODY>
<TR>
<TD class="bl"></TD>
<TD class="bm">
</TD>
<TD class="br"></TD>
</TR>
</TBODY>
</TABLE>
</DIV>
cs代码:
protected void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
this.config = ConfigFactory.GetConfig();
userid = Utils.StrToInt(ForumUtils.GetCookie("userid"), -1);
if (userid != -1)//检测到了用户的cookie,则表示已经登陆
{
this.loginTable.Visible = false;
this.Haveloin.Visible = true;
//显示用户基本信息
this.oluserinfo = OnlineUserFactory.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
userid = oluserinfo.Userid;
Label1.Text = oluserinfo.Username+"("+oluserinfo.Nickname+")";
Label2.Text = oluserinfo.Ip.ToString();
}
else
{
//
this.loginTable.Visible = true;
this.Haveloin.Visible = false;
}
protected void btn_ok_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
if (Session["VailtCode"] != null)
{
if (String.Compare(Session["VailtCode"].ToString().Trim().ToLower(), CheckNum.Text.Trim().ToLower()) != 0)
{
MessageBox.Show(Page, "验证码错误,请重新输入!");
}
else
{
int uid = UserFactory.CheckPassword(this.userName.Text.Trim(), this.userPWD.Text.Trim(), true);
if (uid == -1)
{
int num2 = LoginLogFactory.UpdateLoginLog(DNTRequest.GetIP(), true);
if (num2 > 5)
{
MessageBox.Show(Page, "您的错误次数已经超过5次,请和管理员联系!");
}
else
{
MessageBox.Show(Page, "登陆失败\n用户名或者密码错误!");
}
}
else if (UserFactory.GetShortUserInfo(uid).Groupid == 8)
{
MessageBox.Show(Page, "您是等待验证会员,请确认验证后再登陆或与管理员联系!");
}
else
{
ConfigInfo config = ConfigFactory.GetConfig();
LoginLogFactory.DeleteLoginLog(DNTRequest.GetIP());
UserCreditsFactory.UpdateUserCredits(uid);
ForumUtils.WriteUserCookie(uid, Utils.StrToInt(this.saveValue.SelectedItem.Value, 1), config.Passwordkey, 0, -1);
OnlineUserInfo oluserinfo1 = OnlineUserFactory.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
OnlineUserFactory.UpdateAction(oluserinfo1.Olid, UserAction.Login.ActionID, 0, config.Onlinetimeout);
UserFactory.UpdateUserLastvisit(uid, DNTRequest.GetIP());
Label1.Text = oluserinfo1.Username + "(" + oluserinfo1.Nickname + ")";
Label2.Text = oluserinfo1.Ip.ToString();
loginTable.Visible = false;
Haveloin.Visible = true;
}
}
}
}
具体的说明我就不说了。大家一看就知道的。这个只是比较简单的范例,这里的验证码,和那个DropdownList是我自己写的,你们可以用其他的控件代替。在的网站的页面加上这个用户控件,直接登陆就可以了,登陆成功后进入论坛就会发现论坛那里已经提示你登陆了。
献丑了不过我的机器是xp Pro &2K pro,不能直接建立网站,只能在IIS中建立虚拟目录,每次安装都安装不上,后来我自己写一小工具将一些信息写如数据库中,配置DNT.config及general.config之后将DNT.config以及Config文件夹放到wwwroot目录下,并将aspx/1/目录下的文件直接拷贝到根目录才可以浏览论坛。不知道是不是论坛不能在Xp pro这样的机器上直接安装?