网页设计特效实用代码
2007-10-18 17:16

在线制作icon图标
http://www.chami.com/html-kit/services/favicon/

进入主页以后自动播放声音 
<embed src="http://你的网站/music.rm" hidden=true autostart=true loop=true> 

进入主页后自动最大话,省的去在自己单击了 
<script> 
self.moveTo(0,0) 
self.resizeTo(screen.availWidth,screen.availHeight) 
</script> 

显示现在时间的脚本 
<script language=vbscript>document.write now</script> 

显示最后修改时间的脚本 
<script>document.write(document.lastModified)</script> 

设为首页,加为收藏,加入频道,启动outlook发信 
<a style="cursor:hand" 
onclick="this.style.behavior="url(#default#homepage)"; 
this.setHomePage("yourURL">设为首页</a> 

<a style="cursor:hand" 
onclick="window.external.AddFavorite(location.href,document.title);">加入收藏</a> 

<a href=javascript:window.external.addChannel("typhoon.cdf")>加入频道</a> 

<a href="youEmail">与我联系</a>

Flash中在按钮上如何加“设为首页”“加入收藏”?action怎么写啊?

[javascript] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. on (release) {  
  2. getURL("javascript:void(document.links[0].style.behavior='url(#default#homepage)');void document.links[0].setHomePage('84design.com/" target="_blank">http://www.84design.com/');", "_self");  
  3. }  




加入收藏:

[javascript] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. on(release) {  
  2. getURL("javascript:window.external.AddFavorite('84design.com/" target="_blank">http://www.84design.com/','E佳工作室')");  
  3. }  



状态栏动态显示现在时间 

[javascript] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <script>  
  2. function see(){  
  3. window.setTimeout("see()",1000);  
  4. today = new Date();  
  5. self.status = today.toString();  
  6. }  
  7. </script>  
  8. <body onload=see()>   




关闭窗口的脚本 

[javascript] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <a href=javascript:close()>[关闭窗口]</a>   




窗口定时关闭 
先将如下代码网页文件的<head></head>区:
 

[javascript] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <script language="JavaScript">  
  2.  function closeit() { setTimeout("self.close()",10000) //毫秒 }  
  3.  </script>  



然后再在<body></body>标内加入如:<body onload="closeit()"> 

网页自动关闭
 

[html] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <html>  
  2.  <head>  
  3.  <object id=closes type="application/x-oleobject"  
  4.  classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">  
  5.  <param name="Command" value="Close">  
  6.  </object>  
  7.  </head>  
  8.  <body onload="window.setTimeout('closes.Click()',10000)">  
  9.  这个窗口会在10秒过后自动关闭,而且不会出现提示.  
  10.  </body>  
  11.  </html>  




按下F12键,直接返回首页 

[javascript] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <script>function look(){  
  2. if(event.keyCode==123){document.location.href=http://www.wowo-design.com/}  
  3. }  
  4. if(document.onkeydown==null)  
  5. {document.onkeydown=look}  
  6. </script>  




后退,刷新,前进

[html] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <input type=button value=后退 onclick=history.go(-1)>  
  2. <input type=button value=刷新 onclick=history.go(-0)>  
  3. <input type=button value=前进 onclick=history.go(+1)>   




设定时间弹出窗口,4000=4秒,当然你可以自定义

[javascript] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <script>function l() {  
  2. window.open("yourURL","name","width=500,height=150,border=0")  
  3. }  
  4. setTimeout("l()",4000)  
  5. </script>  




随机替换图片                                                                                                                             <script>

[javascript] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1.  document.write('<img src="img/'+parseInt(Math.random()*(5))  
  2.  +'.gif"height="40" width="50">')  
  3. </script>  




图片文件名为0.gif 1.gif 2.gif 3.gif 4.gif 

防止表格被撑破的代码
<table width=100 border=1>
<tr><td style="word-break:break-all">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</td></tr>

Dreamweaver里画细线标格
<table style="border-collapse: collapse">

有没有可能用层来遮住FLASH?
1.在flash的parameters里加入 <param name="wmode" value="transparent">
2.<body onblur=self.focus()>

如何让Flash按钮同时打开两个网页
最简单的办法,最一个按扭,把

[javascript] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. on(press){  
  2. getURL("http://www.*****.com";,_blank);  
  3. getURL("http://www.*****.com";,_blank);  
  4. }  



加在按扭上

怎样点不同的链接在同一个Iframe里显示?

[html] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <table width="510" border="0" cellspacing="0" cellpadding="0">  
  2. <tr>  
  3. <td width="218" align="center" bgcolor="#eeeeee"><href="http://www.******.com"; target="manager">blueidea</a>  
  4. </td>  
  5. <td width="292" align="center" bgcolor="#eeeeee"><href="http://www.******.com/bbs"; target="manager">bbs</a></td>  
  6. </tr>  
  7. <tr>  
  8. <td height="200" colspan="2"><iframe border=frameborder=framespacing=height=200 marginheight=marginwidth=name=manager scrolling="NO" noresize src="http://www.******.com"; width=500 vspale="0"></iframe></td>  
  9. </tr>  
  10. </table>  


节日倒计时

[html] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <Script Language="JavaScript">  
  2.    var timedate= new Date("October 1,2002");  
  3.    var times="国庆节";  
  4.    var now = new Date();  
  5.    var date = timedate.getTime() - now.getTime();  
  6.    var time = Math.floor(date / (1000 * 60 * 60 * 24));  
  7.    if (time >= 0)  
  8.    document.write("现在离"+times+"还有: "+time +"天")  
  9. </Script>  

随机变换背景图象(一个可以刷新心情的特效) 
在<head></head>之间加上如下代码: 

[javascript] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <Script Language="JavaScript">  
  2.    image = new Array(4); //定义image为图片数量的数组  
  3.    image [0] = 'tu0.gif' //背景图象的路径  
  4.    image [1] = 'tu1.gif'  
  5.    image [2] = 'tu2.gif'  
  6.    image [3] = 'tu3.gif'  
  7.    image [4] = 'tu4.gif'  
  8.    number = Math.floor(Math.random() * image.length);  
  9.    document.write("<BODY BACKGROUND="+image[number]+">");  
  10. </Script>  



select挡住div的解决方法 
在div里加入下面的代码,根据需要调整就可以了。

[html] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <iframe src="javascript:false" scrolling="no" frameborder="0" style="z-index:-1;position:absolute; top:5px; left:2px;width:168;height:100px;">  
  2. </iframe>  


服务器上如何定义连接
MM_www_STRING ="driver={Microsoft access Driver (*.mdb)};dbq=" & server.mappath("../data/www.mdb")

链接到
response.redirect"login.asp"
location.href="xx.asp"

取得IP

[html] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")  
  2. If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR")  
  3.   
  4. sql="update feedbak set hit=hit+1 where id="&request("id")  
  5. conn.execute(sql)  


截取字符是否加...
function formatStr(str,len)
if(len(str)>len)
str = left(str,len) + "..."
end if
formatStr = str
end function

接收表单
If Ucase(Request.ServerVariables("REQUEST_METHOD")) = "POST" then
end if

图片宽度

[javascript] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <script language="javascript">  
  2. <!--  
  3. var flag=false;  
  4. function DrawImage(ckp){  
  5. var image=new Image();  
  6. image.src=ckp.src;  
  7. if(image.width>0 && image.height>0)  
  8. {flag=true;  
  9. if(image.width>120){  
  10. ckp.width=120;  
  11. }else{  
  12. ckp.width=image.width;  
  13. }  
  14. ckp.alt=image.width+"×"+image.height;  
  15. }  
  16. }  
  17. //-->  
  18. </script>  
  19. I'll be Back 22:18:06  
  20. <img src="<%=formPath%>/<%=rs("photoname")%>" border="0" >  




跳转
<meta http-equiv=refresh content='0; url=/distributor/distributor.aspx'>

溢出栏的设制
visible:超出的部分照样显示;
hidden:超出的部分隐藏;
scrool:不管有否超出,都显示滚动条;
auto:有超出时才出现滚动条;

onMouseOver:鼠标移到目标上;
onMouseUp:按下鼠标再放开左键时;
onMouseOut:鼠标移开时;
onMouseDown:按下鼠标时(不需要放开左键);
onClink:点击时;
onDblClick:双击时;
onLoad:载入网页时;
onUnload:离开页面时;
onResize:当浏览者改变浏览窗口的大小时;
onScroll:当浏览者拖动滚动条的时。

CSS样式
a:link:表示已经链接;
a:hover:表示鼠标移上链接时;
a:active:表示链接激活时;
a:visited:表示己点击过的链接。

跳出对话框链接
javascript:alert('lajflsjpjwg')

后退:javascript:history.back(1)

关闭窗口:javascript:window.close();

窗口还原
function restore(){
window.moveTo(8,8);
window.resizeTo(screen.width-24,screen.availHeight-24);
}

head区是指首页HTML代码的<head>和</head>之间的内容。
必须加入的标签

1.公司版权注释

<!--- The site is designed by Maketown,Inc 06/2000 --->

2.网页显示字符集

简体中文:<META HTTP-EQUIV="Content-Type" C>
繁体中文:<META HTTP-EQUIV="Content-Type" C>
英 语:<META HTTP-EQUIV="Content-Type" C>

3.网页制作者信息

<META name="author" c>

4.网站简介

<META NAME="DESCRIPTION" C>

5.搜索关键字

<META NAME="keywords" C>

6.网页的css规范

<LINK href="style/style.css" rel="stylesheet" type="text/css">
(参见目录及命名规范)

7.网页标题

<title>xxxxxxxxxxxxxxxxxx</title>

可以选择加入的标签
1.设定网页的到期时间。一旦网页过期,必须到服务器上重新调阅。
<META HTTP-EQUIV="expires" C>

2.禁止浏览器从本地机的缓存中调阅页面内容。
<META HTTP-EQUIV="Pragma" C>

3.用来防止别人在框架里调用你的页面。
<META HTTP-EQUIV="Window-target" C>

4.自动跳转。
<META HTTP-EQUIV="Refresh" C>
5指时间停留5秒。

5.网页搜索机器人向导.用来告诉搜索机器人哪些页面需要索引,哪些页面不需要索引。
<META NAME="robots" C>
CONTENT的参数有all,none,index,noindex,follow,nofollow。默认是all。

6.收藏夹图标
<link rel = "Shortcut Icon" href="favicon.ico">

所有的javascript的调用尽量采取外部调用.
<SCRIPT LANGUAGE="javascript" SRC="script/xxxxx.js"></SCRIPT>

附<body>标签:

<body>标签不属于head区,这里强调一下,为了保证浏览器的兼容性,必须设置页面背景<body bgcolor="#FFFFFF"> 

flash透明

在flash的源代码中加上:<param name="wmode" value="transparent"> 表格透明
style="FILTER: alpha(opacity=72)"

网址前添加icon的方法 
1、上http://www.******.com上用他的icon editor online制作一个图标。他会将做好的图标通过email即时发送给你。

2、把这个命名为favicon.ico的图标放置在index.html同一个文件夹中。就可以了。

作一个图标文件,大小为16*16像素。文件扩展名为ico,然后上传到相应目录中。在HTML源文件“<head></head>”之间添加如下代码:

<Link Rel="SHORTCUT ICON" href="http://图片的地址(注意与刚才的目录对应)">

其中的“SHORTCUT ICON”即为该图标的名称。当然如果用户使用IE5或以上版本浏览时,就更简单了,只需将图片上传到网站根目录下,自动识别

可以在收藏夹中显示出你的图标
<link rel="Bookmark" href="favicon.ico"> 

状态栏连接说明
<A HREF="链接到某处" >某某链接</a>
链接说明
<a href=“”Title=链接说明>

禁止鼠标右键
在<body>标签中加入 <body >

禁止复制,鼠标拖动选取
<body ondragstart=window.event.returnValue=false oncontextmenu=window.event.returnValue=false onselectstart=event.returnValue=false>

水平线
<hr width="长度" size="高度" color="颜色代码" noshade> noshade为有无阴影

表单电子邮件提交
< form name="content" method="post" action="mailto:电子邮箱" >< /form>
文本域名为Subject 为邮件的标题
邮件链接定制
Mailto:地址 ? Subject=邮件的标题 &bc=抄送 &bcc=密件抄送

背景音乐
<bgsound src=地址 loop="-1">

消除ie6自动出现的图像工具栏,设置 GALLERYIMG属性为false或no . 
<IMG SRC="mypicture.jpg" HEIGHT="100px" WIDTH="100px" GALLERYIMG="no"> 

防止点击空链接时,页面往往重置到页首端 
代码“javascript:void(null)”代替原来的“#”标记 

如何避免别人把你的网页放在框架中
<script language=“javascript”><!--if (self!=top){top.location=self.location;} -->< /script> 

页面定时刷新
<meta http-equiv="Refresh" c > 

页面定时转向新的地址
<meta http-equiv="refresh" c> 

显示日期 

[javascript] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <script language="javascript"><!--  
  2. today=new Date();  
  3. var week; var date;  
  4. if(today.getDay()==0) week="星期日"  
  5. if(today.getDay()==1) week="星期一"  
  6. if(today.getDay()==2) week="星期二"  
  7. if(today.getDay()==3) week="星期三"  
  8. if(today.getDay()==4) week="星期四"  
  9. if(today.getDay()==5) week="星期五"  
  10. if(today.getDay()==6) week="星期六"  
  11. date=(today.getYear())+"年"+(today.getMonth()+1)+"月"+today.getDate()+"日"+" "  
  12. document.write("<span style='font-size: 9pt;'>"+date+week+"</span>");  
  13. // -->  
  14. </script>   


文字滚动
插入边框为0的1行1列的表格,在表格中输入文字,选中文字,
按ctrl+t输入marquee direction="up", 回车即可让文字在表格区域内向上滚动。
(right、down可用于让文字或图象向右及向下滚动,修改html原代码还可以得到需要的滚动速度。 

表单验正

[javascript] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <SCRIPT language=javascript>  
  2. function checkform(theform){  
  3. if(theform.name.value==""){  
  4. alert("姓名不能为空!");  
  5. theform.name.focus();  
  6. return false;  
  7. }  
  8. if(theform.tel.value==""){  
  9. alert("电话不能为空!");  
  10. theform.tel.focus();  
  11. return false;  
  12. }  
  13. }  
  14. </SCRIPT>  


定义鼠标
body{cursor: url(cur.ani或cur);}

以图片方式插视频
<IMG height=240 loop=infinite dynsrc=http://amedia.efu.com.cn/EFUADD0001.rmvb width=320>

层在flash上面
< param name="wmode" value="opaque" >

延迟跳转
<meta http-equiv=refresh content='3; url=javascript:window.close();'>

空链接
javascript:;

标题表格
<fieldset>
<legend>表格的说明</legend>
</fieldset>

细线表格
style="BORDER-COLLAPSE: collapse;"

滚动条颜色代码

[javascript] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. BODY{  
  2. SCROLLBAR-FACE-COLOR: #FFFFFF;  
  3. SCROLLBAR-HIGHLIGHT-COLOR: #FFFFFF;  
  4. SCROLLBAR-SHADOW-COLOR: #FFFFFF;  
  5. SCROLLBAR-3DLIGHT-COLOR: #FFCBC8;  
  6. SCROLLBAR-ARROW-COLOR: #FFFFFF;  
  7. SCROLLBAR-TRACK-COLOR: #FFFFFF;  
  8. SCROLLBAR-DARKSHADOW-COLOR: #FFCBC8;  
  9. SCROLLBAR-BASE-COLOR: #FFFFFF  
  10. }  



连续的英文或者一堆感叹号!!!不会自动换行的问题
只要在CSS中定义了如下句子,可保网页不会再被撑开了

table{table-layout: fixed;}
td{word-break: break-all; word-wrap:break-word;}

注释一下:

1.第一条table{table-layout: fixed;},此样式可以让表格中有!!!(感叹号)之类的字符时自动换行。

2.td{word-break: break-all},一般用这句这OK了,但在有些特殊情况下还是会撑开,因此需要再加上后面一句{word-wrap:break-word;}就可以解决。此样式可以让表格中的一些连续的英文单词自动换行。

控制横向和纵向滚动条的显隐?
<body style="overflow-y:hidden"> 去掉x轴
<body style="overflow-x:hidden"> 去掉y轴
<body scroll="no">不显

表格变色
<TD onmouseover="this.style.backgroundColor='#FFFFFF'" 
onmouseout="this.style.backgroundColor=''"
style="CURSOR: hand"> 

普通iframe页面
<iframe name="name" src="main.htm" width="450" height="287" scrolling="Auto" frameborder="0"></iframe>

iframe自适应高度
<iframe name="pindex" src="index.asp" frameborder=false scrolling="auto" width="100%" height="100%" frameborder=no onload="document.all['pindex'].style.height=pindex.document.body.scrollHeight" ></iframe>

iframe(嵌入式帧)自适应高度
填写的嵌入地址一定要和本页面在同一个站点上,否则会提示“拒绝访问!”。对跨域引用有权限问题,请查阅其他资料。
<iframe name="guestbook" src="gbook/index.asp" scrolling=no width="100%" height="100%" frameborder=no onload="document.all['guestbook'].style.height=guestbook.document.body.scrollHeight"></iframe> 

字号缩放
越来越多的人长时间的泡网,眼镜的普及率也越来越高,让文字大点,让更多的用户看的更清楚。

[javascript] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <script type="text/javascript">  
  2. function doZoom(size)  
  3. {document.getElementById('zoom').style.fontSize=size+'px';}  
  4. </script>  
  5. <span id="zoom">需要指定大小的文字</span>  
  6. <a href="javascript:doZoom(16)">大</a> <a href="javascript:doZoom(14)">中</a> <a href="javascript:doZoom(12)">小</a>   


select挡住div的解决方法 
在div里加入下面的代码,根据需要调整就可以了。
<iframe src="javascript:false" scrolling="no" frameborder="0" style="z-index:-1;position:absolute; top:5px; left:2px;width:168;height:100px;">
</iframe>

跳转菜单新窗口
<select name="select" onchange="window.open(this.options[this.selectedIndex].value)">
<option value="http://www.microsoft.com/ie"> Internet Explorer</option>
<option value="http://www.microsoft.com"> Microsoft Home</option>
<option value="http://msdn.microsoft.com"> Developer Network</option>
</select>

flash透明选项
<param name="wmode" value="transparent"> 

记录并显示网页的最后修改时间 
<script language=JavaScript> 
document.write("最后更新时间: " + document.lastModified + "") 
</script>

让IFRAME框架内的文档的背景透明
<iframe src="about:<body style='background:transparent'>" allowtransparency></iframe> 

打开窗口即最大化
<script language="JavaScript"> 
<!-- Begin 
self.moveTo(0,0) 
self.resizeTo(screen.availWidth,screen.availHeight) 
// End --> 
</script>

文字或图片弹出指定大小的窗口
在body中加入
<script language="JavaScript" type="text/JavaScript">
function MM_openBrWindow(theURL,winName,features) {window.open(theURL,winName,features);}
</script>
弹出代码
<a href="#" target="_self" onClick="MM_openBrWindow('windows01.htm','','width=550,height=380')" width="550" height="380" border="0">图片或文字</a>

flash按钮加链接 
on (press) {
getURL("http://www.******.com","_blank");


细线分隔线
<hr noshade size=0 color=#C0C0C0> 

消除ie6自动出现的图像工具栏,设置 GALLERYIMG属性为false或no . 
<IMG SRC="mypicture.jpg" HEIGHT="100px" WIDTH="100px" GALLERYIMG="no"> 

禁止页面正文内容被选取 
<body oncontextmenu="return false" ondragstart="return false" onselectstart ="return false" onselect="document.selection.empty()" oncopy="document.selection.empty()" onbeforecopy="return 
false"onmouseup="document.selection.empty()"> 

不能点右键,不用CTRL+A,不能复制作!
<body oncontextmenu="window.event.returnValue=false" 
onkeypress="window.event.returnValue=false" 
onkeydown="window.event.returnValue=false" 
onkeyup="window.event.returnValue=false" 
ondragstart="window.event.returnValue=false" 
onselectstart="event.returnValue=false"> 
</body>

随机变换背景图象(一个可以刷新心情的特效 
<Script Language="JavaScript"> 
   image = new Array(4); //定义image为图片数量的数组 
   image [0] = 'tu0.gif' //背景图象的路径 
   image [1] = 'tu1.gif' 
   image [2] = 'tu2.gif' 
   image [3] = 'tu3.gif' 
   image [4] = 'tu4.gif' 
   number = Math.floor(Math.random() * image.length); 
   document.write("<BODY BACKGROUND="+image[number]+">"); 
</Script> 

flash载入影片 
on (release)
{
loadMovie("1-01.swf", "_root.loaderclip");


图片表单按钮
<form id="form1" name="form1" method="post" action="">
<img src="login.gif" width="62" height="22" onclick="document.form1.submit()" />
</form> 

左右阴影背景的CSS定义方法
body {
text-align:center;
background-repeat: repeat-y;
background-position: center;
background-image: url(../images/bg.jpg);


如何关闭层
<div id="Layer1"></div>
<a href="#" onClick="Layer1.style.display='none'">关闭层</a>

运行代码框
<script>
function Preview()
{var TestWin=open('');
TestWin.document.write(code.value);}
</script>
<textarea id=code cols=60 rows=15></textarea>
<br>
<button onclick=Preview() >运行</button>

给表格做链接 
<table width="100%" onclick="window.open('http://www.******.com/&#39;, '_blank')" style="CURSOR:hand">
<tr>
<td height="100" bgcolor="f4f4f4">&nbsp;</td>
</tr>
</table>

CSS文字阴影 
.shadowfont{FILTER: dropshadow(color=#666666, offx=1, offy=1, positive=1); FONT-FAMILY: "宋体"; FONT-SIZE: 9pt;COLOR: #ffffff;} 

表格透明 
style="FILTER: alpha(opacity=72)" 

Alt和Title的区别 
alt 用来给图片来提示的。Title用来给链接文字或普通文字提示的。

<a href="#" Title="给链接文字提示">文字</a>
<p Title="给链接文字提示">文字</p>

<img src="图片链接" alt="给图片提示">

在同一页面设置不同文字链接效果的样式
<style type="text/css">
.green {COLOR: #309633}
.green A:link {COLOR: #309633; TEXT-DECORATION: none}
.green A:visited {COLOR: #309633; TEXT-DECORATION: none}
.green A:hover {COLOR: #309633; TEXT-DECORATION: underline}
.green A:active {COLOR: #309633; TEXT-DECORATION: none}
</style>
<a href="#" class="green">文字</a>

在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错) 
首 选请确认SQL SERVER EXPRSS已安装到本地计算机上,并且SQL SERVER (SQLEXPRESS)服务已经成功启动。如果问题仍然存在,可以尝试应打开“SQL Server 外围应用配置器”,选择“服务和连接的外围应用配置器”,然后将“远程连接”配置为“同时使用 TCP/IP 和 named pipes”

由于启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例。该连接将关闭。 
将连接字符串中的“User Instance=True”修改为“User Instance=False”即可。

无法将文件 'X:WebsiteApp_DataDatabase.mdf' 作为数据库 ''. 附加。当前命令发生了严重错误。应放弃任何可能产生的结果。 
需要为X分区以及X分区的子文件夹和文件分配Users组的“读取”权限。

尝试为文件 X:WebsiteApp_DataDatabase.mdf 附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中。 
首 选要确认已经为X分区以及X分区的子文件夹和文件分配了Users组的“读取”权限。如果问题仍然存在,请使用SQL Server Management Studio连接到SQLEXPRESS数据库实例,检查是否有名称是“Database”的数据库存在。如果有,分离同名数据库即可。如果还有问题检查web.config中Data Source=.\SQLEXPRESS,如果同时装了sql2000名称应为MSSQL$SQLEXPRESS。

无法打开用户默认数据库。登录失败。
用户 'NT AUTHORITYNETWORK SERVICE' 登录失败。
 
数据库文件Database.mdf 的读写权限被设置成只有NETWORK SERVICE才具有。解决方法是先停止掉SQL SERVER (SQLEXPRESS)服务,然后从父项集成权限,再次启动SQL SERVER (SQLEXPRESS)服务即可。
User:用户表,存放用户信息
Role:角色表,存放角色信息
UserInRole:用户角色映射表,存放用户和角色的对就关系,多对多,一个用户可以对应多个
角色,而不同的角色有一同的权限。
Permissions:权限表,不同的角色对应不同的权限。权限信息使用一个字段flag来表示,
好处是可以使用位运算来计算权限,缺点是用位标识的权限受理论值限制,如int理论上可以
标识31种不同的权限, 当然可以整加一个字段来弥补,ApplicationID标识不同的模块
Application:模块信息。

  [Flags]
     public enum Flag:long
     { 
      View=1,
      Edit=2,
      Delete=4
     }

特性[Flag]告诉编译器,当编译器看到Flag枚举时,它会充许你用|(or)操作符组合枚举值,
就像二的整数幂一样,
例如 Flag  Administer=Flag.View|Flag.Edit|Flag.Delete;表示三种权限的组合。

基础知识:

位运算

枚举Flag

当编译器看到Flag枚举时,它会充许你用|(or)操作符组合枚举值,
就像二的整数幂一样,
例如 Flag Administer=Flag.View|Flag.Edit|Flag.Delete;

常用操作,检查是否存在
Flag administer=Flag.View|Flag.Edit|Flag.Delete;
  public bool Check(Flag administer,Flag mask)
        {
            bool bReturn = false;
            if ((administer & mask) == mask)
                bReturn = true;

            return bReturn;
        }
调用  Check(administer,Flag.Edit)将返回true.

 public Flag SetBit(Flag administer,Flag mask)
        {
          return  administer |= mask;
           
        }

 administer |= mask;操作相当于 administer = administer |mask;

 从枚举中减去一种状态
  administer &=mask;

  如 :
Flag administer=Flag.View|Flag.Edit|Flag.Delete;
如需要禁止删除权限.
 administer &=Flag.Delete;

 另外,标记为flag的枚举类型,可以不设置值
   public enum Flag:long
     { 
      View,
      Edit,
      Delete
     }
   如需要设置,按以下规律, View=1,Edit=2,Delete=4,Reply=8按2次方累加,为什么会这样?因为他使用二进制操作,
   当你使用 View=1,Edit=2,Delete=3,Reply=4这样的值, Flag.Delete 包含的值是Flag.Delete还是View=1|Edit=2就无从检测了.

每个用户,可以属于不同的角色不同的角色分配不同的权限,计算所有解权的所有可能的权限组合,只要有充许的权限,那么该用户既获取该权限。

在CS系统中,Permissions表合用了二个字段来标识权限.
 AllowMask,DenyMask 规责是Deny优先,也就是说当权限标记为Deny那么不论是否Allow一律禁止该用户进行此项操作。

另外,像论坛类的权限设计,仅仅一个ApplicationID字段是不够用的,因为每个版块都需要设置不同的权限,来控制权限的粒度,可在增加一张Permission表,ApplicationID修改为版块ID
这样,就可以针对不同的版块设置不同的权限

好了,接下的问题是怎么和.net自带的权限系统挂钩了。。

在asp.net系统中 ,HttpContext.Current.User实现了一个接口IPrincipal,IPrincipal包含了另一个接口Identity

  我们在设计User类的时候继承此接口
  public class User:IPrincipal
  {
    string username;
    public string Username
    {
     get{return username;}
     set{username=value;} 
    }
  }

  实现IPrincipal接口方法
   public IIdentity Identity
        {
            get {
                if (!string.IsNullOrEmpty(username))
                    _Identity = new GenericIdentity(username,"Forums");
                return (IIdentity)_Identity;
            }
        }

public bool IsInRole(string role)
{
.....
}

怎样和asp.net挂钩呢,这里可以在登陆时做检查

 if(HttpContext.Current!=null){
                User u= Users.GetUser(name);
                HttpContext.Current.User =u;

在使用时 
 User u = HttpContext.Current.User as User;
当然检查用户角色可以直接用

 



 if(HttpContext.Current.User.Identity.IsAuthenticated&&HttpContext.Current.User.IsInRole(角色名))


另外可以直接把到当用户权限策略挂接到当前线程 ,使用以下方法
    AppDomain.CurrentDomain.SetPrincipalPolicy(User);

好了,接下来,怎么check权限?

我倾向于使用Attribute

[csharp] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Delegate, Inherited = true, AllowMultiple = true)]  
  2.     public class CheckPermissionAttribute : Attribute  
  3.     {  
  4.   
  5.         int appID;  
  6.         public int ApplicationID  
  7.         {  
  8.             get { return appID; }  
  9.             set { appID = value; }  
  10.         }  
  11.         Permission _allMask;  
  12.         public Permission AllMask  
  13.         {  
  14.             get { return _allMask; }  
  15.             set { _allMask = value; }  
  16.         }  
  17.   
  18.         public CheckPermissionAttribute(ApplicationID app, Permission allMask)  
  19.         {  
  20.             appID = app;  
  21.             _allMask = allMask;  
  22.         }  
  23.         public CheckPermissionAttribute(Permission allMask)  
  24.         {  
  25.             _allMask = allMask;  
  26.         }  
  27.   
  28.     }  



AttributeUsage 第一个参数表示该属性可以应用于类,方法,属性,代理上
Inherited 检查继承的权限。
AllowMultiple 充许多次应用。

按下来,设计一个基类,继承自Page:

[csharp] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. public   class PageBase : Page  
  2. {  
  3. Flag _allMask;  
  4.   
  5. /// <summary>  
  6.     /// 检查类型权限  
  7.     /// </summary>  
  8.     public void CheckClass()  
  9.     {  
  10.         Type type = this.GetType();  
  11.         CheckPermissionAttribute att = (CheckPermissionAttribute)CheckPermissionAttribute.GetCustomAttribute(type, typeof(CheckPermissionAttribute));  
  12.         if (att != null)  
  13.         {  
  14.             Check(att.AllMask);  
  15.         }  
  16.     }  
  17.   
  18.   /// <summary>  
  19.     /// 检查函数调用权限  
  20.     /// </summary>  
  21.     /// <param name="methodName">方法名</param>  
  22.     public void CheckMethod(string methodName)  
  23.     {  
  24.         Type type = this.GetType();  
  25.         string name = "*";  
  26.         if (!string.IsNullOrEmpty(methodName))  
  27.             name = methodName;  
  28.         MemberInfo[] mis = type.FindMembers(MemberTypes.Method ,BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase,Type.FilterNameIgnoreCase,name);  
  29.         foreach (MethodInfo m in mis)  
  30.        {  
  31.            CheckPermissionAttribute att = (CheckPermissionAttribute)CheckPermissionAttribute.GetCustomAttribute(m, typeof(CheckPermissionAttribute));  
  32.            if (att != null)  
  33.            {   
  34.   
  35.                Check(att.AllMask);  
  36.                             
  37.            }  
  38.              
  39.        }  
  40.        return;  
  41.    
  42.      
  43.     }  
  44.     public void Check(Flag permissions)  
  45.     {  
  46.         if (!CheckPermission(permissions))  
  47.         {  
  48.             string url = string.Format("MsgPage.aspx?msg={0}", HttpUtility.UrlEncode("您没有权限访问该资源"));  
  49.             Response.Redirect(url);  
  50.         }  
  51.     }  
  52.     public void Check(ApplicationID appID, Flag permissions)  
  53.     {  
  54.         PermissionManager  pm= Spaces.PermissionManager.Instance(appType);  
  55.         if (!CheckPermission(pm,permissions))  
  56.         {  
  57.             string url = string.Format("MsgPage.aspx?msg={0}", HttpUtility.UrlEncode("您没有权限访问该资源"));  
  58.             Response.Redirect(url);  
  59.         }  
  60.   
  61.     }  
  62.   
  63.  protected override void OnInit(EventArgs e)  
  64.     {  
  65.         CheckClass();  
  66.         base.OnInit(e);  
  67.     }  
  68. }  



如何使用:

[csharp] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. [CheckPermission(2, Flag.View)]  
  2. public partial class MyPage : PageBase  
  3. {  
  4.   
  5. }  



若没有查看权限,会自运导向错误页面。

在类上应用挺方便。

方法上应用我于一个方法比较麻烦,我还没有找到在页面class里怎么获取当前调用的类名.

可以调用 CheckMethod(方法名称);如

[csharp] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <span style="font-family:Arial;">[CheckPermission(2, Flag.Delete)]  
  2. public partial class MyPage : PageBase  
  3. {  
  4.   public void test()  
  5.   {  
  6.    CheckMethod("test");  
  7.    .......  
  8.   }  
  9. }</span>