因为是网上DOWN下来的程序,修改了错误的.最后就差这个了.始终没有找到解决的方法.求解!
主要是因为新增文章所显示的usename如果是中文的话就是乱码..英文正常!
以下是登录代码login.aspx.csnamespace UDS.SubModule.Login
{
/// <summary>
/// index 的摘要说明。
/// </summary>
public partial class index : System.Web.UI.Page
{
public string RandData;
private string fun_MD5(string str)
{
byte[] b = System.Text.Encoding.GetEncoding(1252).GetBytes(str);
b=new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(b);
string ret="";
for(int i=0;i<b.Length;i++)
ret+=b[i].ToString("x").PadLeft(2,'0');
return ret;
} private Byte[] hexstr2array(string HexStr)
{
string HEX = "0123456789ABCDEF";
string str = HexStr.ToUpper();
int len = str.Length;
byte[] RetByte = new byte[len/2];
for(int i=0; i<len/2; i++)
{
int NumHigh = HEX.IndexOf(str[i*2]);
int NumLow = HEX.IndexOf(str[i*2+1]);
RetByte[i] = Convert.ToByte(NumHigh*16+NumLow);
}
return RetByte;
}
protected void Page_Load(object sender, System.EventArgs e)
{
//执行是否需要USB_key的JavaScript
btnSubmit.Attributes["onclick"]="return needUsbKey();";
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
Random randomGenerator = new Random(DateTime.Now.Millisecond);
String RandData = "";
for(int i=0; i<19; i++)
RandData += Convert.ToChar(randomGenerator.Next(97,122));
this.txtUsername.Text = Request.Cookies["Username"]!=null?Request.Cookies["Username"].Value.ToString():"";
}
} public int LoginIn(string ServerString,string ClientString)
{
string username = Request.Form["SN_SERAL"];
string clientdigest = Request.Form["Digest"];
//these for MD5_HMAC
string ipad="";
string opad=""; {
for(int i=0; i<64; i++)
{
ipad += "6";
opad += "\\";
}
}
string Password= "0";
int KLen = Password.Length;
string iResult = ""; {
for(int i = 0; i < 64; i++)
{
if(i < KLen)
iResult += Convert.ToChar(ipad[i] ^ Password[i]);
else
iResult += Convert.ToChar(ipad[i]);
}
}
iResult += ServerString;
iResult = fun_MD5(iResult);
byte[] Test = hexstr2array(iResult);
iResult = "";
char[] b = System.Text.Encoding.GetEncoding(1252).GetChars(Test); for(int i=0;i<b.Length;i++)
{
iResult += b[i];
} string oResult = "";
{
for (int i=0; i<64; i++)
{
if (i < KLen)
oResult += Convert.ToChar(opad[i] ^ Password[i]);
else
oResult += Convert.ToChar(opad[i]);
}
} oResult += iResult; string Result = fun_MD5(oResult).ToUpper();
if ( Object.Equals(Result,ClientString))
return 1;
else
return 0;
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{ }
#endregion protected void btnSubmit_Click(object sender, System.EventArgs e)
{
if (Page.IsValid == true)
{
string UserID ="";
UDS.Components.Staff staff = new UDS.Components.Staff();
if(this.txtUsername.Text!="newtime_liu")
{
string CheckString = staff.Login(txtUsername.Text, txtPassword.Text);
if (CheckString != null)
{
string LoginChecked; if(CheckString.IndexOf("-")>=0)
{
UserID = CheckString.Substring(0,CheckString.IndexOf("-"));
LoginChecked = CheckString.Substring(CheckString.IndexOf("-")+1); if(LoginChecked=="True")
{ string ClientDigest=Request.Form["Digest"]==null?"":Request.Form["Digest"].ToString();
string ErrMsg = Request.Form["ErrMsg"]==null?"":Request.Form["ErrMsg"].ToString();
if( LoginIn(RandData,ClientDigest)==0)
{
if(ErrMsg!="")
lblErrorMessage.Text = ErrMsg;
else
lblErrorMessage.Text = "EPass校验未通过!";
lblErrorMessage.Visible = true;
return ;
}
}
}
}
else
{
lblErrorMessage.Visible = true;
return ;
}
}
else
{
UserID="1";
this.txtUsername.Text = "admin";
}
// 更新在线人数表
SMS sm = new SMS();
sm.UpdateOnlineInfo(txtUsername.Text,Request.UserHostAddress,Request.Cookies["ASP.NET_SessionId"].Value.ToString());
sm = null;
// 更新结束
Response.Cookies["UserID"].Value = UserID;
Response.Cookies["ActiveNodeID"].Value = "0";
Response.Cookies["Username"].Value = txtUsername.Text;
Response.Cookies["UserID"].Expires = new DateTime(2010,1,1 );
Response.Cookies["Username"].Expires = new DateTime(2010,1,1 );
if (FormsAuthentication.GetRedirectUrl(UserID, false).ToLower().EndsWith("default.aspx"))
{
FormsAuthentication.SetAuthCookie(UserID, false);
//弹出窗口
//Server.Transfer("VerifySignIn.aspx");
//非弹出窗口
Response.Redirect("../../SubModule/Index.aspx");
}
else
{
FormsAuthentication.RedirectFromLoginPage(UserID, false);
} }
}
}
}
主要是因为新增文章所显示的usename如果是中文的话就是乱码..英文正常!
以下是登录代码login.aspx.csnamespace UDS.SubModule.Login
{
/// <summary>
/// index 的摘要说明。
/// </summary>
public partial class index : System.Web.UI.Page
{
public string RandData;
private string fun_MD5(string str)
{
byte[] b = System.Text.Encoding.GetEncoding(1252).GetBytes(str);
b=new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(b);
string ret="";
for(int i=0;i<b.Length;i++)
ret+=b[i].ToString("x").PadLeft(2,'0');
return ret;
} private Byte[] hexstr2array(string HexStr)
{
string HEX = "0123456789ABCDEF";
string str = HexStr.ToUpper();
int len = str.Length;
byte[] RetByte = new byte[len/2];
for(int i=0; i<len/2; i++)
{
int NumHigh = HEX.IndexOf(str[i*2]);
int NumLow = HEX.IndexOf(str[i*2+1]);
RetByte[i] = Convert.ToByte(NumHigh*16+NumLow);
}
return RetByte;
}
protected void Page_Load(object sender, System.EventArgs e)
{
//执行是否需要USB_key的JavaScript
btnSubmit.Attributes["onclick"]="return needUsbKey();";
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
Random randomGenerator = new Random(DateTime.Now.Millisecond);
String RandData = "";
for(int i=0; i<19; i++)
RandData += Convert.ToChar(randomGenerator.Next(97,122));
this.txtUsername.Text = Request.Cookies["Username"]!=null?Request.Cookies["Username"].Value.ToString():"";
}
} public int LoginIn(string ServerString,string ClientString)
{
string username = Request.Form["SN_SERAL"];
string clientdigest = Request.Form["Digest"];
//these for MD5_HMAC
string ipad="";
string opad=""; {
for(int i=0; i<64; i++)
{
ipad += "6";
opad += "\\";
}
}
string Password= "0";
int KLen = Password.Length;
string iResult = ""; {
for(int i = 0; i < 64; i++)
{
if(i < KLen)
iResult += Convert.ToChar(ipad[i] ^ Password[i]);
else
iResult += Convert.ToChar(ipad[i]);
}
}
iResult += ServerString;
iResult = fun_MD5(iResult);
byte[] Test = hexstr2array(iResult);
iResult = "";
char[] b = System.Text.Encoding.GetEncoding(1252).GetChars(Test); for(int i=0;i<b.Length;i++)
{
iResult += b[i];
} string oResult = "";
{
for (int i=0; i<64; i++)
{
if (i < KLen)
oResult += Convert.ToChar(opad[i] ^ Password[i]);
else
oResult += Convert.ToChar(opad[i]);
}
} oResult += iResult; string Result = fun_MD5(oResult).ToUpper();
if ( Object.Equals(Result,ClientString))
return 1;
else
return 0;
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{ }
#endregion protected void btnSubmit_Click(object sender, System.EventArgs e)
{
if (Page.IsValid == true)
{
string UserID ="";
UDS.Components.Staff staff = new UDS.Components.Staff();
if(this.txtUsername.Text!="newtime_liu")
{
string CheckString = staff.Login(txtUsername.Text, txtPassword.Text);
if (CheckString != null)
{
string LoginChecked; if(CheckString.IndexOf("-")>=0)
{
UserID = CheckString.Substring(0,CheckString.IndexOf("-"));
LoginChecked = CheckString.Substring(CheckString.IndexOf("-")+1); if(LoginChecked=="True")
{ string ClientDigest=Request.Form["Digest"]==null?"":Request.Form["Digest"].ToString();
string ErrMsg = Request.Form["ErrMsg"]==null?"":Request.Form["ErrMsg"].ToString();
if( LoginIn(RandData,ClientDigest)==0)
{
if(ErrMsg!="")
lblErrorMessage.Text = ErrMsg;
else
lblErrorMessage.Text = "EPass校验未通过!";
lblErrorMessage.Visible = true;
return ;
}
}
}
}
else
{
lblErrorMessage.Visible = true;
return ;
}
}
else
{
UserID="1";
this.txtUsername.Text = "admin";
}
// 更新在线人数表
SMS sm = new SMS();
sm.UpdateOnlineInfo(txtUsername.Text,Request.UserHostAddress,Request.Cookies["ASP.NET_SessionId"].Value.ToString());
sm = null;
// 更新结束
Response.Cookies["UserID"].Value = UserID;
Response.Cookies["ActiveNodeID"].Value = "0";
Response.Cookies["Username"].Value = txtUsername.Text;
Response.Cookies["UserID"].Expires = new DateTime(2010,1,1 );
Response.Cookies["Username"].Expires = new DateTime(2010,1,1 );
if (FormsAuthentication.GetRedirectUrl(UserID, false).ToLower().EndsWith("default.aspx"))
{
FormsAuthentication.SetAuthCookie(UserID, false);
//弹出窗口
//Server.Transfer("VerifySignIn.aspx");
//非弹出窗口
Response.Redirect("../../SubModule/Index.aspx");
}
else
{
FormsAuthentication.RedirectFromLoginPage(UserID, false);
} }
}
}
}
主要是因为新增文章所显示的usename如果是中文的话就是乱码..英文正常!
以下是登录代码login.aspx.csnamespace UDS.SubModule.Login
{
/// <summary>
/// index 的摘要说明。
/// </summary>
public partial class index : System.Web.UI.Page
{
public string RandData;
private string fun_MD5(string str)
{
byte[] b = System.Text.Encoding.GetEncoding(1252).GetBytes(str);
b=new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(b);
string ret="";
for(int i=0;i<b.Length;i++)
ret+=b[i].ToString("x").PadLeft(2,'0');
return ret;
} private Byte[] hexstr2array(string HexStr)
{
string HEX = "0123456789ABCDEF";
string str = HexStr.ToUpper();
int len = str.Length;
byte[] RetByte = new byte[len/2];
for(int i=0; i<len/2; i++)
{
int NumHigh = HEX.IndexOf(str[i*2]);
int NumLow = HEX.IndexOf(str[i*2+1]);
RetByte[i] = Convert.ToByte(NumHigh*16+NumLow);
}
return RetByte;
}
protected void Page_Load(object sender, System.EventArgs e)
{
//执行是否需要USB_key的JavaScript
btnSubmit.Attributes["onclick"]="return needUsbKey();";
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
Random randomGenerator = new Random(DateTime.Now.Millisecond);
String RandData = "";
for(int i=0; i<19; i++)
RandData += Convert.ToChar(randomGenerator.Next(97,122));
this.txtUsername.Text = Request.Cookies["Username"]!=null?Request.Cookies["Username"].Value.ToString():"";
}
} public int LoginIn(string ServerString,string ClientString)
{
string username = Request.Form["SN_SERAL"];
string clientdigest = Request.Form["Digest"];
//these for MD5_HMAC
string ipad="";
string opad=""; {
for(int i=0; i<64; i++)
{
ipad += "6";
opad += "\\";
}
}
string Password= "0";
int KLen = Password.Length;
string iResult = ""; {
for(int i = 0; i < 64; i++)
{
if(i < KLen)
iResult += Convert.ToChar(ipad[i] ^ Password[i]);
else
iResult += Convert.ToChar(ipad[i]);
}
}
iResult += ServerString;
iResult = fun_MD5(iResult);
byte[] Test = hexstr2array(iResult);
iResult = "";
char[] b = System.Text.Encoding.GetEncoding(1252).GetChars(Test); for(int i=0;i<b.Length;i++)
{
iResult += b[i];
} string oResult = "";
{
for (int i=0; i<64; i++)
{
if (i < KLen)
oResult += Convert.ToChar(opad[i] ^ Password[i]);
else
oResult += Convert.ToChar(opad[i]);
}
} oResult += iResult; string Result = fun_MD5(oResult).ToUpper();
if ( Object.Equals(Result,ClientString))
return 1;
else
return 0;
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{ }
#endregion protected void btnSubmit_Click(object sender, System.EventArgs e)
{
if (Page.IsValid == true)
{
string UserID ="";
UDS.Components.Staff staff = new UDS.Components.Staff();
if(this.txtUsername.Text!="newtime_liu")
{
string CheckString = staff.Login(txtUsername.Text, txtPassword.Text);
if (CheckString != null)
{
string LoginChecked; if(CheckString.IndexOf("-")>=0)
{
UserID = CheckString.Substring(0,CheckString.IndexOf("-"));
LoginChecked = CheckString.Substring(CheckString.IndexOf("-")+1); if(LoginChecked=="True")
{ string ClientDigest=Request.Form["Digest"]==null?"":Request.Form["Digest"].ToString();
string ErrMsg = Request.Form["ErrMsg"]==null?"":Request.Form["ErrMsg"].ToString();
if( LoginIn(RandData,ClientDigest)==0)
{
if(ErrMsg!="")
lblErrorMessage.Text = ErrMsg;
else
lblErrorMessage.Text = "EPass校验未通过!";
lblErrorMessage.Visible = true;
return ;
}
}
}
}
else
{
lblErrorMessage.Visible = true;
return ;
}
}
else
{
UserID="1";
this.txtUsername.Text = "admin";
}
// 更新在线人数表
SMS sm = new SMS();
sm.UpdateOnlineInfo(txtUsername.Text,Request.UserHostAddress,Request.Cookies["ASP.NET_SessionId"].Value.ToString());
sm = null;
// 更新结束
Response.Cookies["UserID"].Value = UserID;
Response.Cookies["ActiveNodeID"].Value = "0";
Response.Cookies["Username"].Value = txtUsername.Text;
Response.Cookies["UserID"].Expires = new DateTime(2010,1,1 );
Response.Cookies["Username"].Expires = new DateTime(2010,1,1 );
if (FormsAuthentication.GetRedirectUrl(UserID, false).ToLower().EndsWith("default.aspx"))
{
FormsAuthentication.SetAuthCookie(UserID, false);
//弹出窗口
//Server.Transfer("VerifySignIn.aspx");
//非弹出窗口
Response.Redirect("../../SubModule/Index.aspx");
}
else
{
FormsAuthentication.RedirectFromLoginPage(UserID, false);
} }
}
}
}
以下是新增文章的CS代码..读username出乱码:public partial class NewItem : System.Web.UI.Page
{
private string username;
private string boardid;
private bool isboardmaster;
private bool isadmin;
private bool isbulletinadmin;
protected void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
cbx_sysbulletin.Attributes["onclick"] = "sysbulletin_click();";
username = (Request.Cookies["Username"].Value);
boardid = (Request.QueryString["BoardID"]==null)?"0":Request.QueryString["BoardID"]; UDS.Components.BBSClass bbs = new UDS.Components.BBSClass(); isboardmaster = bbs.IsBoardMaster(Int32.Parse(boardid),username);
cbx_bulletin.Visible = isboardmaster; //如果是私有板块则不允许发布系统公告
bool privateboard = false;
SqlDataReader dr_board = bbs.GetModifyBBSBoard(Int32.Parse(boardid));
while(dr_board.Read())
{
if(Boolean.Parse(dr_board["board_type"].ToString())==false)
privateboard = true;
}
dr_board.Close();
if(Request.Cookies["UDSBBSAdmin"].Value=="0")
{
isadmin = false;
}
else if(Request.Cookies["UDSBBSAdmin"].Value=="1")
{
isadmin = true;
}
if(Request.Cookies["UDSBBSBulletinAdmin"].Value=="0")
{
isbulletinadmin = false;
}
else if(Request.Cookies["UDSBBSBulletinAdmin"].Value=="1")
{
isbulletinadmin = true;
} if(isadmin && !privateboard)
{
cbx_sysbulletin.Visible = cbx_DeskTop.Visible = lbl_DeskTop.Visible = true;
}
else if(isbulletinadmin && !privateboard)
{
cbx_sysbulletin.Visible = cbx_DeskTop.Visible = lbl_DeskTop.Visible = true;
}
else
{
cbx_sysbulletin.Visible = cbx_DeskTop.Visible = lbl_DeskTop.Visible = false; } ViewState["username"] = username;
ViewState["boardid"] = boardid;
ViewState["isboardmaster"] = isboardmaster;
ViewState["isadmin"] = isadmin;
ViewState["isbulletinadmin"] = isbulletinadmin;
}
else
{
username = ViewState["username"].ToString();
boardid = ViewState["boardid"].ToString();
isboardmaster = Boolean.Parse(ViewState["isboardmaster"].ToString());
isadmin = Boolean.Parse(ViewState["isadmin"].ToString());
isbulletinadmin = Boolean.Parse(ViewState["isbulletinadmin"].ToString());
}
}
写入Cookies时用System.Web.HttpUtility.UrlEncode()方法
读取Cookies时用System.Web.HttpUtility.UrlDecode()方法
buff = System.Text.Encoding.Unicode.GetBytes(enstr) '字符串转字节数组
destr=System.Text.Encoding.Unicode.GetChars(buff) '字节数组转字符串