using System;
using System.Web.Security;
using System.Text;
using System.IO;
using System.Security.Cryptography;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using System.Web.Mail;
using System.Configuration;
using System.ComponentModel;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI.HtmlControls;
namespace MY
{
///
1<summary>
2/// UserClass 的摘要说明。
3/// </summary>
public class UserClass:System.Web.UI.Page
{
private string[] userdata;
private string[] managerdata;
private string strOutPicName;
private DbControl db;
protected Page page = null;
//private Hashtable ht;
public UserClass()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public UserClass(Page page)
{
db = new DbControl();
this.page = page;
strOutPicName = "";
}
#region 加密方法
///
1<summary>
2/// 加密
3/// </summary>
///
1<param name="pToEncrypt"/>
///
1<returns></returns>
public string Encrypt(string pToEncrypt)
{
string sKey="1234abcd";
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//把字符串放到byte数组中
//原来使用的UTF8编码,我改成Unicode编码了,不行
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);
//建立加密对象的密钥和偏移量
//原文使用ASCIIEncoding.ASCII方法的GetBytes方法
//使得输入密码必须输入英文文本
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(),CryptoStreamMode.Write);
//Write the byte array into the crypto stream
//(It will end up in the memory stream)
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Get the data back from the memory stream, and into a string
StringBuilder ret = new StringBuilder();
foreach(byte b in ms.ToArray())
{
//Format as hex
ret.AppendFormat("{0:X2}", b);
}
ret.ToString();
return ret.ToString();
}
public string Decrypt(string pToDecrypt)
{
string sKey="1234abcd";
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//Put the input string into the byte array
byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
for(int x = 0; x < pToDecrypt.Length / 2; x++)
{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
//建立加密对象的密钥和偏移量,此值重要,不能修改
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(),CryptoStreamMode.Write);
//Flush the data through the crypto stream into the memory stream
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Get the decrypted data back from the memory stream
//建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象
StringBuilder ret = new StringBuilder();
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
#endregion
#region 处理字段落字符串
///
1<summary>
2/// 处理字段落字符串
3/// </summary>
///
1<param name="notes"/>
///
1<returns></returns>
public string Ctrltxt(string notes)
{
StringBuilder outstr=new StringBuilder(notes);
outstr.Replace("\n","
1<br/>
");
outstr.Replace(" "," ");
return outstr.ToString();
}
#endregion
#region 手动方法
///
1<summary>
2/// 从数据库里读取已经选 择的DR
3/// </summary>
///
1<param name="lb"/>
///
1<param name="strshow"/>
///
1<param name="intFlag"/>
public void ShowDropDownList(DropDownList lb,string strshow,int intFlag)
{
foreach(ListItem objitem in lb.Items)
{
if (intFlag==0 && objitem.Text==strshow)
{
objitem.Selected=true;
}
else if (intFlag==1 && objitem.Value==strshow)
{
objitem.Selected=true;
}
else
{
objitem.Selected=false;
}
}
}
///
1<summary>
2/// 把数据里的值读到DL里面。
3/// </summary>
///
1<param name="dl"/>
///
1<param name="dr"/>
///
1<param name="strtext"/>
///
1<param name="strvalue"/>
public void ShowDrData(DropDownList dl,SqlDataReader dr,string strtext,string strvalue)
{
dl.DataSource=dr;
dl.DataTextField=strtext;
dl.DataValueField=strvalue;
dl.DataBind();
}
///
1<summary>
2/// 把数据里的值读到DL里面并且选择某一项为选中,重载上面的!
3/// </summary>
///
1<param name="dl"/>
///
1<param name="dr"/>
///
1<param name="strtext"/>
///
1<param name="strvalue"/>
///
1<param name="sltvalue"/>
public void ShowDrData(DropDownList dl,SqlDataReader dr ,string strtext,string strvalue,string sltvalue)
{
dl.DataSource=dr;
dl.DataTextField=strtext;
dl.DataValueField=strvalue;
dl.DataBind();
dl.Items.Add(sltvalue);
foreach(ListItem objitem in dl.Items)
{
if (objitem.Text==sltvalue)
{
objitem.Selected=true;
}
else
{
objitem.Selected=false;
}
}
}
///
1<summary>
2/// 重载上面的函数将Reader参数换成Array
3/// </summary>
///
1<param name="dl"/>
///
1<param name="al"/>
public void ShowDrData(DropDownList dl,ArrayList al)
{
dl.DataSource=al;
//dl.DataTextField=strtext;
//dl.DataValueField=strvalue;
dl.DataBind();
}
///
1<summary>
2/// 把数据库里的数据读到LB里面去.
3/// </summary>
///
1<param name="lb"/>
///
1<param name="dr"/>
///
1<param name="strtext"/>
///
1<param name="strvalue"/>
public void ShowDrData(ListBox lb,SqlDataReader dr,string strtext,string strvalue)
{
lb.DataSource=dr;
lb.DataTextField=strtext;
lb.DataValueField=strvalue;
lb.DataBind();
}
///
1<summary>
2/// 将数据读到Array数组//
3/// </summary>
///
1<param name="dr"/>
///
1<param name="strslt"/>
///
1<param name="strfield"/>
///
1<returns></returns>
public ArrayList ReturnArray(SqlDataReader dr,string strslt,string strfield)
{
ArrayList objarr;
objarr=new ArrayList();
if (dr.HasRows)
{
while (dr.Read())
{
objarr.Add(dr[strfield].ToString());
}
dr.Close();
}
objarr.Insert(0,strslt);
return objarr;
}
public void Close()
{
db.Close();
userdata=null;
}
///
1<summary>
2/// 读取Check组的值;
3/// </summary>
///
1<param name="lb"/>
///
1<returns></returns>
public string ReadCheckBoxList(CheckBoxList lb)
{
string returnvalue="0";
for (int i=0; i
1<lb.items.count; (lb.items[i].selected)="" +","+="" <summary="" i++)="" if="" lb.items[i].value;="" return="" returnvalue="returnvalue" returnvalue;="" {="" }="">
2/// 显示Check组的值
3///
4/// <param name="cbl"/>
5/// <param name="strCheckValue"/>
6public void ShowCheckBoxList(CheckBoxList cbl,string strCheckValue)
7{
8for (int i=0;i<cbl.items.count;i++) (strcheckvalue.indexof(cbl.items[i].value)="" if="" {="">0)
9{
10cbl.Items[i].Selected=true;
11}
12}
13}
14/// <summary>
15/// DateDiff功能实现函数
16/// </summary>
17/// <param name="howtocompare"/>
18/// <param name="startDate"/>
19/// <param name="endDate"/>
20/// <returns></returns>
21public double DateDiff(string howtocompare, System.DateTime startDate, System.DateTime endDate)
22{
23double diff=0;
24System.TimeSpan TS = new System.TimeSpan(startDate.Ticks-endDate.Ticks);
25switch (howtocompare.ToLower())
26{
27case "m":
28diff = Convert.ToDouble(TS.TotalMinutes);
29break;
30case "s":
31diff = Convert.ToDouble(TS.TotalSeconds);
32break;
33case "t":
34diff = Convert.ToDouble(TS.Ticks);
35break;
36case "mm":
37diff = Convert.ToDouble(TS.TotalMilliseconds);
38break;
39case "yyyy":
40diff = Convert.ToDouble(TS.TotalDays/365);
41break;
42case "q":
43diff = Convert.ToDouble((TS.TotalDays/365)/4);
44break;
45default:
46//d
47diff = Convert.ToDouble(TS.TotalDays);
48break;
49}
50return diff;
51}
52/// <summary>
53/// 以送Email过程.
54/// </summary>
55/// <param name="strMailTo"/>
56/// <param name="strMailSubject"/>
57/// <param name="strMailBody"/>
58/// <returns></returns>
59public bool sendMail(string strMailTo,string strMailSubject,string strMailBody )
60{
61try
62{
63
64string MailSmtp=ConfigurationSettings.AppSettings["MailSmtp"];
65string MailUser=ConfigurationSettings.AppSettings["MailUser"];
66string MailPassword=ConfigurationSettings.AppSettings["MailPassword"];
67string MailFrom=ConfigurationSettings.AppSettings["MailFrom"];
68MailMessage mailMessage = new MailMessage();
69mailMessage.To = " [email protected] ";
70mailMessage.From = MailFrom;
71mailMessage.Subject = strMailSubject;
72mailMessage.Body = strMailBody;
73mailMessage.BodyFormat = MailFormat.Html;//邮件的格式
74
75//如果带有附件...如:attachFile =''C:\file.rar''
76//if (attachFile != "")
77//{
78//mailMessage.Attachments.Add(new MailAttachment(attachFile));
79//}
80
81//以下三句用在SMTP需要身份验证时。Framework1.1才有支持。
82mailMessage.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/smtpauthenticate ", "1");//基本验证
83mailMessage.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/sendusername ", MailUser); //设定用户名
84mailMessage.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/sendpassword ", MailPassword);//设定密码
85
86SmtpMail.SmtpServer = MailSmtp;//设定SMTP服务器
87SmtpMail.Send(mailMessage);
88return true;
89}
90catch
91{
92//邮件发送失败处理
93return false;
94//throw ex;
95
96}
97
98}
99//============================================================
100/// <summary>
101/// 将一特定的值绑定到Panel中的CheckBox里(根据CheckBox里的Value值判断此项是否选中)
102/// </summary>
103/// <param name="strValue"/>
104/// <param name="objPanel"/>
105public void showPanelCheckBox(string strValue,Panel objPanel)
106{
107for (int i=0;i<=objPanel.Controls.Count-1;i++)
108{
109if (objPanel.Controls[i] is CheckBox)
110{
111//if (this.Panel1.Controls[i])
112CheckBox cb=(CheckBox)objPanel.Controls[i];
113if (strValue.IndexOf(cb.ID.Substring(1,cb.ID.Length-1))>0)
114{
115cb.Checked=true;
116}
117else
118{
119cb.Checked=false;
120}
121}
122}
123}
124
125//============================================================
126//上传图片时取得图片的名字
127/// <summary>
128/// 缺点多等待处理
129/// </summary>
130/// <param name="uploadPic"/>
131/// <param name="strFileSavePath"/>
132/// <returns></returns>
133public bool outPutPicName(System.Web.UI.HtmlControls.HtmlInputFile uploadPic,string strFileSavePath)
134{
135//string strPicName = uploadPic.Value.Length.ToString();
136strOutPicName = "";
137SqlDataReader sdr = db.SqlGetReader("Select * From Data_Counter Where isBy = '1'");
138sdr.Read();
139string picFileName = sdr["iSum"].ToString();
140sdr.Close();
141int piclen = uploadPic.Value.Length;
142int picwei = uploadPic.Value.LastIndexOf(".");
143string picname = uploadPic.Value.Substring(picwei+1,piclen-picwei-1);
144picname = picname.ToLower();
145if (picname!="jpg"&&picname!="jpeg"&&picname!="gif"&&picname!="bmp")
146{
147strOutPicName = db.RetrunScript("what you uploaded can only be GIF , JPEG or JPG format...",2);
148return false;
149}
150else
151{
152strOutPicName = picFileName+"."+picname;
153//更新计数器 执行sql语句
154return true;
155}
156
157}
158
159public string OutPicName
160{
161get
162{
163return strOutPicName;
164}
165}
166
167/// <summary>
168/// 选中有值的选项
169/// </summary>
170/// <param name="objrbl"/>
171/// <param name="strValue"/>
172public void ShowRadioList(RadioButtonList objrbl, string strValue)
173{
174for(int i = 0;i<=objrbl.Items.Count-1;i++)
175{
176if (strValue.IndexOf(objrbl.Items[i].Value)!=-1)
177{
178objrbl.Items[i].Selected = true;
179}
180else
181{
182objrbl.Items[i].Selected = false;
183}
184}
185}
186#endregion
187
188/// <summary>
189/// 图像缩小处理
190/// </summary>
191/// <param name="strBigImg"/>存储原图像路径及文件名
192/// <param name="strSmallImg"/>存储缩小后图像路径及文件名
193/// <param name="intW"/>存储图像缩小宽度
194/// <param name="intH"/>存储图像缩小高度
195/// <param name="objPage"/>当前页
196/// <returns>缩小后图像路么及文件名</returns>
197public string imgControl(Page objPage,string strBigImg,string strSmallImg,int intW,int intH)
198{
199if (File.Exists(strSmallImg))
200{
201//检验图像是否已经缩小
202return strSmallImg;
203}
204else
205{
206//图像没有缩小时处理
207Bitmap oldImg;//原图对象
208Bitmap newImg;//新图对象
209try
210{
211oldImg = new Bitmap(objPage.MapPath(strBigImg));
212newImg = new Bitmap(oldImg,intW,intH);
213newImg.Save(objPage.MapPath(strSmallImg));
214oldImg.Dispose();
215newImg.Dispose();
216//strSmallImg = "系统默认出错图片的路径与名称";
217}
218catch
219{
220}
221finally
222{
223
224oldImg = null;
225newImg = null;
226}
227strSmallImg = strSmallImg.Trim();
228return strSmallImg;
229}
230
231}
232
233}
234}</cbl.items.count;i++)></lb.items.count;>